aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/journey_patterns_collections_controller.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/app/controllers/journey_patterns_collections_controller.rb b/app/controllers/journey_patterns_collections_controller.rb
new file mode 100644
index 000000000..39355932e
--- /dev/null
+++ b/app/controllers/journey_patterns_collections_controller.rb
@@ -0,0 +1,51 @@
+class JourneyPatternsCollectionsController < ChouetteController
+ respond_to :html
+ respond_to :json
+
+ belongs_to :referential do
+ belongs_to :line, :parent_class => Chouette::Line do
+ belongs_to :route, :parent_class => Chouette::Route
+ end
+ end
+ alias_method :route, :parent
+
+ def show
+ journey_patterns_state
+ end
+
+ def update
+ state = JSON.parse request.raw_post
+ state.each do |item|
+ journey_pattern = journey_pattern_by_objectid(item['object_id'])
+ journey_pattern_update_stop_points(journey_pattern, item['stop_points']) if journey_pattern
+ end
+
+ journey_patterns_state
+ end
+
+ protected
+
+ def journey_pattern_update_stop_points journey_pattern, stop_points
+ stop_points.each do |sp|
+ stop_id = sp['id']
+ exist = journey_pattern.stop_area_ids.include?(stop_id)
+ next if exist && sp['checked']
+
+ stop_point = route.stop_points.find_by(stop_area_id: stop_id)
+ if sp['checked'] && !exist
+ journey_pattern.stop_points << stop_point
+ else
+ journey_pattern.stop_points.delete(stop_point)
+ end
+ end
+ end
+
+ def journey_patterns_state
+ @q = route.journey_patterns.includes(:stop_points)
+ @journey_patterns ||= @q.paginate(:page => params[:page]).order(:name)
+ end
+
+ def journey_pattern_by_objectid objectid
+ Chouette::JourneyPattern.find_by(objectid: objectid)
+ end
+end