diff options
| -rw-r--r-- | app/controllers/vehicle_journeys_controller.rb | 10 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 19 | ||||
| -rw-r--r-- | spec/models/chouette/vehicle_journey_spec.rb | 8 | 
3 files changed, 28 insertions, 9 deletions
diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb index cca75af5b..c78613e99 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -78,6 +78,16 @@ class VehicleJourneysController < ChouetteController    protected    def collection      scope = route.vehicle_journeys.with_stops + +    if params[:q] && +        params[:q][:vehicle_journey_at_stops_departure_time_gteq] && +        params[:q][:vehicle_journey_at_stops_departure_time_lteq] +      scope = scope.where_departure_time_between( +        params[:q][:vehicle_journey_at_stops_departure_time_gteq], +        params[:q][:vehicle_journey_at_stops_departure_time_lteq] +      ) +    end +      @q = scope.search filtered_ransack_params      # Fixme 3358 diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index 5d7ddafd7..0b4db3d9d 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -220,16 +220,19 @@ module Chouette          .order('"vehicle_journey_at_stops"."departure_time"')      end +    # Requires a SELECT DISTINCT and a join with +    # "vehicle_journey_at_stops". +    #      # Example: -    #   .departure_time_between('08:00', '09:45') -    def self.departure_time_between(start_time, end_time) +    #   .select('DISTINCT "vehicle_journeys".*') +    #   .joins(' +    #     LEFT JOIN "vehicle_journey_at_stops" +    #       ON "vehicle_journey_at_stops"."vehicle_journey_id" = +    #         "vehicle_journeys"."id" +    #   ') +    #   .where_departure_time_between('08:00', '09:45') +    def self.where_departure_time_between(start_time, end_time)        self -        .select('DISTINCT "vehicle_journeys".*') -        .joins(' -          LEFT JOIN "vehicle_journey_at_stops" -            ON "vehicle_journey_at_stops"."vehicle_journey_id" = -              "vehicle_journeys"."id" -        ')          .where(            %Q(              "vehicle_journey_at_stops"."departure_time" >= ? diff --git a/spec/models/chouette/vehicle_journey_spec.rb b/spec/models/chouette/vehicle_journey_spec.rb index 231cbfaaf..caa4af203 100644 --- a/spec/models/chouette/vehicle_journey_spec.rb +++ b/spec/models/chouette/vehicle_journey_spec.rb @@ -336,7 +336,13 @@ describe Chouette::VehicleJourney, :type => :model do        expect(route          .vehicle_journeys -        .departure_time_between('02:30', '03:30') +        .select('DISTINCT "vehicle_journeys".*') +        .joins(' +          LEFT JOIN "vehicle_journey_at_stops" +            ON "vehicle_journey_at_stops"."vehicle_journey_id" = +              "vehicle_journeys"."id" +        ') +        .where_departure_time_between('02:30', '03:30')          .to_a        ).to eq([journey_middle])      end  | 
