class Teneo::DataModel::IngestAgreement

noinspection RailsParamDefResolve

Public Class Methods

from_hash(hash, id_tags = [:organization_id, :name]) click to toggle source
Calls superclass method Teneo::DataModel::Base::from_hash
# File lib/teneo/data_model/ingest_agreement.rb, line 34
def self.from_hash(hash, id_tags = [:organization_id, :name])
  org_name = hash.delete(:organization)
  query = org_name ? {name: org_name} : {id: hash[:organization_id]}
  organization = record_finder Teneo::DataModel::Organization, query
  hash[:organization_id] = organization.id
  ingest_models = hash.delete(:ingest_models)
  ingest_workflows = hash.delete(:ingest_workflows)
  item = super(hash, id_tags) do |item, h|
    if (producer = h.delete(:producer))
      item.producer = record_finder Teneo::DataModel::Producer, inst_code: organization.inst_code, name: producer
    end
    if (material_flow = h.delete(:material_flow))
      item.material_flow =record_finder Teneo::DataModel::MaterialFlow, inst_code: organization.inst_code, name: material_flow
    end
  end
  if ingest_models
    item.ingest_models.clear
    ingest_models.each do |ingest_model|
      item.ingest_models << Teneo::DataModel::IngestModel.from_hash(ingest_model.merge(ingest_agreement_id: item.id))
    end
    item.save!
  end
  if ingest_workflows
    item.ingest_workflows.clear
    ingest_workflows.each do |ingest_workflow|
      item.ingest_workflows << Teneo::DataModel::IngestWorkflow.from_hash(ingest_workflow.merge(ingest_agreement_id: item.id))
    end
    item.save!
  end
  item
end