From 86125b219ac98fe2e0eb1f68b0b3a8b7117f6478 Mon Sep 17 00:00:00 2001 From: Xavier J Date: Tue, 8 Nov 2016 19:02:57 +0100 Subject: [PATCH] Import opensimplif rake task --- lib/tasks/opensimplif_import.rake | 118 ++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 lib/tasks/opensimplif_import.rake diff --git a/lib/tasks/opensimplif_import.rake b/lib/tasks/opensimplif_import.rake new file mode 100644 index 000000000..7131153ed --- /dev/null +++ b/lib/tasks/opensimplif_import.rake @@ -0,0 +1,118 @@ +require 'csv' +require 'json' + +namespace :opensimplif_import do + task :import_all => :environment do + puts 'start opensimplif' + + Rake::Task['opensimplif_import:import_proposition'].invoke + Rake::Task['opensimplif_import:import_piste'].invoke + Rake::Task['opensimplif_import:import_mesure'].invoke + + puts 'end import opensimplif' + end + + task :import_proposition do + file_path = "lib/tasks/161102_OS_Inputs_test_propositions.csv" + procedure_id = 35 + + matching = [ + {id: 44, key: 'Intitulé de la proposition'}, + {id: 43, key: 'Champ concerné'}, + {id: 45, key: 'Champ ministériel chef de file'}, + {id: 59, key: 'Date de la proposition'}, + {id: 60, key: 'Moment de vie'}, + {id: 61, key: 'Source'}, + {id: 48, key: 'Description de la proposition'} + ] + + puts 'start propositions' + import file_path, procedure_id, matching + puts 'done propositions' + end + + task :import_piste do + file_path = "lib/tasks/161102_OS_Inputs_test_pistes.csv" + procedure_id = 36 + + matching = [ + {id: 81, key: 'Intitulé de la piste *'}, + {id: 82, key: 'Usager concerné *'}, + {id: 83, key: 'Champ ministériel chef de file *'}, + {id: 84, key: 'Champ ministériel contributeur'}, + {id: 85, key: 'Date de saisine'}, + {id: 66, key: 'Moment de vie'}, + {id: 80, key: 'Source de la piste'}, + {id: 70, key: 'Description de la piste '}, + {id: 68, key: 'Objectifs / bénéfices attendus'}, + {id: 65, key: 'Description détaillée des démarches impactées par la piste'}, + {id: 69, key: 'Levier de mise en oeuvre'}, + {id: 67, key: 'Précision sur le levier de meo'}, + {id: 64, key: 'Calendrier de mise en oeuvre'} + ] + + puts 'start piste' + import file_path, procedure_id, matching + puts 'done pistes' + end + + task :import_mesure do + file_path = "lib/tasks/161102_OS_Inputs_test_mesures.csv" + procedure_id = 37 + + matching = [ + {id: 107, key: 'Intitulé projet / mesure'}, + {id: 104, key: 'Champ concerné'}, + {id: 105, key: 'Champ ministériel chef de file'}, + {id: 112, key: 'Direction chef de file'}, + {id: 106, key: 'Champ ministériel contributeur'}, + {id: 113, key: 'Direction contributrice'}, + {id: 92, key: 'Moment de vie'}, + {id: 109, key: 'Date d\'annonce'}, + {id: 114, key: 'N° de la mesure'}, + {id: 115, key: 'Responsable ministère'}, + {id: 116, key: 'Responsable SGMAP'}, + {id: 89, key: 'Actions réalisées'}, + {id: 95, key: 'Etapes nécessaires à l\'atteinte de la cible et alertes'}, + {id: 102, key: 'Alertes'}, + {id: 101, key: 'Échéance initiale'}, + {id: 96, key: 'Échéance prévisionnelle / réelle'}, + {id: 94, key: 'Appréciation avancement'}, + {id: 91, key: 'Etat d\'avancement LOLF'}, + {id: 111, key: '§ de com'} + ] + + puts 'start mesures' + import file_path, procedure_id, matching + puts 'done mesures' + end + + def self.import file_path, procedure_id, matching + user = User.find_or_create_by(email: 'import@opensimplif.modernisation.fr') + + unless user.valid? + user.password = 'TPSpassword2016' + user.save + end + + file ||= CSV.open(file_path, :col_sep => ";", :headers => true).map { |x| x.to_h }.to_json + file = JSON.parse(file) + + procedure = Procedure.find(procedure_id) + + user.dossiers.where(procedure_id: procedure.id).destroy_all + + file.each do |proposition| + dossier = Dossier.create procedure: procedure, user: user, state: :initiated + + dossier.champs.each do |champ| + matching.each do |match| + if match[:id] == champ.type_de_champ.id + champ.update_column :value, proposition[match[:key]] + break + end + end + end + end + end +end