aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/chouette/purchase_window.rb
diff options
context:
space:
mode:
authorcedricnjanga2017-12-19 16:21:06 +0100
committerLuc Donnet2017-12-21 13:55:49 +0100
commit43f8c76522288a0328d520dfc753ed173fc84964 (patch)
treee067ae1f57fb34a5a82425b1e278507ccfdba4ae /app/models/chouette/purchase_window.rb
parent723bee2cafff84c0b948f85ed450408d6cbc866a (diff)
downloadchouette-core-43f8c76522288a0328d520dfc753ed173fc84964.tar.bz2
BusinessCalendar => PurchaseWindow
belongs_to referential
Diffstat (limited to 'app/models/chouette/purchase_window.rb')
-rw-r--r--app/models/chouette/purchase_window.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/app/models/chouette/purchase_window.rb b/app/models/chouette/purchase_window.rb
new file mode 100644
index 000000000..a9bbe2003
--- /dev/null
+++ b/app/models/chouette/purchase_window.rb
@@ -0,0 +1,43 @@
+require 'range_ext'
+require_relative '../calendar/period'
+
+module Chouette
+ class PurchaseWindow < Chouette::TridentActiveRecord
+ # include ChecksumSupport
+ include ObjectidSupport
+ include PeriodSupport
+ extend Enumerize
+ enumerize :color, in: %w(#9B9B9B #FFA070 #C67300 #7F551B #41CCE3 #09B09C #3655D7 #6321A0 #E796C6 #DD2DAA)
+
+ has_paper_trail
+ belongs_to :referential
+
+ validates_presence_of :name, :referential
+
+ scope :overlapping, -> (period_range) do
+ where("(periods.begin <= :end AND periods.end >= :begin) OR (dates BETWEEN :begin AND :end)", {begin: period_range.begin, end: period_range.end})
+ end
+
+ def local_id
+ "IBOO-#{self.referential.id}-#{self.id}"
+ end
+
+ def bounding_dates
+ periods_min_date..periods_max_date if periods_min_date && periods_max_date
+ end
+
+ def periods_max_date
+ return nil if self.periods.empty?
+ self.periods.max.end
+ end
+
+ def periods_min_date
+ return nil if self.periods.empty?
+ self.periods.min.begin
+ end
+
+ # def checksum_attributes
+ # end
+
+ end
+end \ No newline at end of file