Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarin Jankovski <marin@gitlab.com>2014-06-26 12:57:36 +0400
committerMarin Jankovski <marin@gitlab.com>2014-06-30 11:44:30 +0400
commit0723bf1afaaf13ddcb58c211161389052d18e501 (patch)
treee9bcbbe629ade11a0c8eec61b4023a7531da05ad /app/services/milestones
parent8e8c074205f4c85238309f4e21e80748f09d0ec8 (diff)
Move group milestone processing from service to model.
Diffstat (limited to 'app/services/milestones')
-rw-r--r--app/services/milestones/group_service.rb67
1 files changed, 3 insertions, 64 deletions
diff --git a/app/services/milestones/group_service.rb b/app/services/milestones/group_service.rb
index 74bf126652e..3a7e092a77a 100644
--- a/app/services/milestones/group_service.rb
+++ b/app/services/milestones/group_service.rb
@@ -1,72 +1,11 @@
module Milestones
class GroupService < Milestones::BaseService
- def initialize(group, user, project_milestones)
- @group = group
- @user = user
+ def initialize(project_milestones)
@project_milestones = project_milestones.group_by(&:title)
end
- def titles
- @project_milestones.map{ |title, milestone| title }
- end
-
- def project_names
- names = {}
- @project_milestones.map do |title, milestone|
- projects = milestone.map{|m| m.project.name }
- names.store(title, projects)
- end
- names
- end
-
- def issue_count
- @project_milestones.merge(@project_milestones){ |title, milestone| milestone.map{|m| m.issues.count }.sum }
- end
-
- def mr_count
- @project_milestones.merge(@project_milestones){ |title, milestone| milestone.map{|m| m.merge_requests.count }.sum }
- end
-
- def open_issues_count
- @project_milestones.merge(@project_milestones){ |title, milestone| milestone.map{|m| m.issues.opened.count }.sum }
- end
-
- def closed_issues_count
- @project_milestones.merge(@project_milestones){ |title, milestone| milestone.map{|m| m.issues.closed.count }.sum }
- end
-
- def open_mr_count
- @project_milestones.merge(@project_milestones){ |title, milestone| milestone.map{|m| m.merge_requests.opened.count }.sum }
- end
-
- def close_mr_count
- @project_milestones.merge(@project_milestones){ |title, milestone| milestone.map{|m| m.merge_requests.closed.count }.sum }
- end
-
- def open_items_count
- @project_milestones.merge(@project_milestones){ |title, milestone| milestone.map{|m| m.open_items_count }.sum }
- end
-
- def closed_items_count
- @project_milestones.merge(@project_milestones){ |title, milestone| milestone.map{|m| m.closed_items_count }.sum }
- end
-
- def total_items_count
- issue_count.merge(mr_count){ |title,issue,mr| issue + mr }
- end
-
- def percent_complete
- percentage_per_milestone = {}
- closed_items_count.map do |title, closed_items|
- total_items = total_items_count[title]
- percentage = begin
- ((closed_items * 100) / total_items).abs
- rescue ZeroDivisionError
- 100
- end
- percentage_per_milestone.store(title, percentage)
- end
- percentage_per_milestone
+ def execute
+ @project_milestones.map{ |title, milestone| GroupMilestone.new(title, milestone) }
end
end