Revert "Revert "Claimant type to avis table""

This reverts commit f4fd220d43.
This commit is contained in:
kara Diaby 2021-03-09 15:39:51 +01:00
parent 873cea8c86
commit 6383e6b9e7
5 changed files with 49 additions and 2 deletions

View file

@ -27,6 +27,7 @@ module CreateAvisConcern
introduction: create_avis_params[:introduction], introduction: create_avis_params[:introduction],
introduction_file: create_avis_params[:introduction_file], introduction_file: create_avis_params[:introduction_file],
claimant: current_instructeur, claimant: current_instructeur,
claimant_type: current_instructeur.dossiers.present? ? 'Instructeur' : 'Expert',
dossier: dossier, dossier: dossier,
confidentiel: confidentiel, confidentiel: confidentiel,
experts_procedure: experts_procedure experts_procedure: experts_procedure

View file

@ -4,6 +4,7 @@
# #
# id :integer not null, primary key # id :integer not null, primary key
# answer :text # answer :text
# claimant_type :string
# confidentiel :boolean default(FALSE), not null # confidentiel :boolean default(FALSE), not null
# email :string # email :string
# introduction :text # introduction :text

View file

@ -0,0 +1,6 @@
class AddClaimantTypeToAvis < ActiveRecord::Migration[6.0]
def change
add_column :avis, :claimant_type, :string
remove_foreign_key :avis, :instructeurs, column: "claimant_id"
end
end

View file

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2021_02_04_180955) do ActiveRecord::Schema.define(version: 2021_03_07_143807) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -122,6 +122,7 @@ ActiveRecord::Schema.define(version: 2021_02_04_180955) do
t.boolean "confidentiel", default: false, null: false t.boolean "confidentiel", default: false, null: false
t.datetime "revoked_at" t.datetime "revoked_at"
t.bigint "experts_procedure_id" t.bigint "experts_procedure_id"
t.string "claimant_type"
t.index ["claimant_id"], name: "index_avis_on_claimant_id" t.index ["claimant_id"], name: "index_avis_on_claimant_id"
t.index ["dossier_id"], name: "index_avis_on_dossier_id" t.index ["dossier_id"], name: "index_avis_on_dossier_id"
t.index ["experts_procedure_id"], name: "index_avis_on_experts_procedure_id" t.index ["experts_procedure_id"], name: "index_avis_on_experts_procedure_id"
@ -729,7 +730,6 @@ ActiveRecord::Schema.define(version: 2021_02_04_180955) do
add_foreign_key "attestation_templates", "procedures" add_foreign_key "attestation_templates", "procedures"
add_foreign_key "attestations", "dossiers" add_foreign_key "attestations", "dossiers"
add_foreign_key "avis", "experts_procedures" add_foreign_key "avis", "experts_procedures"
add_foreign_key "avis", "instructeurs", column: "claimant_id"
add_foreign_key "champs", "champs", column: "parent_id" add_foreign_key "champs", "champs", column: "parent_id"
add_foreign_key "closed_mails", "procedures" add_foreign_key "closed_mails", "procedures"
add_foreign_key "commentaires", "dossiers" add_foreign_key "commentaires", "dossiers"

View file

@ -0,0 +1,39 @@
namespace :after_party do
desc 'Deployment task: backfill_claimant_type_on_avis_table'
task backfill_claimant_type_on_avis_table: :environment do
puts "Running deploy task 'backfill_claimant_type_on_avis_table'"
with_dossiers = Avis.where(claimant_type: nil).includes(claimant: :assign_to).where.not(claimant: { assign_tos: { id: nil } })
with_dossiers.update_all(claimant_type: 'Instructeur')
without_dossiers = Avis.where(claimant_type: nil).includes(claimant: :assign_to).where(claimant: { assign_tos: { id: nil } })
without_dossiers.find_each do |avis|
claimant = Instructeur.find(avis.claimant_id).user
instructeur = Instructeur.find(avis.instructeur) if avis.instructeur
if instructeur && avis.experts_procedure_id.blank?
User.create_or_promote_to_expert(instructeur.user.email, SecureRandom.hex)
instructeur.user.reload
experts_procedure = ExpertsProcedure.find_or_create_by(procedure: avis.procedure, expert: instructeur.user.expert)
avis.update_columns(claimant_type: 'Expert', experts_procedure_id: experts_procedure.id)
elsif instructeur.blank? && avis.experts_procedure_id.blank?
expert = User.create_or_promote_to_expert(avis.email, SecureRandom.hex).expert
expert.reload
experts_procedure = ExpertsProcedure.find_or_create_by(procedure: avis.procedure, expert: expert)
avis.update_columns(claimant_type: 'Expert', experts_procedure_id: experts_procedure.id)
elsif avis.experts_procedure_id.present?
avis.update_column(:claimant_type, 'Expert')
elsif claimant.blank?
avis.destroy
end
end
# Update task as completed. If you remove the line below, the task will
# run with every deploy (or every time you call after_party:run).
AfterParty::TaskRecord
.create version: AfterParty::TaskRecorder.new(__FILE__).timestamp
end
end