Implantação da geração de mensagem de forma livre e mudança na engine de mensagem
This commit is contained in:
74
app/controllers/admin/grupos_contato_controller.rb
Normal file
74
app/controllers/admin/grupos_contato_controller.rb
Normal file
@@ -0,0 +1,74 @@
|
||||
# app/controllers/admin/grupos_contato_controller.rb
|
||||
#
|
||||
# Grupos de destinatários. É o grupo que assina os eventos, então cadastrar
|
||||
# alguém novo é escolher o grupo — não repetir a configuração pessoa por pessoa.
|
||||
class Admin::GruposContatoController < ApplicationController
|
||||
before_action :set_grupo, only: %i[edit update destroy]
|
||||
|
||||
def index
|
||||
authorize GrupoContato
|
||||
@grupos = policy_scope(GrupoContato).ordenados
|
||||
.includes(:contatos, assinaturas: :evento_notificacao)
|
||||
end
|
||||
|
||||
def new
|
||||
@grupo = GrupoContato.new
|
||||
authorize @grupo
|
||||
end
|
||||
|
||||
def create
|
||||
@grupo = GrupoContato.new(grupo_params)
|
||||
authorize @grupo
|
||||
|
||||
if @grupo.save
|
||||
registrar("Criou grupo de contatos #{@grupo.nome}")
|
||||
redirect_to admin_grupos_path, notice: 'Grupo criado.'
|
||||
else
|
||||
render :new, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
authorize @grupo
|
||||
end
|
||||
|
||||
def update
|
||||
authorize @grupo
|
||||
|
||||
if @grupo.update(grupo_params)
|
||||
registrar("Editou grupo de contatos #{@grupo.nome}")
|
||||
redirect_to admin_grupos_path, notice: 'Grupo atualizado.'
|
||||
else
|
||||
render :edit, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
authorize @grupo
|
||||
|
||||
# `dependent: :nullify`: os contatos NÃO são apagados junto — ficam sem
|
||||
# grupo e param de receber, o que é reversível. Apagar pessoas porque o
|
||||
# grupo saiu seria destrutivo demais para um clique.
|
||||
nome = @grupo.nome
|
||||
orfaos = @grupo.contatos.count
|
||||
@grupo.destroy
|
||||
registrar("Excluiu grupo de contatos #{nome} (#{orfaos} contato(s) ficaram sem grupo)")
|
||||
redirect_to admin_grupos_path,
|
||||
notice: "Grupo removido. #{orfaos} contato(s) ficaram sem grupo e não recebem mais."
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_grupo
|
||||
@grupo = GrupoContato.find(params[:id])
|
||||
end
|
||||
|
||||
def grupo_params
|
||||
params.require(:grupo_contato).permit(:nome, :descricao, :ativo)
|
||||
end
|
||||
|
||||
def registrar(detalhes)
|
||||
AuditoriaLog.registrar(user: current_user, acao: 'grupo_contato', entidade: 'GrupoContato',
|
||||
dados_novos: { detalhes: detalhes }, request: request)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user