Created
June 7, 2022 20:51
-
-
Save lucasvalhos/e5908ff4304176ead2c973da0b2993a4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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