af83/chouette-core

View on GitHub
app/models/chouette/time_table_date.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Chouette
  class TimeTableDate < Chouette::ActiveRecord
    include ChecksumSupport
    acts_as_copy_target

    belongs_to :time_table, inverse_of: :dates

    validates :date, presence: true

    with_options(if: -> { validation_context != :inserter }) do |except_in_inserter_context|
      except_in_inserter_context.validates :date, uniqueness: { scope: :time_table_id }
    end

    scope :in_dates, -> { where(in_out: true) }
    scope :in_date_range, -> (date_range) { where("date between ? and ?", date_range.min, date_range.max) }

    scope :included, -> { where in_out: true }
    scope :excluded, -> { where in_out: false }

    def self.model_name
      ActiveModel::Name.new Chouette::TimeTableDate, Chouette, "TimeTableDate"
    end

    def in?
      in_out == true
    end

    def out?
      in_out == false || in_out.nil?
    end

    alias included? in?
    alias excluded? out?

    def checksum_attributes(db_lookup = true)
      attrs = ['date', 'in_out']
      self.slice(*attrs).values
    end
  end
end