aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/chouette/purchase_window.rb
blob: a9bbe2003b709e4a38b29035455049df7edf8d3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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