diff options
author | Marin Jankovski <marin@gitlab.com> | 2014-06-26 12:57:36 +0400 |
---|---|---|
committer | Marin Jankovski <marin@gitlab.com> | 2014-06-30 11:44:30 +0400 |
commit | 0723bf1afaaf13ddcb58c211161389052d18e501 (patch) | |
tree | e9bcbbe629ade11a0c8eec61b4023a7531da05ad /app/services/milestones | |
parent | 8e8c074205f4c85238309f4e21e80748f09d0ec8 (diff) |
Move group milestone processing from service to model.
Diffstat (limited to 'app/services/milestones')
-rw-r--r-- | app/services/milestones/group_service.rb | 67 |
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 |