diff options
author | Marin Jankovski <marin@gitlab.com> | 2014-06-26 10:57:36 +0200 |
---|---|---|
committer | Marin Jankovski <marin@gitlab.com> | 2014-06-30 09:44:30 +0200 |
commit | 0723bf1afaaf13ddcb58c211161389052d18e501 (patch) | |
tree | e9bcbbe629ade11a0c8eec61b4023a7531da05ad /app/models/group_milestone.rb | |
parent | 8e8c074205f4c85238309f4e21e80748f09d0ec8 (diff) | |
download | gitlab-ce-0723bf1afaaf13ddcb58c211161389052d18e501.tar.gz |
Move group milestone processing from service to model.
Diffstat (limited to 'app/models/group_milestone.rb')
-rw-r--r-- | app/models/group_milestone.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/app/models/group_milestone.rb b/app/models/group_milestone.rb new file mode 100644 index 00000000000..c2fb3a5edee --- /dev/null +++ b/app/models/group_milestone.rb @@ -0,0 +1,41 @@ +class GroupMilestone + + def initialize(title, milestones) + @title = title + @milestones = milestones + end + + def title + @title + end + + def milestones + @milestones + end + + def project_names + milestones.map{ |milestone| milestone.project.name } + end + + def issue_count + milestones.map{ |milestone| milestone.issues.count }.sum + end + + def merge_requests_count + milestones.map{ |milestone| milestone.merge_requests.count }.sum + end + + def closed_items_count + milestones.map{ |milestone| milestone.closed_items_count }.sum + end + + def total_items_count + milestones.map{ |milestone| milestone.total_items_count }.sum + end + + def percent_complete + ((closed_items_count * 100) / total_items_count).abs + rescue ZeroDivisionError + 100 + end +end |