add classer_sans_suite and refuser to batch operation
This commit is contained in:
parent
f3922c7e39
commit
220b71bbf7
9 changed files with 81 additions and 32 deletions
|
@ -15,7 +15,7 @@ class Dossiers::BatchOperationComponent < ApplicationComponent
|
|||
when Dossier.states.fetch(:en_construction)
|
||||
[BatchOperation.operations.fetch(:passer_en_instruction)]
|
||||
when Dossier.states.fetch(:en_instruction)
|
||||
[BatchOperation.operations.fetch(:accepter), BatchOperation.operations.fetch(:repasser_en_construction)]
|
||||
[BatchOperation.operations.fetch(:accepter), BatchOperation.operations.fetch(:refuser), BatchOperation.operations.fetch(:classer_sans_suite), BatchOperation.operations.fetch(:repasser_en_construction)]
|
||||
when Dossier.states.fetch(:accepte), Dossier.states.fetch(:refuse), Dossier.states.fetch(:sans_suite)
|
||||
[BatchOperation.operations.fetch(:archiver)]
|
||||
else
|
||||
|
@ -58,10 +58,30 @@ class Dossiers::BatchOperationComponent < ApplicationComponent
|
|||
},
|
||||
|
||||
{
|
||||
label: t(".operations.accepter"),
|
||||
operation: BatchOperation.operations.fetch(:accepter)
|
||||
},
|
||||
instruction:
|
||||
[
|
||||
{
|
||||
label: t(".operations.accepter"),
|
||||
operation_description: t(".operations.accepter_description"),
|
||||
operation: BatchOperation.operations.fetch(:accepter),
|
||||
operation_class_name: 'accept'
|
||||
},
|
||||
|
||||
{
|
||||
label: t(".operations.refuser"),
|
||||
operation_description: t(".operations.refuser_description"),
|
||||
operation: BatchOperation.operations.fetch(:refuser),
|
||||
operation_class_name: 'refuse'
|
||||
},
|
||||
|
||||
{
|
||||
label: t(".operations.classer_sans_suite"),
|
||||
operation_description: t(".operations.classer_sans_suite_description"),
|
||||
operation: BatchOperation.operations.fetch(:classer_sans_suite),
|
||||
operation_class_name: 'without-continuation'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
label: t(".operations.unfollow"),
|
||||
operation: BatchOperation.operations.fetch(:unfollow)
|
||||
|
|
|
@ -2,7 +2,14 @@ fr:
|
|||
operations:
|
||||
archiver: 'Archive selected files'
|
||||
passer_en_instruction: 'Change selected files to instructing'
|
||||
instruction: Instructing files
|
||||
accepter: 'Accept seleted files'
|
||||
accepter_description: Users will be notified that their file has been accepted
|
||||
refuser: 'Refuse seleted files'
|
||||
refuser_description: Users will be notified that their file has been refused
|
||||
without_continuation: 'Close without continuation seleted files'
|
||||
without_continuation_description: Users will be notified that their file has been closed without continuation
|
||||
follow: 'Follow seleted files'
|
||||
unfollow: 'Unfollow seleted files'
|
||||
repasser_en_construction: 'Change selected files to in progress'
|
||||
other: Other batch operations
|
||||
|
|
|
@ -2,7 +2,14 @@ fr:
|
|||
operations:
|
||||
archiver: 'Archiver les dossiers'
|
||||
passer_en_instruction: 'Passer les dossiers en instruction'
|
||||
instruction: Instruire les dossiers
|
||||
accepter: 'Accepter les dossiers'
|
||||
accepter_description: Les usagers seront informés que leur dossier a été accepté
|
||||
refuser: 'Refuser les dossiers'
|
||||
refuser_description: Les usagers seront informés que leur dossier a été refusé
|
||||
classer_sans_suite: 'Classer sans suite les dossiers'
|
||||
classer_sans_suite_description: Les usagers seront informés que leur dossier a été classé sans suite
|
||||
follow: 'Suivre les dossiers'
|
||||
unfollow: 'Ne plus suivre les dossiers'
|
||||
repasser_en_construction: 'Repasser les dossiers en construction'
|
||||
other: Autres actions multiples
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
.dropdown{ data: { controller: 'menu-button', popover: 'true' } }
|
||||
-# Dropdown button title
|
||||
%button.fr-btn.fr-btn--sm.fr-btn--secondary.fr-ml-1w.dropdown-button{ disabled: true, data: { menu_button_target: 'button', batch_operation_target: 'menu' } }
|
||||
Autres actions multiples
|
||||
= t('.operations.other')
|
||||
|
||||
#state-menu.dropdown-content.fade-in-down{ data: { menu_button_target: 'menu' } }
|
||||
%ul.dropdown-items
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
en:
|
||||
labels:
|
||||
instruction: Instruct files
|
|
@ -0,0 +1,3 @@
|
|||
fr:
|
||||
labels:
|
||||
instruction: Instruire les dossiers
|
|
@ -1,31 +1,17 @@
|
|||
- if opt[:operation] == 'accepter'
|
||||
.dropdown{ data: { controller: 'menu-button', popover: 'true', operation: opt[:operation] }, id: 'dropdown_batch' }
|
||||
-# Dropdown button title
|
||||
%button{ disabled: true, class: ['fr-btn fr-btn--sm fr-btn--icon-left fr-ml-1w', icons[opt[:operation].to_sym]], disabled: true, name: "#{form.object_name}[operation]" , data: { menu_button_target: 'button' } }
|
||||
= opt[:label]
|
||||
- if opt.keys.include?(:instruction)
|
||||
= render Dropdown::MenuComponent.new(wrapper: :div, wrapper_options: { data: {controller: 'menu-button', popover: 'true', operation: opt[:operation]} }, menu_options: { id: "dropdown_batch" }, button_options: { class: "fr-btn fr-btn--sm fr-ml-1w"}, role: :region ) do |menu|
|
||||
- menu.with_button_inner_html do
|
||||
= t(".labels.instruction")
|
||||
|
||||
#state-menu.dropdown-content.fade-in-down{ data: { menu_button_target: 'menu' } }
|
||||
%ul.dropdown-items
|
||||
%li.inactive{ 'data-turbo': 'true' }
|
||||
- if opt[:operation] == 'accepter'
|
||||
.wrapper
|
||||
.dropdown-items-link
|
||||
%span{ class: icons[opt[:operation].to_sym] }
|
||||
.dropdown-description
|
||||
%h4= opt[:label]
|
||||
|
||||
.motivation.accept
|
||||
= form.text_area :motivation, class: 'fr-input'
|
||||
#justificatif_motivation_suggest_accept.optional-justificatif
|
||||
%button.fr-btn.fr-btn--sm.fr-btn--tertiary-no-outline.fr-btn--icon-left.fr-icon-attachment-line.fr-ml-0{ type: 'button', onclick: "DS.showImportJustificatif('accept');" } Ajouter un justificatif (optionnel)
|
||||
#justificatif_motivation_import_accept.hidden
|
||||
= form.file_field :justificatif_motivation, direct_upload: true, id: "dossier_justificatif_motivation_accept", onchange: "DS.showDeleteJustificatif('accept');"
|
||||
|
||||
.hidden.js_delete_motivation{ id: "delete_motivation_import_accept" }
|
||||
%button.fr-btn.fr-btn--sm.fr-btn--tertiary-no-outline.fr-btn--icon-left.fr-icon-delete-line.fr-ml-0.fr-mt-1w{ type: 'button', onclick: "DS.deleteJustificatif('accept');" } Supprimer le justificatif
|
||||
|
||||
= button_tag "Annuler", type: :reset, class: 'fr-btn fr-btn--sm fr-btn--secondary', onclick: 'DS.motivationCancelBatch();'
|
||||
= form.button "Valider la décision", class: ['fr-btn fr-btn--sm fr-mt-2w'], disabled: true, name: "#{form.object_name}[operation]", value: opt[:operation]
|
||||
- opt[:instruction].each do |opt|
|
||||
- menu.with_item do
|
||||
= link_to('#', onclick: "DS.showMotivation(event, '#{opt[:operation_class_name]}');", role: 'menuitem') do
|
||||
%span{ class: "icon #{opt[:operation_class_name]}" }
|
||||
.dropdown-description
|
||||
%h4= opt[:label]
|
||||
= opt[:operation_description]
|
||||
|
||||
- menu.with_item(class: "hidden inactive form-inside fr-pt-1v") do
|
||||
= render partial: 'instructeurs/dossiers/instruction_button_motivation_batch', locals: { instruction_operation: opt[:operation_class_name], form:, opt: }
|
||||
- else
|
||||
= form.button opt[:label], class: ['fr-btn fr-btn--sm fr-btn--icon-left fr-ml-1w', icons[opt[:operation].to_sym]], disabled: true, name: "#{form.object_name}[operation]", value: opt[:operation], data: { operation: opt[:operation] }
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
class BatchOperation < ApplicationRecord
|
||||
enum operation: {
|
||||
accepter: 'accepter',
|
||||
refuser: 'refuser',
|
||||
classer_sans_suite: 'classer_sans_suite',
|
||||
archiver: 'archiver',
|
||||
follow: 'follow',
|
||||
passer_en_instruction: 'passer_en_instruction',
|
||||
|
@ -61,6 +63,10 @@ class BatchOperation < ApplicationRecord
|
|||
query.state_en_construction
|
||||
when BatchOperation.operations.fetch(:accepter) then
|
||||
query.state_en_instruction
|
||||
when BatchOperation.operations.fetch(:refuser) then
|
||||
query.state_en_instruction
|
||||
when BatchOperation.operations.fetch(:classer_sans_suite) then
|
||||
query.state_en_instruction
|
||||
when BatchOperation.operations.fetch(:follow) then
|
||||
query.without_followers.en_cours
|
||||
when BatchOperation.operations.fetch(:repasser_en_construction) then
|
||||
|
@ -83,6 +89,10 @@ class BatchOperation < ApplicationRecord
|
|||
dossier.passer_en_instruction(instructeur: instructeur)
|
||||
when BatchOperation.operations.fetch(:accepter)
|
||||
dossier.accepter(instructeur: instructeur, motivation: motivation, justificatif: justificatif_motivation)
|
||||
when BatchOperation.operations.fetch(:refuser)
|
||||
dossier.refuser(instructeur: instructeur, motivation: motivation, justificatif: justificatif_motivation)
|
||||
when BatchOperation.operations.fetch(:classer_sans_suite)
|
||||
dossier.classer_sans_suite(instructeur: instructeur, motivation: motivation, justificatif: justificatif_motivation)
|
||||
when BatchOperation.operations.fetch(:follow)
|
||||
instructeur.follow(dossier)
|
||||
when BatchOperation.operations.fetch(:repasser_en_construction)
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
%div{ class: "motivation #{instruction_operation}" }
|
||||
= form.text_area :motivation, class: 'fr-input'
|
||||
.optional-justificatif{ id: "justificatif_motivation_suggest_#{instruction_operation}" }
|
||||
%button.fr-btn.fr-btn--sm.fr-btn--tertiary-no-outline.fr-btn--icon-left.fr-icon-attachment-line.fr-ml-0{ type: 'button', onclick: "DS.showImportJustificatif('#{instruction_operation}');" } Ajouter un justificatif (optionnel)
|
||||
.hidden{ id: "justificatif_motivation_import_#{instruction_operation}" }
|
||||
= form.file_field :justificatif_motivation, direct_upload: true, id: "dossier_justificatif_motivation_#{instruction_operation}", onchange: "DS.showDeleteJustificatif('#{instruction_operation}');"
|
||||
|
||||
.hidden.js_delete_motivation{ id: "delete_motivation_import_#{instruction_operation}" }
|
||||
%button.fr-btn.fr-btn--sm.fr-btn--tertiary-no-outline.fr-btn--icon-left.fr-icon-delete-line.fr-ml-0.fr-mt-1w{ type: 'button', onclick: "DS.deleteJustificatif('#{instruction_operation}');" } Supprimer le justificatif
|
||||
|
||||
= button_tag "Annuler", type: :reset, class: 'fr-btn fr-btn--sm fr-btn--secondary', onclick: 'DS.motivationCancelBatch();'
|
||||
|
||||
= form.button "Valider la décision", class: ['fr-btn fr-btn--sm fr-mt-2w'], disabled: true, name: "#{form.object_name}[operation]", value: opt[:operation], data: { operation: opt[:operation] }
|
Loading…
Reference in a new issue