Skip to content

Instantly share code, notes, and snippets.

@lucasvalhos
Created June 7, 2022 20:51
Show Gist options
  • Save lucasvalhos/e5908ff4304176ead2c973da0b2993a4 to your computer and use it in GitHub Desktop.
Save lucasvalhos/e5908ff4304176ead2c973da0b2993a4 to your computer and use it in GitHub Desktop.
public class AcaoMarketingController {
/**
* RF-001
* Não é permitido criar uma nova ação de marketing
* com o status diferente de 'Não iniciado'.
*/
public static void validaCriacaoStatus(List<AcaoMarketing__c> acoes){
for(AcaoMarketing__c acao : acoes){
if(acao.StatusAcao__c != 'Não iniciada'){
acao.addError('Não é permitido criar uma nova ação de marketing com o status diferente de Não iniciado');
}
}
}
/**
* RF-002
*
* Se o tipo de ação (TipoAcao__c) for igual a Envio de Brinde
* ou Convite para Evento, preencha o campo Detalhe do Tipo (DetalheTipo__c).
*/
public static void validaTipoAcao(List<AcaoMarketing__c> acoes){
for(AcaoMarketing__c acao : acoes){
if(acao.TipoAcao__c != null && (acao.TipoAcao__c.contains('Envio de Brinde') || acao.TipoAcao__c.contains('Convite para Evento')) && (acao.DetalheTipo__c == null || acao.DetalheTipo__c.trim() == '')){
acao.addError('Se o tipo de ação for igual a Envio de Brinde ou Convite para Evento, preencha o campo Detalhe do Tipo.');
}
}
}
/**
* RF-003
*
* Não pode criar ação de envio de email para contatos que não autorizaram o envio.
*/
public static void checarSeContatoAutorizouEnvioDeEmail(List<AcaoMarketing__c> acoes){
Set<Id> idsContatos = new Set<Id>();
for(AcaoMarketing__c acao : acoes){
if(acao.TipoAcao__c != null && acao.TipoAcao__c.contains('Envio de Email') && acao.Contato__c != null){
idsContatos.add(acao.Contato__c);
}
}
List<Contact> contatos = [SELECT Id, AutorizouEnvioEmail__c FROM Contact WHERE Id IN :idsContatos];
Map<Id,Boolean> mapaContatos = new Map<Id,Boolean>();
for(Contact contato : contatos){
mapaContatos.put(contato.Id, contato.AutorizouEnvioEmail__c);
}
for(AcaoMarketing__c acao : acoes){
if(acao.TipoAcao__c != null && acao.TipoAcao__c.contains('Envio de Email') && acao.Contato__c != null){
if(!mapaContatos.get(acao.Contato__c)){
acao.addError('O contato não autorizou envio de email');
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment