70 lines
2.4 KiB
Ruby
70 lines
2.4 KiB
Ruby
class APIEntrepriseService
|
|
class << self
|
|
# create etablissement with EtablissementAdapter
|
|
# enqueue api_entreprise jobs to retrieve
|
|
# all informations we can get about a SIRET.
|
|
#
|
|
# Returns nil if the SIRET is unknown
|
|
#
|
|
# Raises a APIEntreprise::API::Error::RequestFailed exception on transient errors
|
|
# (timeout, 5XX HTTP error code, etc.)
|
|
#
|
|
def create_etablissement(dossier_or_champ, siret, user_id = nil)
|
|
procedure_id = dossier_or_champ.procedure.id
|
|
|
|
etablissement_params = APIEntreprise::EtablissementAdapter.new(siret, procedure_id).to_params
|
|
return nil if etablissement_params.empty?
|
|
|
|
etablissement = dossier_or_champ.build_etablissement(etablissement_params)
|
|
etablissement.save!
|
|
|
|
perform_later_fetch_jobs(etablissement, procedure_id, user_id)
|
|
|
|
etablissement
|
|
end
|
|
|
|
def create_etablissement_as_degraded_mode(dossier_or_champ, siret, user_id = nil)
|
|
etablissement = dossier_or_champ.build_etablissement(siret: siret)
|
|
etablissement.save!
|
|
|
|
procedure_id = dossier_or_champ.procedure.id
|
|
|
|
perform_later_fetch_jobs(etablissement, procedure_id, user_id, wait: 30.minutes)
|
|
|
|
etablissement
|
|
end
|
|
|
|
def update_etablissement_from_degraded_mode(etablissement, procedure_id)
|
|
siret = etablissement.siret
|
|
etablissement_params = APIEntreprise::EtablissementAdapter.new(siret, procedure_id).to_params
|
|
return nil if etablissement_params.empty?
|
|
|
|
etablissement.update!(etablissement_params)
|
|
end
|
|
|
|
def perform_later_fetch_jobs(etablissement, procedure_id, user_id, wait: nil)
|
|
[
|
|
APIEntreprise::EntrepriseJob, APIEntreprise::AssociationJob, APIEntreprise::ExercicesJob,
|
|
APIEntreprise::EffectifsJob, APIEntreprise::EffectifsAnnuelsJob, APIEntreprise::AttestationSocialeJob,
|
|
APIEntreprise::BilansBdfJob
|
|
].each do |job|
|
|
job.set(wait:).perform_later(etablissement.id, procedure_id)
|
|
end
|
|
|
|
APIEntreprise::AttestationFiscaleJob.set(wait:).perform_later(etablissement.id, procedure_id, user_id)
|
|
end
|
|
|
|
def api_up?(uname = "apie_2_etablissements")
|
|
statuses = APIEntreprise::API.new.current_status.fetch(:results)
|
|
|
|
# find results having uname = apie_2_etablissements
|
|
status = statuses.find { |result| result[:uname] == uname }
|
|
|
|
status.fetch(:code) == 200
|
|
rescue => e
|
|
Sentry.capture_exception(e, extra: { uname: uname })
|
|
|
|
nil
|
|
end
|
|
end
|
|
end
|