aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/import/netex.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/app/models/import/netex.rb b/app/models/import/netex.rb
index 2b0982229..83b654f81 100644
--- a/app/models/import/netex.rb
+++ b/app/models/import/netex.rb
@@ -10,6 +10,25 @@ class Import::Netex < Import::Base
validates_presence_of :parent
+ def create_referential
+ self.referential =
+ Referential.new(
+ name: self.name,
+ organisation_id: workbench.organisation_id,
+ workbench_id: workbench.id,
+ metadatas: [referential_metadata]
+ )
+ self.referential.save
+ unless self.referential.valid?
+ Rails.logger.info "Can't create referential for import #{self.id}: #{referential.inspect} #{referential.metadatas.inspect} #{referential.errors.messages}"
+ if referential.metadatas.all?{|m| m.line_ids.empty?}
+ parent.messages.create criticity: :error, message_key: "referential_creation_missing_lines", message_attributes: {referential_name: referential.name}
+ else
+ parent.messages.create criticity: :error, message_key: "referential_creation", message_attributes: {referential_name: referential.name}
+ end
+ end
+ end
+
private
def iev_callback_url
@@ -21,4 +40,22 @@ class Import::Netex < Import::Base
referential.destroy
end
end
+
+ def referential_metadata
+ metadata = ReferentialMetadata.new
+
+ if self.file
+ netex_file = STIF::NetexFile.new(self.file.path)
+ frame = netex_file.frames.first
+
+ if frame
+ metadata.periodes = frame.periods
+
+ line_objectids = frame.line_refs.map { |ref| "STIF:CODIFLIGNE:Line:#{ref}" }
+ metadata.line_ids = workbench.lines.where(objectid: line_objectids).pluck(:id)
+ end
+ end
+
+ metadata
+ end
end