aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/chouette/route.rb4
-rw-r--r--app/models/chouette/vehicle_journey.rb41
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|