aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/chouette
diff options
context:
space:
mode:
authorZog2018-02-26 09:58:16 +0100
committerAlban Peignier2018-03-14 15:03:03 +0100
commit8baaa7947ea1e229f67149d221dea76450f040a5 (patch)
treef70abb8951d0f682342452d66c2eca854c2651f6 /app/models/chouette
parent1457744f19109a402f76b7d1aafcb1709e38f877 (diff)
downloadchouette-core-8baaa7947ea1e229f67149d221dea76450f040a5.tar.bz2
Refs #5972 @1h; Automatic registration_number generation
Diffstat (limited to 'app/models/chouette')
-rw-r--r--app/models/chouette/stop_area.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/app/models/chouette/stop_area.rb b/app/models/chouette/stop_area.rb
index f58f97eee..0a27b2f39 100644
--- a/app/models/chouette/stop_area.rb
+++ b/app/models/chouette/stop_area.rb
@@ -46,6 +46,11 @@ module Chouette
validates_numericality_of :waiting_time, greater_than_or_equal_to: 0, only_integer: true, if: :waiting_time
validate :parent_area_type_must_be_greater
validate :area_type_of_right_kind
+ validate :registration_number_is_set
+
+ before_validation do
+ self.registration_number ||= self.stop_area_referential.generate_registration_number
+ end
def self.nullable_attributes
[:registration_number, :street_name, :country_code, :fare_code,
@@ -73,6 +78,22 @@ module Chouette
end
end
+ def registration_number_is_set
+ return unless self.stop_area_referential.registration_number_format.present?
+ if self.stop_area_referential.stop_areas.where(registration_number: self.registration_number).\
+ where.not(id: self.id).exists?
+ errors.add(:registration_number, I18n.t('stop_areas.errors.registration_number.already_taken'))
+ end
+
+ unless self.registration_number.present?
+ errors.add(:registration_number, I18n.t('stop_areas.errors.registration_number.cannot_be_empty'))
+ end
+
+ unless self.stop_area_referential.validates_registration_number(self.registration_number)
+ errors.add(:registration_number, I18n.t('stop_areas.errors.registration_number.invalid'))
+ end
+ end
+
after_update :clean_invalid_access_links
before_save :coordinates_to_lat_lng