From d71aabd29144abcf643377651e79dee7128501a3 Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Thu, 5 Apr 2018 14:52:29 +0200 Subject: [PATCH 1/2] Job to fetch missing etablissement --- app/jobs/etablissement_update_job.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 app/jobs/etablissement_update_job.rb diff --git a/app/jobs/etablissement_update_job.rb b/app/jobs/etablissement_update_job.rb new file mode 100644 index 000000000..10566f8cf --- /dev/null +++ b/app/jobs/etablissement_update_job.rb @@ -0,0 +1,19 @@ +class EtablissementUpdateJob < ApplicationJob + queue_as :default + + def perform(dossier, siret) + etablissement_attributes = SIRETService.fetch(siret, dossier.procedure_id, dossier) + + if etablissement_attributes.present? + if dossier.entreprise.present? + dossier.entreprise.destroy + end + if dossier.etablissement.present? + dossier.etablissement.destroy + end + etablissement_attributes = ActionController::Parameters.new(etablissement_attributes).permit! + etablissement = dossier.build_etablissement(etablissement_attributes) + etablissement.save + end + end +end From ea43784376797c536627d35a140b22d89b1d0c77 Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Thu, 5 Apr 2018 14:52:54 +0200 Subject: [PATCH 2/2] Task to enque jobs to fetch missing etablissements --- ..._fetch_etablissement_with_no_entreprise.rake | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 lib/tasks/2018_04_04_fetch_etablissement_with_no_entreprise.rake diff --git a/lib/tasks/2018_04_04_fetch_etablissement_with_no_entreprise.rake b/lib/tasks/2018_04_04_fetch_etablissement_with_no_entreprise.rake new file mode 100644 index 000000000..ed25fb96a --- /dev/null +++ b/lib/tasks/2018_04_04_fetch_etablissement_with_no_entreprise.rake @@ -0,0 +1,17 @@ +namespace :'2018_04_04_fetch_etablissement_with_no_entreprise' do + task fetch: :environment do + dossiers = Entreprise.joins('LEFT JOIN etablissements et ON entreprises.id = et.entreprise_id') + .where('et.id IS NULL') + .map(&:dossier_id).map { |id| Dossier.unscoped.find_by(id: id) }.compact + + dossiers.each do |dossier| + siret = dossier.entreprise.siret_siege_social + + puts "Fetch siret: #{siret} for dossier: #{dossier.id}" + + if siret + EtablissementUpdateJob.perform_later(dossier, siret) + end + end + end +end