aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlban Peignier2018-04-22 15:35:42 +0200
committerAlban Peignier2018-04-22 16:50:54 +0200
commit7503f1357a9f2a8c428e1b77b88a2b1e9ea4f1be (patch)
tree52d977c29d99e684e6e591372b35f42bd4f6a09c
parent0e842bc3123dc40e2b93b3d6710cfb242b19fa93 (diff)
downloadchouette-core-7503f1357a9f2a8c428e1b77b88a2b1e9ea4f1be.tar.bz2
Include purchase windows in VehicleJourney checksum. Refs #5956
-rw-r--r--app/models/chouette/purchase_window.rb7
-rw-r--r--app/models/chouette/vehicle_journey.rb3
2 files changed, 10 insertions, 0 deletions
diff --git a/app/models/chouette/purchase_window.rb b/app/models/chouette/purchase_window.rb
index d22674637..276713d08 100644
--- a/app/models/chouette/purchase_window.rb
+++ b/app/models/chouette/purchase_window.rb
@@ -21,6 +21,13 @@ module Chouette
scope :overlap_dates, ->(date_range) { where('daterange(?, ?) && any (date_ranges)', date_range.first, date_range.last + 1.day) }
scope :matching_dates, ->(date_range) { where('ARRAY[daterange(?, ?)] = date_ranges', date_range.first, date_range.last + 1.day) }
+ # VehicleJourneys include PurchaseWindow checksums in their checksums
+ # OPTIMIZEME
+ def update_vehicle_journey_checksums
+ vehicle_journeys.find_each(&:update_checksum!)
+ end
+ after_commit :update_vehicle_journey_checksums
+
def self.ransackable_scopes(auth_object = nil)
[:contains_date]
end
diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb
index c269d478e..814eeb388 100644
--- a/app/models/chouette/vehicle_journey.rb
+++ b/app/models/chouette/vehicle_journey.rb
@@ -140,9 +140,12 @@ module Chouette
attrs << self.published_journey_identifier
attrs << self.try(:company).try(:get_objectid).try(:local_id)
attrs << self.footnotes.map(&:checksum).sort
+
vjas = self.vehicle_journey_at_stops
vjas += VehicleJourneyAtStop.where(vehicle_journey_id: self.id) unless self.new_record?
attrs << vjas.uniq.sort_by { |s| s.stop_point&.position }.map(&:checksum).sort
+
+ attrs << self.purchase_windows.map(&:checksum).sort if purchase_windows.present?
end
end