diff options
Diffstat (limited to 'app/controllers/vehicle_journeys_controller.rb')
| -rw-r--r-- | app/controllers/vehicle_journeys_controller.rb | 72 | 
1 files changed, 59 insertions, 13 deletions
| diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb index 45cb25344..8845b0c54 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -1,5 +1,9 @@  class VehicleJourneysController < ChouetteController    defaults :resource_class => Chouette::VehicleJourney +  before_action :check_policy, only: [:edit, :update, :destroy] +  before_action :user_permissions, only: :index +  before_action :ransack_params, only: :index +    respond_to :json, :only => :index    respond_to :js, :only => [:select_journey_pattern, :edit, :new, :index] @@ -10,6 +14,9 @@ class VehicleJourneysController < ChouetteController    end    include PolicyChecker +  alias_method :vehicle_journeys, :collection +  alias_method :route, :parent +  alias_method :vehicle_journey, :resource    def select_journey_pattern      if params[:journey_pattern_id] @@ -29,6 +36,31 @@ class VehicleJourneysController < ChouetteController    end    def index +    @stop_points_list = [] +    route.stop_points.each do |sp| +      @stop_points_list << { +        :id => sp.stop_area.id, +        :route_id => sp.try(:route_id), +        :object_id => sp.try(:objectid), +        :position => sp.try(:position), +        :for_boarding => sp.try(:for_boarding), +        :for_alighting => sp.try(:for_alighting), +        :name => sp.stop_area.try(:name), +        :zip_code => sp.stop_area.try(:zip_code), +        :city_name => sp.stop_area.try(:city_name), +        :comment => sp.stop_area.try(:comment), +        :area_type => sp.stop_area.try(:area_type), +        :registration_number => sp.stop_area.try(:registration_number), +        :nearest_topic_name => sp.stop_area.try(:nearest_topic_name), +        :fare_code => sp.stop_area.try(:fare_code), +        :longitude => sp.stop_area.try(:longitude), +        :latitude => sp.stop_area.try(:latitude), +        :long_lat_type => sp.stop_area.try(:long_lat_type), +        :country_code => sp.stop_area.try(:country_code), +        :street_name => sp.stop_area.try(:street_name) +      } +    end +      index! do        if collection.out_of_bounds?          redirect_to params.merge(:page => 1) @@ -37,7 +69,6 @@ class VehicleJourneysController < ChouetteController      end    end -    # overwrite inherited resources to use delete instead of destroy    # foreign keys will propagate deletion)    def destroy_resource(object) @@ -45,20 +76,14 @@ class VehicleJourneysController < ChouetteController    end    protected - -  alias_method :vehicle_journey, :resource -    def collection -    unless @vehicle_journeys -      @vehicle_filter = VehicleFilter.new adapted_params -      @vehicle_filter.journey_category_model = resource_class.model_name.route_key -      @q = @vehicle_filter.vehicle_journeys.search @vehicle_filter.filtered_params -      @vehicle_journeys = @q.result( :distinct => false ).paginate(:page => params[:page], :per_page => 8) -    end -    matrix +    @ppage = 20 +    @q     = route.sorted_vehicle_journeys('vehicle_journeys').search params[:q] +    @vehicle_journeys = @q.result.paginate(:page => params[:page], :per_page => @ppage) +    @footnotes = route.line.footnotes.to_json +    @matrix    = resource_class.matrix(@vehicle_journeys)      @vehicle_journeys    end -  alias_method :vehicle_journeys, :collection    def adapted_params      params.tap do |adapted_params| @@ -79,7 +104,29 @@ class VehicleJourneysController < ChouetteController      @matrix = resource_class.matrix(@vehicle_journeys)    end +  def check_policy +    authorize resource +  end + +  def user_permissions +    @perms = {}.tap do |perm| +      ['vehicle_journeys.create', 'vehicle_journeys.edit', 'vehicle_journeys.destroy'].each do |name| +        perm[name] = current_user.permissions.include?(name) +      end +    end +    @perms = @perms.to_json +  end +    private +  def ransack_params +    if params[:q] +      params[:q] = params[:q].reject{|k| params[:q][k] == 'undefined'} +      [:departure_time_gteq, :departure_time_lteq].each do |filter| +        time = params[:q]["vehicle_journey_at_stops_#{filter}"] +        params[:q]["vehicle_journey_at_stops_#{filter}"] = "2000-01-01 #{time}:00 UTC" +      end +    end +  end    def vehicle_journey_params      params.require(:vehicle_journey).permit( { footnote_ids: [] } , :journey_pattern_id, :number, :published_journey_name, @@ -92,5 +139,4 @@ class VehicleJourneysController < ChouetteController                                                                                                        :stop_point_id,                                                                                                        :departure_time] } )    end -  end | 
