aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorZog2018-01-29 11:54:47 +0100
committercedricnjanga2018-02-06 11:04:59 -0800
commit5e1b7a06a9958580fc18a0a4e33ff66ea6adcdf9 (patch)
treebc05cba6cd5b2b594b5991f7b1d5b58ebdbddff1 /app/models
parentbde34143629e19273493fba8ba9e50bcd5f0c547 (diff)
downloadchouette-core-5e1b7a06a9958580fc18a0a4e33ff66ea6adcdf9.tar.bz2
Refs #5754; Add a filter on purchase_windows on ReferentialVJs#index
Diffstat (limited to 'app/models')
-rw-r--r--app/models/chouette/purchase_window.rb1
-rw-r--r--app/models/chouette/vehicle_journey.rb7
2 files changed, 8 insertions, 0 deletions
diff --git a/app/models/chouette/purchase_window.rb b/app/models/chouette/purchase_window.rb
index 22bcc1de1..334493015 100644
--- a/app/models/chouette/purchase_window.rb
+++ b/app/models/chouette/purchase_window.rb
@@ -18,6 +18,7 @@ module Chouette
validates_presence_of :name, :referential
scope :contains_date, ->(date) { where('date ? <@ any (date_ranges)', date) }
+ scope :overlap_dates, ->(date_range) { where('daterange(?, ?) && any (date_ranges)', date_range.first, date_range.last + 1.day) }
def self.ransackable_scopes(auth_object = nil)
[:contains_date]
diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb
index d94b69271..a252d4519 100644
--- a/app/models/chouette/vehicle_journey.rb
+++ b/app/models/chouette/vehicle_journey.rb
@@ -52,8 +52,15 @@ module Chouette
end
}
+ scope :in_purchase_window, ->(range){
+ purchase_windows = Chouette::PurchaseWindow.overlap_dates(range)
+ sql = purchase_windows.joins(:vehicle_journeys).select('vehicle_journeys.id').uniq.to_sql
+ where("id IN (#{sql})")
+ }
+
# We need this for the ransack object in the filters
ransacker :stop_area_ids
+ ransacker :purchase_window_date_gt
# TODO: Remove this validator
# We've eliminated this validation because it prevented vehicle journeys