Use revision instead of groupe instructeur as dossier procedure link

This commit is contained in:
Paul Chavard 2021-03-09 11:21:25 +01:00
parent 1e10298859
commit 9c3e72c84a
6 changed files with 11 additions and 14 deletions

View file

@ -12,13 +12,13 @@ module Instructeurs
DONNES_STATUS = 'donnes'
def index
avis = current_instructeur.avis.includes(dossier: [groupe_instructeur: :procedure])
avis = current_instructeur.avis.includes(:procedure)
@avis_by_procedure = avis.to_a.group_by(&:procedure)
end
def procedure
@procedure = Procedure.find(params[:procedure_id])
instructeur_avis = current_instructeur.avis.includes(:dossier).where(dossiers: { groupe_instructeur: GroupeInstructeur.where(procedure: @procedure.id) })
instructeur_avis = current_instructeur.avis.includes(:dossier).where(dossiers: { revision: @procedure.revisions })
@avis_a_donner = instructeur_avis.without_answer
@avis_donnes = instructeur_avis.with_answer

View file

@ -19,7 +19,7 @@ module Mutations
def authorized?(dossier:, groupe_instructeur:)
if dossier.groupe_instructeur == groupe_instructeur
return false, { errors: ["Le dossier est déjà avec le grope instructeur: '#{groupe_instructeur.label}'"] }
elsif dossier.groupe_instructeur.procedure != groupe_instructeur.procedure
elsif dossier.procedure != groupe_instructeur.procedure
return false, { errors: ["Le groupe instructeur '#{groupe_instructeur.label}' nappartient pas à la même démarche que le dossier"] }
else
true

View file

@ -22,6 +22,7 @@ class Avis < ApplicationRecord
belongs_to :instructeur, optional: true
belongs_to :experts_procedure, optional: true
belongs_to :claimant, class_name: 'Instructeur', optional: false
has_one :procedure, through: :dossier
has_one_attached :piece_justificative_file
has_one_attached :introduction_file
@ -79,10 +80,6 @@ class Avis < ApplicationRecord
]
end
def procedure
dossier.procedure
end
def revoked?
revoked_at.present?
end

View file

@ -293,8 +293,8 @@ class Dossier < ApplicationRecord
# select users who have submitted dossier for the given 'procedures.id'
users_who_submitted =
state_not_brouillon
.joins(:groupe_instructeur)
.where("groupe_instructeurs.procedure_id = procedures.id")
.joins(:revision)
.where("procedure_revisions.procedure_id = procedures.id")
.select(:user_id)
# select dossier in brouillon where procedure closes in two days and for which the user has not submitted a Dossier
state_brouillon
@ -321,7 +321,7 @@ class Dossier < ApplicationRecord
delegate :siret, :siren, to: :etablissement, allow_nil: true
delegate :france_connect_information, to: :user
before_save :build_default_champs, if: Proc.new { groupe_instructeur_id_was.nil? }
before_save :build_default_champs, if: Proc.new { revision_id_was.nil? }
before_save :update_search_terms
after_save :send_dossier_received
@ -427,7 +427,7 @@ class Dossier < ApplicationRecord
end
def assign_to_groupe_instructeur(groupe_instructeur, author = nil)
if groupe_instructeur.procedure == procedure && groupe_instructeur != self.groupe_instructeur
if (groupe_instructeur.nil? || groupe_instructeur.procedure == procedure) && self.groupe_instructeur != groupe_instructeur
if update(groupe_instructeur: groupe_instructeur, groupe_instructeur_updated_at: Time.zone.now)
unfollow_stale_instructeurs

View file

@ -125,10 +125,10 @@ class AdministrateurUsageStatisticsService
result = {}
Dossier
.joins(groupe_instructeur: { procedure: [:administrateurs] })
.joins(revision: { procedure: [:administrateurs] })
.group(
'administrateurs.id',
'groupe_instructeurs.procedure_id',
'procedure_revisions.procedure_id',
<<~EOSQL
CASE
WHEN state IN('accepte', 'refuse', 'sans_suite') THEN 'termine'

View file

@ -11,7 +11,7 @@
= link_to 'Jai déjà un compte', commencer_sign_in_path(path: @procedure.path), class: ['button large expand']
- else
- dossiers = current_user.dossiers.where(groupe_instructeur: @procedure.groupe_instructeurs)
- dossiers = current_user.dossiers.where(revision: @procedure.revisions)
- drafts = dossiers.merge(Dossier.state_brouillon)
- not_drafts = dossiers.merge(Dossier.state_not_brouillon)