Class: Artisan::Stories::StoriesInteractor

Inherits:
Object
  • Object
show all
Defined in:
lib/artisan/stories/stories_interactor.rb

Instance Method Summary collapse

Constructor Details

#initialize(project_id, user = nil) ⇒ StoriesInteractor

Returns a new instance of StoriesInteractor.



13
14
15
16
# File 'lib/artisan/stories/stories_interactor.rb', line 13

def initialize(project_id, user = nil)
  @project = project_repository.find(project_id)
  @user = user
end

Instance Method Details

#backlog(filter_tag = nil) ⇒ Object



40
41
42
43
# File 'lib/artisan/stories/stories_interactor.rb', line 40

def backlog(filter_tag = nil)
  backlog_stories = filtered(filter_tag, @project.stories.backlog)
  return StoryCollection.new(backlog_stories)
end

#completedObject



45
46
47
# File 'lib/artisan/stories/stories_interactor.rb', line 45

def completed
  @project.stories.complete
end

#create(story_attributes, callbacks) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/artisan/stories/stories_interactor.rb', line 18

def create(story_attributes, callbacks)
  model = repository.create_for_project(@project, story_attributes)
  set_story_number_for model
  story = CrudStrategy.create(model, callbacks, repository)
  Activity::StoryAuditor.created(story.id, @project.id, @user.id, story_attributes)
  return story
end

#delete(number) ⇒ Object



34
35
36
37
38
# File 'lib/artisan/stories/stories_interactor.rb', line 34

def delete(number)
  story = find(number)
  repository.delete(story)
  Activity::StoryAuditor.deleted(story.id, @project.id, @user.id)
end

#find(number) ⇒ Object



54
55
56
# File 'lib/artisan/stories/stories_interactor.rb', line 54

def find(number)
  repository.find(number, @project)
end

#find_by_iteration(iteration_number) ⇒ Object



49
50
51
52
# File 'lib/artisan/stories/stories_interactor.rb', line 49

def find_by_iteration(iteration_number)
  iteration = @project.iterations.find_by_number iteration_number
  iteration.stories(:include => 'assigned_user')
end

#update(number, story_attributes, callbacks) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/artisan/stories/stories_interactor.rb', line 26

def update(number, story_attributes, callbacks)
  story = find(number)
  original_attributes = story.attributes
  story = CrudStrategy.update(story, story_attributes, @user, callbacks)

  Activity::StoryAuditor.updated(story.id, @project.id, @user.id, original_attributes, story_attributes)
end