diff --git a/app/models/columns/read_agreement_column.rb b/app/models/columns/read_agreement_column.rb new file mode 100644 index 00000000000..3cdec556395 --- /dev/null +++ b/app/models/columns/read_agreement_column.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class Columns::ReadAgreementColumn < Columns::DossierColumn + def initialize(procedure_id:) + super( + procedure_id:, + table: nil, + column: nil, + label: "Décision vue par l'usager ?", + type: :boolean, + displayable: false, + options_for_select: [[I18n.t('activerecord.attributes.type_de_champ.type_champs.yes_no_true'), true], [I18n.t('activerecord.attributes.type_de_champ.type_champs.yes_no_false'), false]] + ) + end + + def value(dossier) = dossier.accuse_lecture_agreement_at + + def filtered_ids(dossiers, values) + return dossiers.ids if values.include?("true") && values.include?("false") # on doit pouvoir faire mieux + if values == ["true"] + dossiers.where.not(accuse_lecture_agreement_at: nil).ids + else + dossiers.where(accuse_lecture_agreement_at: nil).ids + end + end +end diff --git a/app/models/concerns/columns_concern.rb b/app/models/concerns/columns_concern.rb index 9bdddf2a764..46cb3647e65 100644 --- a/app/models/concerns/columns_concern.rb +++ b/app/models/concerns/columns_concern.rb @@ -58,6 +58,7 @@ def dossier_columns_for_export columns.concat(dossier_dates_columns) columns.concat([dossier_motivation_column]) columns.concat(sva_svr_columns(for_export: true)) if sva_svr_enabled? + columns.concat([dossier_accuse_lecture_agreement_at_column]) if accuse_lecture? columns.concat([groupe_instructeurs_id_column, followers_instructeurs_email_column]) columns.concat([dossier_labels_column]) @@ -127,6 +128,8 @@ def dossier_dates_columns .map { |column| dossier_col(table: 'self', column:, type: :datetime) } end + def dossier_accuse_lecture_agreement_at_column = dossier_col(table: 'self', column: 'accuse_lecture_agreement_at', type: :date, filterable: false) + def email_column dossier_col(table: 'user', column: 'email') end @@ -137,8 +140,10 @@ def dossier_columns columns.concat([dossier_archived_column]) columns.concat(dossier_dates_columns) columns.concat([dossier_motivation_column]) + columns.concat([dossier_accuse_lecture_agreement_at_column]) if accuse_lecture? columns.concat(sva_svr_columns(for_export: false)) if sva_svr_enabled? columns.concat(dossier_non_displayable_dates_columns) + columns.concat([Columns::ReadAgreementColumn.new(procedure_id: id)]) end def standard_columns diff --git a/config/locales/models/procedure_presentation/en.yml b/config/locales/models/procedure_presentation/en.yml index 7fccc8a8eb0..e3f6467fcef 100644 --- a/config/locales/models/procedure_presentation/en.yml +++ b/config/locales/models/procedure_presentation/en.yml @@ -26,6 +26,7 @@ en: for_tiers: "For tiers" mandataire_last_name: "Tier last name" mandataire_first_name: "Tier first name" + accuse_lecture_agreement_at: 'Read receipt' user: id: User Id email: Requester diff --git a/config/locales/models/procedure_presentation/fr.yml b/config/locales/models/procedure_presentation/fr.yml index 9c82c0731a5..9a804ee8254 100644 --- a/config/locales/models/procedure_presentation/fr.yml +++ b/config/locales/models/procedure_presentation/fr.yml @@ -30,6 +30,7 @@ fr: dossier_state: 'État du dossier' last_champ_updated_at: Date de dernière modification (usager) motivation: 'Motivation de la décision' + accuse_lecture_agreement_at: 'Accusé de lecture' user: id: Identifiant du demandeur email: Demandeur