diff options
Diffstat (limited to 'app/models/chouette')
| -rw-r--r-- | app/models/chouette/route.rb | 3 | ||||
| -rw-r--r-- | app/models/chouette/stop_area.rb | 30 |
2 files changed, 29 insertions, 4 deletions
diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb index 7a8d043e0..949b18d6f 100644 --- a/app/models/chouette/route.rb +++ b/app/models/chouette/route.rb @@ -72,6 +72,9 @@ module Chouette end end + has_many :time_tables, :through => :vehicle_journeys + has_many :purchase_windows, :through => :vehicle_journeys + accepts_nested_attributes_for :stop_points, :allow_destroy => :true validates_presence_of :name diff --git a/app/models/chouette/stop_area.rb b/app/models/chouette/stop_area.rb index b933e1944..25a0010d8 100644 --- a/app/models/chouette/stop_area.rb +++ b/app/models/chouette/stop_area.rb @@ -383,6 +383,28 @@ module Chouette end end + def self.ransackable_scopes(auth_object = nil) + [:by_status] + end + + + def self.by_status(*statuses) + return Chouette::StopArea.all if statuses.reject(&:blank?).length == 3 || statuses.reject(&:blank?).empty? + + status = { + in_creation: statuses.include?('in_creation'), + confirmed: statuses.include?('confirmed'), + deactivated: statuses.include?('deactivated'), + } + + query = [] + query << "deleted_at IS NOT NULL" if statuses.include?('deactivated') + query << "(confirmed_at IS NULL AND deleted_at IS NULL)" if statuses.include?('in_creation') + query << "(confirmed_at IS NOT NULL AND deleted_at IS NULL)" if statuses.include?('confirmed') + + Chouette::StopArea.where(query.join(' OR ')) + end + def activated? !!(deleted_at.nil? && confirmed_at) end @@ -410,7 +432,7 @@ module Chouette end def status - return :deleted if deleted_at + return :deactivated if deleted_at return :confirmed if confirmed_at :in_creation @@ -418,7 +440,7 @@ module Chouette def status=(status) case status&.to_sym - when :deleted + when :deactivated deactivate when :confirmed activate @@ -428,7 +450,7 @@ module Chouette end def self.statuses - %i{in_creation confirmed deleted} + %i{in_creation confirmed deactivated} end def time_zone_offset @@ -441,7 +463,7 @@ module Chouette return unless ActiveSupport::TimeZone[time_zone].present? ActiveSupport::TimeZone[time_zone].tzinfo.name end - + def country return unless country_code country = ISO3166::Country[country_code] |
