Skip to content

Commit

Permalink
Merge branch 'GITHUBdevelop' into GITHUBrelease
Browse files Browse the repository at this point in the history
  • Loading branch information
dinarde committed Apr 26, 2021
2 parents d44a475 + 3bda8fc commit fbf1f24
Show file tree
Hide file tree
Showing 90 changed files with 1,101 additions and 314 deletions.
276 changes: 272 additions & 4 deletions siga-cp/src/main/java/br/gov/jfrj/siga/cp/bl/CpBL.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.InvocationTargetException;
import java.nio.charset.StandardCharsets;
import java.security.NoSuchAlgorithmException;
import java.time.LocalDate;
Expand All @@ -33,8 +34,10 @@
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Optional;
import java.util.regex.Pattern;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;
import org.hibernate.exception.ConstraintViolationException;
Expand Down Expand Up @@ -1074,22 +1077,22 @@ public InputStream uploadLotacao(File file, CpOrgaoUsuario orgaoUsuario, String
return excel.uploadLotacao(file, orgaoUsuario, extensao, cadastrante);
}

public InputStream uploadFuncao(File file, CpOrgaoUsuario orgaoUsuario, String extensao) {
public InputStream uploadFuncao(File file, CpOrgaoUsuario orgaoUsuario, String extensao, final CpIdentidade identidadeCadastrante) {
InputStream inputStream = null;
try {
Excel excel = new Excel();
inputStream = excel.uploadFuncao(file, orgaoUsuario, extensao);
inputStream = excel.uploadFuncao(file, orgaoUsuario, extensao, identidadeCadastrante);
} catch (Exception e) {

}
return inputStream;
}

public InputStream uploadCargo(File file, CpOrgaoUsuario orgaoUsuario, String extensao) {
public InputStream uploadCargo(File file, CpOrgaoUsuario orgaoUsuario, String extensao,final CpIdentidade identidadeCadastrante) {
InputStream inputStream = null;
try {
Excel excel = new Excel();
inputStream = excel.uploadCargo(file, orgaoUsuario, extensao);
inputStream = excel.uploadCargo(file, orgaoUsuario, extensao,identidadeCadastrante);
} catch (Exception e) {

}
Expand Down Expand Up @@ -1927,4 +1930,269 @@ public void copiarPessoa(DpPessoa pesAnt, DpPessoa pesNova) {
pesNova.setIdePessoa(pesAnt.getIdePessoa());
}


public DpCargo gravarCargo(final CpIdentidade identidadeCadastrante, final Long id, final String nmCargo, final Long idOrgaoUsu, final Boolean isAtivo) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {

if (identidadeCadastrante == null) {
throw new AplicacaoException("Não é possível cadastrar ou alterar o cargo sem que seja informado o cadastrante.");
}

DpCargo cargo = null;
DpCargo cargoNovo = new DpCargo();
Date dt = dao().consultarDataEHoraDoServidor();

if (id != null && id > 0) {
cargo = dao().consultar(id, DpCargo.class, false);
if (cargo == null) {
throw new AplicacaoException("Cargo informado não localizado.");
}
PropertyUtils.copyProperties(cargoNovo, cargo); //Copia cargo existente para novo registro
cargoNovo.setId(null);
} else {
cargoNovo.setDataInicio(dt);
}

CpOrgaoUsuario orgaoUsuario = new CpOrgaoUsuario();
if(idOrgaoUsu == null && cargoNovo.getOrgaoUsuario() == null)
throw new AplicacaoException("Órgão não informado.");
else {
if (idOrgaoUsu != null && idOrgaoUsu != 0) {

orgaoUsuario = dao().consultar(idOrgaoUsu, CpOrgaoUsuario.class, false);
if (orgaoUsuario == null) {
throw new AplicacaoException("Órgão informado não localizado.");
}

if (cargoNovo.getOrgaoUsuario() != null && !orgaoUsuario.getIdOrgaoUsu().equals(cargoNovo.getOrgaoUsuario().getIdOrgaoUsu())) {

List<DpPessoa> listaPessoasNoCargo = null;
listaPessoasNoCargo = CpDao.getInstance().consultarPessoasComCargo(id);

if (listaPessoasNoCargo != null && !listaPessoasNoCargo.isEmpty()) {
throw new AplicacaoException("Não é possível alterar o Órgão do Cargo após o vínculo com Pessoas.");
}
}
cargoNovo.setOrgaoUsuario(orgaoUsuario);
}

}


if(nmCargo == null && cargoNovo.getNomeCargo() == null)
throw new AplicacaoException("Nome do cargo não informado");
else {
if(nmCargo != null) {
if (!nmCargo.matches("[a-zA-ZàáâãéêíóôõúçÀÁÂÃÉÊÍÓÔÕÚÇ 0-9-/.]+"))
throw new AplicacaoException("Nome com caracteres não permitidos");

cargoNovo.setNomeCargo(Texto.removerEspacosExtra(nmCargo).trim());

DpCargo cargoNomeOrgao = new DpCargo();
cargoNomeOrgao = CpDao.getInstance().consultarPorNomeOrgao(cargoNovo);
if(cargoNomeOrgao != null && !cargoNomeOrgao.equals(cargo)) {
throw new AplicacaoException("Nome do cargo já cadastrado neste órgão!");
}
cargoNomeOrgao = null;

}
}

List<DpPessoa> pessoasAtivasCargo = null;
if (cargo != null) {
//Consulta pessoas ativas para o cargo.
//Se for Inativação. Não permite inativar com pessoas ativas
//Se for alteração. Aplica a troca do cargo para as pessoas ativas.
final DpPessoaDaoFiltro flt = new DpPessoaDaoFiltro();
flt.setCargo(cargo);
flt.setIdOrgaoUsu(cargoNovo.getOrgaoUsuario().getIdOrgaoUsu());
flt.setNome("");
pessoasAtivasCargo = CpDao.getInstance().consultarPorFiltro(flt);
}

if (isAtivo != null) {
if (isAtivo) {
cargoNovo.setDataFimCargo(null);
cargoNovo.setHisIdcFim(null);
} else {

if (pessoasAtivasCargo != null && !pessoasAtivasCargo.isEmpty()) {
throw new AplicacaoException(String.format("Não é possível realizar a operação, pois existe %s vinculado ao cadastro.",SigaMessages.getMessage("usuario.matricula")),0);
}
cargoNovo.setDataFimCargo(dt);
}
}

//Persistindo as alterações
try {
dao().gravarComHistorico(cargoNovo, cargo, dt, identidadeCadastrante);

//Aplica cargo alterado nas pessoas ativas do cargo anterior.
if (pessoasAtivasCargo != null && !pessoasAtivasCargo.isEmpty()) {
DpPessoa pessoaNovo = new DpPessoa();
for (DpPessoa pessoaAtual : pessoasAtivasCargo) {
copiarPessoa(pessoaAtual,pessoaNovo); //copyProperty não funciona, pois DpPessoa é um Bean despadronizado

if (pessoaNovo != null) {
pessoaNovo.setCargo(cargoNovo);
pessoaNovo.setLotacao(pessoaAtual.getLotacao());
dao().gravarComHistorico(pessoaNovo, pessoaAtual, dt, identidadeCadastrante);
}

}
}


} catch (final Exception e) {
throw e;
}

return cargoNovo;

}

public DpFuncaoConfianca gravarFuncaoConfianca(final CpIdentidade identidadeCadastrante, final Long id, final String nmFuncaoConfianca, final Long idOrgaoUsu, final Boolean isAtivo) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
if (identidadeCadastrante == null) {
throw new AplicacaoException("Não é possível cadastrar ou alterar o cargo sem que seja informado o cadastrante.");
}

DpFuncaoConfianca funcaoConfianca = null;
DpFuncaoConfianca funcaoConfiancaNovo = new DpFuncaoConfianca();
Date dt = dao().consultarDataEHoraDoServidor();

if (id != null && id > 0) {
funcaoConfianca = dao().consultar(id, DpFuncaoConfianca.class, false);
if (funcaoConfianca == null) {
throw new AplicacaoException("Função de Confiança informada não localizada.");
}
PropertyUtils.copyProperties(funcaoConfiancaNovo, funcaoConfianca); //Copia Funcao de Confianca existente para novo registro
funcaoConfiancaNovo.setId(null);
} else {
funcaoConfiancaNovo.setDataInicio(dt);
}


CpOrgaoUsuario orgaoUsuario = new CpOrgaoUsuario();
if(idOrgaoUsu == null && funcaoConfiancaNovo.getOrgaoUsuario() == null)
throw new AplicacaoException("Órgão não informado.");
else {
if (idOrgaoUsu != null && idOrgaoUsu != 0) {

orgaoUsuario = dao().consultar(idOrgaoUsu, CpOrgaoUsuario.class, false);
if (orgaoUsuario == null) {
throw new AplicacaoException("Órgão informado não localizado.");
}

if (funcaoConfiancaNovo.getOrgaoUsuario() != null && !orgaoUsuario.getIdOrgaoUsu().equals(funcaoConfiancaNovo.getOrgaoUsuario().getIdOrgaoUsu())) {

List<DpPessoa> listaPessoasNaFuncaoConfianca = null;
listaPessoasNaFuncaoConfianca= CpDao.getInstance().consultarPessoasComFuncaoConfianca(id);

if (listaPessoasNaFuncaoConfianca != null && !listaPessoasNaFuncaoConfianca.isEmpty()) {
throw new AplicacaoException("Não é possível alterar o Órgão da Função de Confiança após o vínculo com Pessoas.");
}
}
funcaoConfiancaNovo.setOrgaoUsuario(orgaoUsuario);
}

}

if(nmFuncaoConfianca == null && funcaoConfiancaNovo.getNomeFuncao() == null)
throw new AplicacaoException("Nome da Função de Confiança não informado.");
else {
if(nmFuncaoConfianca != null) {
if (!nmFuncaoConfianca.matches(Texto.FuncaoConfianca.REGEX_CARACTERES_PERMITIDOS))
throw new AplicacaoException("Nome com caracteres não permitidos.");

funcaoConfiancaNovo.setNomeFuncao(Texto.removerEspacosExtra(nmFuncaoConfianca).trim());

DpFuncaoConfianca funcaoConfiancaNomeOrgao = new DpFuncaoConfianca();
funcaoConfiancaNomeOrgao = CpDao.getInstance().consultarPorNomeOrgao(funcaoConfiancaNovo);
if(funcaoConfiancaNomeOrgao != null && !funcaoConfiancaNomeOrgao.equals(funcaoConfianca)) {
throw new AplicacaoException("Nome do cargo já cadastrado neste órgão!");
}
funcaoConfiancaNomeOrgao = null;

}
}

List<DpPessoa> pessoasAtivasFuncaoConfianca = null;

if (funcaoConfianca != null) {
//Consulta pessoas ativas para a Função de Confiança.
//Se for Inativação. Não permite inativar com pessoas ativas
//Se for alteração. Aplica a troca da Função de Confiança para as pessoas ativas.
final DpPessoaDaoFiltro flt = new DpPessoaDaoFiltro();
flt.setFuncaoConfianca(funcaoConfianca);
flt.setIdOrgaoUsu(funcaoConfiancaNovo.getOrgaoUsuario().getIdOrgaoUsu());
flt.setNome("");
pessoasAtivasFuncaoConfianca = CpDao.getInstance().consultarPorFiltro(flt);
}

if (isAtivo != null) {
if (isAtivo) {
funcaoConfiancaNovo.setDataFimFuncao(null);
funcaoConfiancaNovo.setHisIdcFim(null);
} else {

if (pessoasAtivasFuncaoConfianca != null && !pessoasAtivasFuncaoConfianca.isEmpty()) {
throw new AplicacaoException(String.format("Não é possível realizar a operação, pois existe %s vinculado ao cadastro.",SigaMessages.getMessage("usuario.matricula")),0);
}
funcaoConfiancaNovo.setDataFimFuncao(dt);
}
}

//Persistindo as alterações
try {
dao().gravarComHistorico(funcaoConfiancaNovo, funcaoConfianca, dt, identidadeCadastrante);

//Aplica cargo alterado nas pessoas ativas do cargo anterior.
if (pessoasAtivasFuncaoConfianca != null && !pessoasAtivasFuncaoConfianca.isEmpty()) {
DpPessoa pessoaNovo = new DpPessoa();
for (DpPessoa pessoaAtual : pessoasAtivasFuncaoConfianca) {
copiarPessoa(pessoaAtual,pessoaNovo); //copyProperty não funciona, pois DpPessoa é um Bean despadronizado

if (pessoaNovo != null) {
pessoaNovo.setFuncaoConfianca(funcaoConfiancaNovo);
pessoaNovo.setLotacao(pessoaAtual.getLotacao());
dao().gravarComHistorico(pessoaNovo, pessoaAtual, dt, identidadeCadastrante);
}

}
}


} catch (final Exception e) {
throw e;
}

return funcaoConfiancaNovo;
}

public void excluirCargo(final DpCargo cargo) {
try {
if (cargo == null )
throw new AplicacaoException("Cargo não informado.");
if (!cargo.getId().equals(cargo.getIdCargoIni()))
throw new AplicacaoException("Não é possível excluir um cargo que já foi alterado. Favor tentar inativar o cargo.");
dao().excluir(cargo);
} catch (final Exception e) {
throw e;
}

}

public void excluirFuncaoConfianca(final DpFuncaoConfianca funcaoConfianca) {
try {
if (funcaoConfianca == null )
throw new AplicacaoException("Função de Confiança não informada.");
if (!funcaoConfianca.getId().equals(funcaoConfianca.getIdFuncaoIni()))
throw new AplicacaoException("Não é possível excluir uma função de confiança que já foi alterada. Favor tentar inativar a função de confiança.");
dao().excluir(funcaoConfianca);
} catch (final Exception e) {
throw e;
}

}


}
Loading

0 comments on commit fbf1f24

Please sign in to comment.