]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/note.rb
Display how long until a note will disappear
[rails.git] / app / models / note.rb
index d4f9a801f41642877a0e1ca13cdb609fe11f9405..c3e0d776c61416fb32ed29d0af81c05279cff1e6 100644 (file)
 #  notes_updated_at_idx   (updated_at)
 #
 
-class Note < ActiveRecord::Base
+class Note < ApplicationRecord
   include GeoRecord
 
   has_many :comments, -> { left_joins(:author).where(:visible => true, :users => { :status => [nil, "active", "confirmed"] }).order(:created_at) }, :class_name => "NoteComment", :foreign_key => :note_id
+  has_many :all_comments, -> { left_joins(:author).order(:created_at) }, :class_name => "NoteComment", :foreign_key => :note_id, :inverse_of => :note
 
   validates :id, :uniqueness => true, :presence => { :on => :update },
-                 :numericality => { :on => :update, :integer_only => true }
+                 :numericality => { :on => :update, :only_integer => true }
   validates :latitude, :longitude, :numericality => { :only_integer => true }
   validates :closed_at, :presence => true, :if => proc { :status == "closed" }
   validates :status, :inclusion => %w[open closed hidden]
@@ -44,7 +45,7 @@ class Note < ActiveRecord::Base
   # Close a note
   def close
     self.status = "closed"
-    self.closed_at = Time.now.getutc
+    self.closed_at = Time.now.utc
     save
   end
 
@@ -65,6 +66,18 @@ class Note < ActiveRecord::Base
     !closed_at.nil?
   end
 
+  def freshly_closed?
+    return false unless closed?
+
+    Time.now.utc < freshly_closed_until
+  end
+
+  def freshly_closed_until
+    return nil unless closed?
+
+    closed_at + 7.days
+  end
+
   # Return the author object, derived from the first comment
   def author
     comments.first.author