diff options
| author | Zog | 2018-01-29 13:17:14 +0100 | 
|---|---|---|
| committer | Zog | 2018-01-31 14:11:36 +0100 | 
| commit | 883a51aa8fb5e644c638d6dfb87962af5111ec8c (patch) | |
| tree | 05e7176b1e6ec9e263be350c496cc34f05bc353f /app/models/chouette/vehicle_journey.rb | |
| parent | 5e79f52c2d9db09f7c1bc94772d9b2a231cabf94 (diff) | |
| download | chouette-core-883a51aa8fb5e644c638d6dfb87962af5111ec8c.tar.bz2 | |
Refs #5754; Add a filter on calendars for ReferentialVJs#index5754-filter-journeys-on-calendar
Diffstat (limited to 'app/models/chouette/vehicle_journey.rb')
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 14 | 
1 files changed, 14 insertions, 0 deletions
| diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index c2fcbfb44..9484226c5 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -62,6 +62,20 @@ module Chouette      ransacker :stop_area_ids      ransacker :purchase_window_date_gt +    # returns VehicleJourneys with at least 1 day in their time_tables +    # included in the given range +    def self.with_matching_timetable date_range +      out = [] +      time_tables = Chouette::TimeTable.where(id: self.joins("INNER JOIN time_tables_vehicle_journeys ON vehicle_journeys.id = time_tables_vehicle_journeys.vehicle_journey_id").pluck('time_tables_vehicle_journeys.time_table_id')).overlapping(date_range) +      time_tables = time_tables.select do |time_table| +        range = date_range +        range = date_range & (time_table.start_date-1.day..time_table.end_date+1.day) || [] if time_table.start_date.present? && time_table.end_date.present? +        range.any?{|d| time_table.include_day?(d) } +      end +      out += time_tables.map{|t| t.vehicle_journey_ids}.flatten +      where(id: out) +    end +      # TODO: Remove this validator      # We've eliminated this validation because it prevented vehicle journeys      # from being saved with at-stops having a day offset greater than 0, | 
