aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/chouette/journey_frequency.rb
diff options
context:
space:
mode:
authorXinhui2016-02-22 14:17:18 +0100
committerXinhui2016-02-22 14:17:18 +0100
commitd49f47b4ac1db2cd88b96d830772bb7773924601 (patch)
tree191c7b9cda9edf939792e7780df4e7460d685a4a /app/models/chouette/journey_frequency.rb
parent633004afc5861a6e8158948ddfecd73bf4dd86a8 (diff)
downloadchouette-core-d49f47b4ac1db2cd88b96d830772bb7773924601.tar.bz2
Merge model from ninoxe gem
Diffstat (limited to 'app/models/chouette/journey_frequency.rb')
-rw-r--r--app/models/chouette/journey_frequency.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/app/models/chouette/journey_frequency.rb b/app/models/chouette/journey_frequency.rb
new file mode 100644
index 000000000..45b8aea8c
--- /dev/null
+++ b/app/models/chouette/journey_frequency.rb
@@ -0,0 +1,36 @@
+module Chouette
+
+ class JourneyFrequencyValidator < ActiveModel::Validator
+ def validate(record)
+ timeband = record.timeband
+ if timeband
+ first_departure_time = record.first_departure_time.utc.strftime( "%H%M%S%N" )
+ last_departure_time = record.last_departure_time.utc.strftime( "%H%M%S%N" )
+ timeband_start_time = timeband.start_time.utc.strftime( "%H%M%S%N" )
+ timeband_end_time = timeband.end_time.utc.strftime( "%H%M%S%N" )
+
+ unless first_departure_time.between? timeband_start_time, timeband_end_time
+ record.errors[:first_departure_time] << I18n.t('activerecord.errors.models.journey_frequency.start_must_be_after_timeband')
+ end
+ unless last_departure_time.between? timeband_start_time, timeband_end_time
+ record.errors[:last_departure_time] << I18n.t('activerecord.errors.models.journey_frequency.end_must_be_before_timeband')
+ end
+ end
+ if record.first_departure_time == record.last_departure_time
+ record.errors[:last_departure_time] << I18n.t('activerecord.errors.models.journey_frequency.end_must_be_different_from_first')
+ end
+ if record.scheduled_headway_interval.blank? || (record.scheduled_headway_interval.strftime( "%H%M%S%N" ) == Time.current.midnight.strftime( "%H%M%S%N" ))
+ record.errors[:scheduled_headway_interval] << I18n.t('activerecord.errors.models.journey_frequency.scheduled_headway_interval_greater_than_zero')
+ end
+ end
+ end
+
+ class JourneyFrequency < ActiveRecord
+ belongs_to :vehicle_journey_frequency, foreign_key: 'vehicle_journey_id'
+ belongs_to :timeband
+ validates :first_departure_time, presence: true
+ validates :last_departure_time, presence: true
+ validates :scheduled_headway_interval, presence: true
+ validates_with JourneyFrequencyValidator
+ end
+end