Implantação da geração de mensagem de forma livre e mudança na engine de mensagem
This commit is contained in:
77
app/controllers/admin/contatos_controller.rb
Normal file
77
app/controllers/admin/contatos_controller.rb
Normal file
@@ -0,0 +1,77 @@
|
||||
# app/controllers/admin/contatos_controller.rb
|
||||
#
|
||||
# Cadastro manual de quem recebe as mensagens: nome, WhatsApp e/ou e-mail, e o
|
||||
# grupo. O telefone é normalizado para E.164 no model — o ADM digita como quiser.
|
||||
class Admin::ContatosController < ApplicationController
|
||||
before_action :set_contato, only: %i[edit update destroy]
|
||||
before_action :carregar_grupos, only: %i[new create edit update]
|
||||
|
||||
def index
|
||||
authorize Contato
|
||||
@grupos = GrupoContato.ordenados
|
||||
escopo = policy_scope(Contato).includes(:grupo_contato)
|
||||
escopo = escopo.where(grupo_contato_id: params[:grupo_id]) if params[:grupo_id].present?
|
||||
escopo = escopo.where('LOWER(nome) LIKE :q OR telefone LIKE :q OR LOWER(email) LIKE :q',
|
||||
q: "%#{params[:q].to_s.strip.downcase}%") if params[:q].present?
|
||||
@contatos = escopo.ordenados
|
||||
end
|
||||
|
||||
def new
|
||||
@contato = Contato.new(grupo_contato_id: params[:grupo_id])
|
||||
authorize @contato
|
||||
end
|
||||
|
||||
def create
|
||||
@contato = Contato.new(contato_params)
|
||||
authorize @contato
|
||||
|
||||
if @contato.save
|
||||
registrar("Cadastrou contato #{@contato.nome}")
|
||||
redirect_to admin_contatos_path, notice: 'Contato cadastrado.'
|
||||
else
|
||||
render :new, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
authorize @contato
|
||||
end
|
||||
|
||||
def update
|
||||
authorize @contato
|
||||
|
||||
if @contato.update(contato_params)
|
||||
registrar("Editou contato #{@contato.nome}")
|
||||
redirect_to admin_contatos_path, notice: 'Contato atualizado.'
|
||||
else
|
||||
render :edit, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
authorize @contato
|
||||
nome = @contato.nome
|
||||
@contato.destroy
|
||||
registrar("Excluiu contato #{nome}")
|
||||
redirect_to admin_contatos_path, notice: 'Contato removido.'
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_contato
|
||||
@contato = Contato.find(params[:id])
|
||||
end
|
||||
|
||||
def carregar_grupos
|
||||
@grupos = GrupoContato.ativos.ordenados
|
||||
end
|
||||
|
||||
def contato_params
|
||||
params.require(:contato).permit(:nome, :telefone, :email, :grupo_contato_id, :ativo, :observacao)
|
||||
end
|
||||
|
||||
def registrar(detalhes)
|
||||
AuditoriaLog.registrar(user: current_user, acao: 'contato', entidade: 'Contato',
|
||||
dados_novos: { detalhes: detalhes }, request: request)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user