diff options
Diffstat (limited to 'app/models/chouette')
| -rw-r--r-- | app/models/chouette/company.rb | 1 | ||||
| -rw-r--r-- | app/models/chouette/line.rb | 10 | ||||
| -rw-r--r-- | app/models/chouette/purchase_window.rb | 1 | ||||
| -rw-r--r-- | app/models/chouette/route.rb | 12 | ||||
| -rw-r--r-- | app/models/chouette/stop_area.rb | 1 | ||||
| -rw-r--r-- | app/models/chouette/time_table.rb | 4 |
6 files changed, 16 insertions, 13 deletions
diff --git a/app/models/chouette/company.rb b/app/models/chouette/company.rb index b3d40ab96..2e942d520 100644 --- a/app/models/chouette/company.rb +++ b/app/models/chouette/company.rb @@ -15,6 +15,7 @@ module Chouette [:organizational_unit, :operating_department_name, :code, :phone, :fax, :email, :url, :time_zone] end + def local_id; id end end end diff --git a/app/models/chouette/line.rb b/app/models/chouette/line.rb index 874353752..5df45efbd 100644 --- a/app/models/chouette/line.rb +++ b/app/models/chouette/line.rb @@ -49,7 +49,7 @@ module Chouette [:published_name, :number, :comment, :url, :color, :text_color, :stable_id] end - def local_id; registration_number end + def local_id; registration_number || id end def geometry_presenter Chouette::Geometry::LinePresenter.new self @@ -83,6 +83,14 @@ module Chouette line_referential.companies.where(id: ([company_id] + Array(secondary_company_ids)).compact) end + def deactivate + self.deactivated = true + end + + def activate + self.deactivated = false + end + def deactivate! update_attribute :deactivated, true end diff --git a/app/models/chouette/purchase_window.rb b/app/models/chouette/purchase_window.rb index 334493015..157390a21 100644 --- a/app/models/chouette/purchase_window.rb +++ b/app/models/chouette/purchase_window.rb @@ -19,6 +19,7 @@ module Chouette scope :contains_date, ->(date) { where('date ? <@ any (date_ranges)', date) } scope :overlap_dates, ->(date_range) { where('daterange(?, ?) && any (date_ranges)', date_range.first, date_range.last + 1.day) } + scope :matching_dates, ->(date_range) { where('ARRAY[daterange(?, ?)] = date_ranges', date_range.first, date_range.last + 1.day) } def self.ransackable_scopes(auth_object = nil) [:contains_date] diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb index e418134de..3729deb7d 100644 --- a/app/models/chouette/route.rb +++ b/app/models/chouette/route.rb @@ -186,15 +186,9 @@ module Chouette end def full_journey_pattern - out = journey_patterns.find{|jp| jp.stop_points.count == self.stop_points.count } - unless out - out = journey_patterns.build name: self.name - self.stop_points.each do |sp| - out.stop_points.build stop_area: sp.stop_area, position: sp.position - end - out.save! - end - out + journey_pattern = journey_patterns.find_or_create_by registration_number: self.number, name: self.name + journey_pattern.stop_points = self.stop_points + journey_pattern end protected diff --git a/app/models/chouette/stop_area.rb b/app/models/chouette/stop_area.rb index c85a8b37d..699616863 100644 --- a/app/models/chouette/stop_area.rb +++ b/app/models/chouette/stop_area.rb @@ -112,7 +112,6 @@ module Chouette id.to_s end end - alias_method :local_id, :user_objectid alias_method :local_id, :user_objectid diff --git a/app/models/chouette/time_table.rb b/app/models/chouette/time_table.rb index 15b22b671..b76de852a 100644 --- a/app/models/chouette/time_table.rb +++ b/app/models/chouette/time_table.rb @@ -44,10 +44,10 @@ module Chouette attrs << self.int_day_types dates = self.dates dates += TimeTableDate.where(time_table_id: self.id) - attrs << dates.map(&:checksum).map(&:to_s).sort + attrs << dates.map(&:checksum).map(&:to_s).uniq.sort periods = self.periods periods += TimeTablePeriod.where(time_table_id: self.id) - attrs << periods.map(&:checksum).map(&:to_s).sort + attrs << periods.map(&:checksum).map(&:to_s).uniq.sort end end |
