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/models/group_milestone.rb
parent8e8c074205f4c85238309f4e21e80748f09d0ec8 (diff)
Move group milestone processing from service to model.
Diffstat (limited to 'app/models/group_milestone.rb')
-rw-r--r--app/models/group_milestone.rb41
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