diff options
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/chouette/route.rb | 4 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 41 |
2 files changed, 43 insertions, 2 deletions
diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb index 436f19e9f..9007b177e 100644 --- a/app/models/chouette/route.rb +++ b/app/models/chouette/route.rb @@ -110,9 +110,9 @@ class Chouette::Route < Chouette::TridentActiveRecord def sorted_vehicle_journeys(journey_category_model) send(journey_category_model) - .joins(:journey_pattern, :vehicle_journey_at_stops) + .joins(:journey_pattern, :vehicle_journey_at_stops, :time_tables) .where("vehicle_journey_at_stops.stop_point_id=journey_patterns.departure_stop_point_id") - .order( "vehicle_journey_at_stops.departure_time") + .order("vehicle_journey_at_stops.departure_time") end def stop_point_permutation?( stop_point_ids) diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index b4bd38850..d03b52e83 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -47,6 +47,47 @@ module Chouette @presenter ||= ::VehicleJourneyPresenter.new( self) end + def vehicle_journey_at_stops_matrix + fill = route.stop_points.count - self.vehicle_journey_at_stops.count + at_stops = self.vehicle_journey_at_stops.to_a.dup + fill.times do + at_stops << Chouette::VehicleJourneyAtStop.new + end + at_stops + end + + def update_vehicle_journey_at_stops_state state + state.each do |vjas| + next if vjas["dummy"] + stop = vehicle_journey_at_stops.find(vjas['id']) if vjas['id'] + if stop + stop.arrival_time ||= Time.now.beginning_of_day + stop.departure_time ||= Time.now.beginning_of_day + ['arrival_time', 'departure_time'].each do |field| + stop.assign_attributes({ + field.to_sym => stop.send(field).change({ hour: vjas[field]['hour'], min: vjas[field]['minute'] }) + }) + end + stop.save + end + end + end + + def self.state_update route, state + transaction do + state.each do |item| + item.delete('errors') + vj = find_by(objectid: item['objectid']) + vj.update_vehicle_journey_at_stops_state(item['vehicle_journey_at_stops']) + item['errors'] = vj.errors if vj.errors.any? + end + + if state.any? {|item| item['errors']} + raise ActiveRecord::Rollback + end + end + end + def increasing_times previous = nil vehicle_journey_at_stops.select{|vjas| vjas.departure_time && vjas.arrival_time}.each do |vjas| |
