diff options
Diffstat (limited to 'app/models/chouette')
| -rw-r--r-- | app/models/chouette/route.rb | 24 | ||||
| -rw-r--r-- | app/models/chouette/stop_point.rb | 3 | 
2 files changed, 17 insertions, 10 deletions
| diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb index 13288bc6b..65947c392 100644 --- a/app/models/chouette/route.rb +++ b/app/models/chouette/route.rb @@ -68,28 +68,34 @@ module Chouette      validates_presence_of :published_name      validates_presence_of :line      validates :wayback, inclusion: { in: self.wayback.values } -      after_save :calculate_costs!, if: ->() { TomTom.enabled? } - -    def duplicate +     +    def duplicate opposite=false        overrides = {          'opposite_route_id' => nil,          'name' => I18n.t('activerecord.copy', name: self.name)        } +      keys_for_create = attributes.keys - %w{id objectid created_at updated_at}        atts_for_create = attributes -        .slice!(*%w{id objectid created_at updated_at}) +        .slice(*keys_for_create)          .merge(overrides) +      if opposite +        atts_for_create[:wayback] = self.opposite_wayback +        atts_for_create[:name] = I18n.t('routes.opposite', name: self.name) +        atts_for_create[:published_name] = atts_for_create[:name] +        atts_for_create[:opposite_route_id] = self.id +      end        new_route = self.class.create!(atts_for_create) -      duplicate_stop_points(for_route: new_route) +      duplicate_stop_points(for_route: new_route, opposite: opposite)        new_route      end -    def duplicate_stop_points(for_route:) -      stop_points.each(&duplicate_stop_point(for_route: for_route)) +    def duplicate_stop_points(for_route:, opposite: false) +      stop_points.each(&duplicate_stop_point(for_route: for_route, opposite: opposite))      end -    def duplicate_stop_point(for_route:) +    def duplicate_stop_point(for_route:, opposite: false)        -> stop_point do -        stop_point.duplicate(for_route: for_route) +        stop_point.duplicate(for_route: for_route, opposite: opposite)        end      end diff --git a/app/models/chouette/stop_point.rb b/app/models/chouette/stop_point.rb index 6b363cd93..da2da998a 100644 --- a/app/models/chouette/stop_point.rb +++ b/app/models/chouette/stop_point.rb @@ -39,11 +39,12 @@ module Chouette        end      end -    def duplicate(for_route:) +    def duplicate(for_route:, opposite: false)        keys_for_create = attributes.keys - %w{id objectid created_at updated_at}        atts_for_create = attributes          .slice(*keys_for_create)          .merge('route_id' => for_route.id) +      atts_for_create["position"] = self.route.stop_points.size - atts_for_create["position"] if opposite        self.class.create!(atts_for_create)      end | 
