aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/chouette/vehicle_journey.rb
diff options
context:
space:
mode:
authorZog2018-01-29 13:17:14 +0100
committerZog2018-01-31 14:11:36 +0100
commit883a51aa8fb5e644c638d6dfb87962af5111ec8c (patch)
tree05e7176b1e6ec9e263be350c496cc34f05bc353f /app/models/chouette/vehicle_journey.rb
parent5e79f52c2d9db09f7c1bc94772d9b2a231cabf94 (diff)
downloadchouette-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.rb14
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,