, Correçoes UX consolidaçoes e de backa-end
This commit is contained in:
@@ -284,6 +284,37 @@ class ConsolidacoesController < ApplicationController
|
||||
redirect_to consolidacoes_path, notice: 'Consolidação arquivada.'
|
||||
end
|
||||
|
||||
# POST /consolidacoes/arquivar_em_lote — arquiva as consolidações marcadas na
|
||||
# lista. Mesma regra do arquivar de uma só (nenhuma trava extra): arquivar é
|
||||
# REVERSÍVEL (Arquivadas → Reativar), então o lote não precisa de confirmação
|
||||
# mais dura do que a de uma — o que ele precisa é dizer QUANTAS foram.
|
||||
#
|
||||
# Ignora em silêncio id que não está mais ativo (alguém arquivou pela outra
|
||||
# aba enquanto a lista estava aberta): o resultado que o operador queria — "essas
|
||||
# saem da lista" — já é o que está na tela, e erro aqui só assustaria à toa.
|
||||
def arquivar_em_lote
|
||||
authorize Consolidacao, :arquivar?
|
||||
|
||||
ids = Array(params[:ids]).map(&:to_i).reject(&:zero?)
|
||||
if ids.empty?
|
||||
return redirect_back fallback_location: consolidacoes_path,
|
||||
alert: 'Marque ao menos uma consolidação para arquivar.'
|
||||
end
|
||||
|
||||
alvos = Consolidacao.ativas.where(id: ids).to_a
|
||||
alvos.each do |c|
|
||||
c.arquivar!(current_user)
|
||||
auditar!(:arquivar, c, dados_novos: { em_lote: true, total_do_lote: alvos.size })
|
||||
end
|
||||
|
||||
aviso = case alvos.size
|
||||
when 0 then 'Nenhuma das consolidações marcadas continuava ativa.'
|
||||
when 1 then "1 consolidação arquivada. Você pode restaurar em \"Arquivadas\"."
|
||||
else "#{alvos.size} consolidações arquivadas. Você pode restaurar em \"Arquivadas\"."
|
||||
end
|
||||
redirect_back fallback_location: consolidacoes_path, notice: aviso
|
||||
end
|
||||
|
||||
# GET /consolidacoes/arquivadas — histórico de consolidações arquivadas
|
||||
def arquivadas
|
||||
authorize Consolidacao
|
||||
|
||||
Reference in New Issue
Block a user