summaryrefslogtreecommitdiff
path: root/app/models/milestone.rb
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-04-09 00:28:58 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2012-04-09 00:28:58 +0300
commit23d950855d6d2524d00b1f0618c008e2529f06a4 (patch)
treeadbf9d77a4ec9e437d285266de6892e0f17b960b /app/models/milestone.rb
parent667edcdd7534206761fc9524e6eaa17f1c27b815 (diff)
downloadgitlab-ce-23d950855d6d2524d00b1f0618c008e2529f06a4.tar.gz
Milestone basic scaffold
Diffstat (limited to 'app/models/milestone.rb')
-rw-r--r--app/models/milestone.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/app/models/milestone.rb b/app/models/milestone.rb
new file mode 100644
index 00000000000..20bc2486e2f
--- /dev/null
+++ b/app/models/milestone.rb
@@ -0,0 +1,29 @@
+class Milestone < ActiveRecord::Base
+ belongs_to :project
+ has_many :issues
+
+ validates_presence_of :project_id
+ validates_presence_of :title
+
+ def self.active
+ where("due_date > ? ", Date.today)
+ end
+
+ def percent_complete
+ @percent_complete ||= begin
+ total_i = self.issues.count
+ closed_i = self.issues.closed.count
+ if total_i > 0
+ (closed_i * 100) / total_i
+ else
+ 100
+ end
+ rescue => ex
+ 0
+ end
+ end
+
+ def expires_at
+ "expires at #{due_date.stamp("Aug 21, 2011")}" if due_date
+ end
+end