demarches-normaliennes/app/components/dossiers/batch_operation_component.rb

169 lines
5.6 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
class Dossiers::BatchOperationComponent < ApplicationComponent
attr_reader :statut, :procedure
def initialize(statut:, procedure:)
@statut = statut
@procedure = procedure
end
def render?
['a-suivre', 'traites', 'suivis', 'archives', 'supprimes', 'expirant'].include?(@statut)
end
def operations_for_dossier(dossier)
case dossier.state
when Dossier.states.fetch(:en_construction)
[BatchOperation.operations.fetch(:passer_en_instruction), BatchOperation.operations.fetch(:repousser_expiration)]
when Dossier.states.fetch(:en_instruction)
[
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), BatchOperation.operations.fetch(:desarchiver), BatchOperation.operations.fetch(:supprimer),
BatchOperation.operations.fetch(:restaurer), BatchOperation.operations.fetch(:repousser_expiration)
]
else
[]
end.append(BatchOperation.operations.fetch(:follow), BatchOperation.operations.fetch(:unfollow))
end
private
def available_operations
case @statut
2023-01-04 11:51:22 +01:00
when 'a-suivre' then
{
options:
[
{
label: t(".operations.passer_en_instruction"),
operation: BatchOperation.operations.fetch(:passer_en_instruction)
},
2023-01-04 11:51:22 +01:00
{
label: t(".operations.follow"),
operation: BatchOperation.operations.fetch(:follow)
}
]
}
2023-11-29 22:36:55 +01:00
when 'archives' then
{
options:
[
{
label: t(".operations.desarchiver"),
operation: BatchOperation.operations.fetch(:desarchiver)
}
]
}
when 'traites' then
{
options:
[
{
label: t(".operations.archiver"),
operation: BatchOperation.operations.fetch(:archiver)
2023-11-16 10:30:16 +01:00
},
{
label: t(".operations.supprimer"),
operation: BatchOperation.operations.fetch(:supprimer)
}
]
}
when 'expirant' then
{
options:
[
{
label: t(".operations.repousser_expiration"),
operation: BatchOperation.operations.fetch(:repousser_expiration)
}
]
}
when 'supprimes' then
2023-11-29 19:40:51 +01:00
{
options:
[
{
label: t(".operations.restaurer"),
operation: BatchOperation.operations.fetch(:restaurer)
}
]
}
when 'suivis' then
{
options:
[
{
label: t(".operations.passer_en_instruction"),
operation: BatchOperation.operations.fetch(:passer_en_instruction)
},
{
instruction:
[
{
label: t(".operations.accepter"),
operation_description: t(".operations.accepter_description"),
operation: BatchOperation.operations.fetch(:accepter),
operation_class_name: 'fr-icon-checkbox-circle-fill fr-text-default--success',
placeholder: t(".placeholders.accepter"),
instruction_operation: 'accept'
},
{
label: t(".operations.classer_sans_suite"),
operation_description: t(".operations.classer_sans_suite_description"),
operation: BatchOperation.operations.fetch(:classer_sans_suite),
operation_class_name: 'fr-icon-intermediate-circle-fill fr-text-mention--grey',
placeholder: t(".placeholders.classer_sans_suite"),
instruction_operation: 'without-continuation'
},
{
label: t(".operations.refuser"),
operation_description: t(".operations.refuser_description"),
operation: BatchOperation.operations.fetch(:refuser),
operation_class_name: 'fr-icon-close-circle-fill fr-text-default--warning',
placeholder: t(".placeholders.refuser"),
instruction_operation: 'refuse'
}
]
},
2023-01-13 15:09:24 +01:00
{
label: t(".operations.unfollow"),
operation: BatchOperation.operations.fetch(:unfollow)
},
{
label: t(".operations.repasser_en_construction"),
operation: BatchOperation.operations.fetch(:repasser_en_construction)
}
]
}
else
{
options: []
}
end
end
2022-12-12 10:28:23 +01:00
def icons
{
2023-01-04 11:51:22 +01:00
accepter: 'fr-icon-success-line',
2022-12-12 10:28:23 +01:00
archiver: 'fr-icon-folder-2-line',
2023-11-29 22:36:55 +01:00
desarchiver: 'fr-icon-upload-2-line',
2023-01-04 11:51:22 +01:00
follow: 'fr-icon-star-line',
passer_en_instruction: 'fr-icon-edit-line',
2023-01-13 15:09:24 +01:00
repasser_en_construction: 'fr-icon-draft-line',
2023-11-16 10:30:16 +01:00
supprimer: 'fr-icon-delete-line',
2023-11-29 19:40:51 +01:00
restaurer: 'fr-icon-refresh-line',
2023-01-13 15:09:24 +01:00
unfollow: 'fr-icon-star-fill'
2022-12-12 10:28:23 +01:00
}
end
end