package br.com.ec.domain.dto;
import java.util.Calendar;
import java.util.List;
import javax.persistence.Transient;
import org.primefaces.model.charts.bar.BarChartModel;
import org.primefaces.model.charts.pie.PieChartModel;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.grafico.GraficoBarraDTO;
import br.com.ec.domain.model.tipos.TipoFuncionarioEvento;
public class FuncionarioDTO
{
private Long sequencialFuncionario
;
private PessoaDTO pessoaDTO
;
private Integer codigoContabilidade
;
/*
private Long sequencial;
private Pessoa pessoa;
private Date admissao;
private Date demissao;
private String pis;
private String ctps;
private String ctpsSerie;
private String ctpsUf;
private Double salario;
private String tipoComissionamento;
private String tamanhoFardamento;
private Boolean primeiroEmprego;
private Boolean optantePeloFGTS;
private Boolean ativo;
*/
private UsuarioDTO usuarioDTO
;
private List<PessoaPapelDTO
> papeisDTO
;
private List<EnderecoDTO
> enderecosDTO
;
private VendedorDTO vendedorDTO
;
private Boolean funcionarioAdmitido
;
private List<FuncionarioFeriasDTO
> feriasDTO
;
private VigenciaDTO vigenciaEscalaDTO
;
private List<FuncionarioEscalaDTO
> listaFuncionarioEscalaDTO
;
private List<FuncionarioEventoDTO
> listaFuncionarioEventoDTO
;
private List<BancoHorasDTO
> listaBancoHorasDTO
;
private List<BancoHorasDTO
> listaBancoHorasDTOAnoVigente
;
public FuncionarioDTO
() {}
public static String CONSULTA_DTO_COMPLETA =
"e.sequencial, e.pessoa.sequencial, e.pessoa.nome";
public FuncionarioDTO
(Long sequencialFuncionario,
Long sequencialPessoa,
String nome
) {
super();
this.
sequencialFuncionario = sequencialFuncionario
;
this.
pessoaDTO =
new PessoaDTO
(sequencialPessoa, nome
);
}
public FuncionarioDTO
(Long sequencialFuncionario,
Long sequencialPessoa,
String nome,
String emailFuncionario,
Integer codigoContabilidade
) {
super();
this.
sequencialFuncionario = sequencialFuncionario
;
this.
pessoaDTO =
new PessoaDTO
(sequencialPessoa, nome, emailFuncionario
);
this.
codigoContabilidade = codigoContabilidade
;
}
private Long sequencialUsuario
;
private List<AvaliacaoFuncionarioDTO
> avaliacoesDTO
;
private List<ExameFuncionarioDTO
> examesDTO
;
private List<AtestadoFuncionarioDTO
> atestadosDTO
;
private List<PontoDTO
> pontosDTO
;
private FuncionarioCustosDTO custosDTO
;
private GraficoBarraDTO graficoCustos
;
private PieChartModel graficoTiposProdutos
;
private PieChartModel graficoFormasPagamento
;
private BarChartModel graficoComparativoCustosLucro
;
public Long getSequencialFuncionario
() {
return sequencialFuncionario
;
}
public void setSequencialFuncionario
(Long sequencialFuncionario
) {
this.
sequencialFuncionario = sequencialFuncionario
;
}
public PessoaDTO getPessoaDTO
() {
return pessoaDTO
;
}
public void setPessoaDTO
(PessoaDTO pessoaDTO
) {
this.
pessoaDTO = pessoaDTO
;
}
public Integer getCodigoContabilidade
() {
return codigoContabilidade
;
}
public void setCodigoContabilidade
(Integer codigoContabilidade
) {
this.
codigoContabilidade = codigoContabilidade
;
}
public UsuarioDTO getUsuarioDTO
() {
return usuarioDTO
;
}
public void setUsuarioDTO
(UsuarioDTO usuarioDTO
) {
this.
usuarioDTO = usuarioDTO
;
}
public List<PessoaPapelDTO
> getPapeisDTO
() {
return papeisDTO
;
}
public void setPapeisDTO
(List<PessoaPapelDTO
> papeisDTO
) {
this.
papeisDTO = papeisDTO
;
}
public List<EnderecoDTO
> getEnderecosDTO
() {
return enderecosDTO
;
}
public void setEnderecosDTO
(List<EnderecoDTO
> enderecosDTO
) {
this.
enderecosDTO = enderecosDTO
;
}
public VendedorDTO getVendedorDTO
() {
return vendedorDTO
;
}
public void setVendedorDTO
(VendedorDTO vendedorDTO
) {
this.
vendedorDTO = vendedorDTO
;
}
/***************************************************/
public Boolean getFuncionarioAdmitido
() {
return funcionarioAdmitido
;
}
public void setFuncionarioAdmitido
(Boolean funcionarioAdmitido
) {
this.
funcionarioAdmitido = funcionarioAdmitido
;
}
public List<FuncionarioFeriasDTO
> getFeriasDTO
() {
return feriasDTO
;
}
public void setFeriasDTO
(List<FuncionarioFeriasDTO
> feriasDTO
) {
this.
feriasDTO = feriasDTO
;
}
public VigenciaDTO getVigenciaEscalaDTO
() {
return vigenciaEscalaDTO
;
}
public void setVigenciaEscalaDTO
(VigenciaDTO vigenciaEscalaDTO
) {
this.
vigenciaEscalaDTO = vigenciaEscalaDTO
;
}
public List<FuncionarioEscalaDTO
> getListaFuncionarioEscalaDTO
() {
return listaFuncionarioEscalaDTO
;
}
public void setListaFuncionarioEscalaDTO
(List<FuncionarioEscalaDTO
> listaFuncionarioEscalaDTO
) {
this.
listaFuncionarioEscalaDTO = listaFuncionarioEscalaDTO
;
}
public List<FuncionarioEventoDTO
> getListaFuncionarioEventoDTO
() {
return listaFuncionarioEventoDTO
;
}
public void setListaFuncionarioEventoDTO
(List<FuncionarioEventoDTO
> listaFuncionarioEventoDTO
) {
this.
listaFuncionarioEventoDTO = listaFuncionarioEventoDTO
;
}
public List<BancoHorasDTO
> getListaBancoHorasDTO
() {
return listaBancoHorasDTO
;
}
public void setListaBancoHorasDTO
(List<BancoHorasDTO
> listaBancoHorasDTO
) {
this.
listaBancoHorasDTO = listaBancoHorasDTO
;
}
public List<BancoHorasDTO
> getListaBancoHorasDTOAnoVigente
() {
return listaBancoHorasDTOAnoVigente
;
}
public void setListaBancoHorasDTOAnoVigente
(List<BancoHorasDTO
> listaBancoHorasDTOAnoVigente
) {
this.
listaBancoHorasDTOAnoVigente = listaBancoHorasDTOAnoVigente
;
}
public Long getSequencialUsuario
() {
return sequencialUsuario
;
}
public void setSequencialUsuario
(Long sequencialUsuario
) {
this.
sequencialUsuario = sequencialUsuario
;
}
public List<AvaliacaoFuncionarioDTO
> getAvaliacoesDTO
() {
return avaliacoesDTO
;
}
public void setAvaliacoesDTO
(List<AvaliacaoFuncionarioDTO
> avaliacoesDTO
) {
this.
avaliacoesDTO = avaliacoesDTO
;
}
public List<ExameFuncionarioDTO
> getExamesDTO
() {
return examesDTO
;
}
public void setExamesDTO
(List<ExameFuncionarioDTO
> examesDTO
) {
this.
examesDTO = examesDTO
;
}
public List<AtestadoFuncionarioDTO
> getAtestadosDTO
() {
return atestadosDTO
;
}
public void setAtestadosDTO
(List<AtestadoFuncionarioDTO
> atestadosDTO
) {
this.
atestadosDTO = atestadosDTO
;
}
public List<PontoDTO
> getPontosDTO
() {
return pontosDTO
;
}
public void setPontosDTO
(List<PontoDTO
> pontosDTO
) {
this.
pontosDTO = pontosDTO
;
}
public FuncionarioCustosDTO getCustosDTO
() {
return custosDTO
;
}
public void setCustosDTO
(FuncionarioCustosDTO custosDTO
) {
this.
custosDTO = custosDTO
;
}
public GraficoBarraDTO getGraficoCustos
() {
return graficoCustos
;
}
public void setGraficoCustos
(GraficoBarraDTO graficoCustos
) {
this.
graficoCustos = graficoCustos
;
}
public PieChartModel getGraficoTiposProdutos
() {
return graficoTiposProdutos
;
}
public void setGraficoTiposProdutos
(PieChartModel graficoTiposProdutos
) {
this.
graficoTiposProdutos = graficoTiposProdutos
;
}
public PieChartModel getGraficoFormasPagamento
() {
return graficoFormasPagamento
;
}
public void setGraficoFormasPagamento
(PieChartModel graficoFormasPagamento
) {
this.
graficoFormasPagamento = graficoFormasPagamento
;
}
public BarChartModel getGraficoComparativoCustosLucro
() {
return graficoComparativoCustosLucro
;
}
public void setGraficoComparativoCustosLucro
(BarChartModel graficoComparativoCustosLucro
) {
this.
graficoComparativoCustosLucro = graficoComparativoCustosLucro
;
}
@
Override
public int hashCode
() {
final int prime =
31;
int result =
1;
result = prime
* result +
((sequencialFuncionario ==
null) ? 0 : sequencialFuncionario.
hashCode());
return result
;
}
@
Override
public boolean equals
(Object obj
) {
if (this == obj
)
return true;
if (obj ==
null)
return false;
if (getClass
() != obj.
getClass())
return false;
FuncionarioDTO other =
(FuncionarioDTO
) obj
;
if (sequencialFuncionario ==
null) {
if (other.
sequencialFuncionario !=
null)
return false;
} else if (!sequencialFuncionario.
equals(other.
sequencialFuncionario))
return false;
return true;
}
public Integer getQuantidadeDiasTrabalhados
() {
Integer quantidadeDiasTrabalhados =
0;
if (VerificadorUtil.
naoEstaNulo(getListaFuncionarioEscalaDTO
())) {
for (FuncionarioEscalaDTO escalaDTO : getListaFuncionarioEscalaDTO
()) {
if (escalaDTO.
getPeriodo() !=
null) {
quantidadeDiasTrabalhados++
;
}
}
}
return quantidadeDiasTrabalhados
;
}
public Integer getQuantidadeDiasNaoTrabalhados
() {
return DataUtils.
obterCalendario(getVigenciaEscalaDTO
().
getDataFim()).
get(Calendar.
DAY_OF_MONTH) - getQuantidadeDiasTrabalhados
();
}
public Integer getQuantidadeFaltas
() {
Integer quantidadeFaltas =
0;
if (VerificadorUtil.
naoEstaNulo(getListaFuncionarioEscalaDTO
())) {
for (FuncionarioEscalaDTO escalaDTO : getListaFuncionarioEscalaDTO
()) {
for (FuncionarioEventoDTO evento : escalaDTO.
getEventosDTO()) {
if (evento.
getTipo().
equals(TipoFuncionarioEvento.
FALTA.
getValor())) {
quantidadeFaltas++
;
}
}
}
}
return quantidadeFaltas
;
}
public Double saldoBancoHoras
() {
Double saldo =
new Double(0.0);
for (BancoHorasDTO bancoHorasDTO : getListaBancoHorasDTO
()) {
saldo = saldo + bancoHorasDTO.
getValor();
}
return saldo
;
}
@Transient
public Long getSequencialPessoaDoFuncionario
() {
return VerificadorUtil.
naoEstaNulo(getPessoaDTO
())? getPessoaDTO
().
getSequencial() :
null;
}
@Transient
public String getNomeDaPessoa
() {
return VerificadorUtil.
naoEstaNulo(getPessoaDTO
())? getPessoaDTO
().
getNome() :
null;
}
@Transient
public String getEmailDaPessoa
() {
return VerificadorUtil.
naoEstaNulo(getPessoaDTO
())? getPessoaDTO
().
getEmail() :
null;
}
}