Bom dia a todos. Tenho uma classe que tem dois métodos. No primeiro método, baseado no TipoResponsavel do objeto Mandato, eu defino o nível da responsabilidade(cada Nível pode desempenhar algumas funções).
No segundo método, eu faço uma verificação, para o sistema de acordo com alguns tipos de responsável tem prazo para se cadastrar sob penalidade de multa, já outros tipos de responsável são isentos de prazo.
O código abaixo funciona, mas estou achando bem ruimzinho, ele não está orientado a objetos, pois estou fazendo tudo hardcoded, com muitos ifs e fazendo comparações diretamente com os ids dos objetos. Pelos cursos da Alura acredito que um padrão que eu poderia usar era Strategy, mas não estou conseguindo vislumbrar como aplicar isso neste meu código(As classes envolvidas são entidades JPA). Alguma sugestão de como proceder? Agradeço.
public class UtilResponsabilidade {
public Responsabilidade AtribuirNivelResponsabilidade(Mandato mandato, Responsabilidade responsabilidade){
//nivel 1 - ente(visualiza tudo)
//nivel 2 - poder
//nivel 3 - unidade
//nivel 4 - consulta
if (mandato.getTipoResponsavel().getTipoResponsavelId() == 1){
// Chefe dos Poderes
responsabilidade.setNivel(new Nivel(1));
}else if (mandato.getTipoResponsavel().getTipoResponsavelId() == 2){
// Titular de Secretaria de Governo
responsabilidade.setNivel((new Nivel(1));
}else if(mandato.getTipoResponsavel().getTipoResponsavelId() == 6){
// Contador
responsabilidade.setNivel((new Nivel(2));
}else if(mandato.getTipoResponsavel().getTipoResponsavelId() == 7){
// Agente Responsável por Procedimento Licitatório
responsabilidade.setNivel((new Nivel(1));
}else if(mandato.getTipoResponsavel().getTipoResponsavelId() == 34){
// Procurador
responsabilidade.setNivel((new Nivel(1));
}else if(mandato.getTipoResponsavel().getTipoResponsavelId() == 35){
// Assessores Jurídicos e/ou Advogados
responsabilidade.setNivel((new Nivel(3));
}else if(mandato.getTipoResponsavel().getTipoResponsavelId() == 38){
// Superintendente
responsabilidade.setNivel((new Nivel(1));
}else if(mandato.getTipoResponsavel().getTipoResponsavelId() == 47){
// Usuário SAAE
responsabilidade.setNivel((new Nivel(1));
}else {
responsabilidade.setNivel((new Nivel(4));
}
return responsabilidade;
}
public Boolean isCadastroForaPrazo(Date hoje, Mandato mandato){
if((((hoje.getTime() - mandato.getDataInicio().getTime()) / 1000 / 60 / 60 / 24) > 60)
&& (mandato.getTipoResponsavel().getTipoResponsavelId() != 45) // Usuário Sap
&& (mandato.getTipoResponsavel().getTipoResponsavelId() != 37) // Usuário Scon
&& (mandato.getTipoResponsavel().getTipoResponsavelId() != 47) // Usuário SAAE
&& (mandato.getTipoResponsavel().getTipoResponsavelId() != 53)//USUARIO CESMA
&& (mandato.getTipoResponsavel().getTipoResponsavelId() != 52)){ // Usuário SAP
return true;
}
return false;
}
}