Subversion Repositories Integrator Subversion

Rev

Rev 268 | Rev 353 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import org.primefaces.model.charts.bar.BarChartModel;
import org.primefaces.model.charts.pie.PieChartModel;
import org.springframework.context.annotation.Scope;

import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.domain.dto.AtestadoFuncionarioDTO;
import br.com.ec.domain.dto.AvaliacaoFuncionarioDTO;
import br.com.ec.domain.dto.ExameFuncionarioDTO;
import br.com.ec.domain.dto.FuncionarioFeriasDTO;
import br.com.ec.domain.dto.FormaPagamentoDTO;
import br.com.ec.domain.dto.FuncionarioDTO;
import br.com.ec.domain.dto.LojaDTO;
import br.com.ec.domain.dto.PessoaDTO;
import br.com.ec.domain.dto.PontoDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaVendasDTO;
import br.com.ec.domain.dto.consulta.ParametrosPeriodoDTO;
import br.com.ec.domain.dto.grafico.GraficoBarraDTO;
import br.com.ec.domain.model.tipos.TipoProduto;
import br.com.ec.domain.service.AvaliacaoFuncionarioService;
import br.com.ec.domain.service.FuncionarioService;
import br.com.ec.domain.service.GraficoService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;

@Named
@Scope("view")
public class RelatorioAnaliticoBean extends AbstractBean<FuncionarioDTO> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private FuncionarioService funcionarioService;
        private GraficoService graficoService;
        private AvaliacaoFuncionarioService avaliacaoFuncionarioService;
       
        private List<FuncionarioDTO> listaFuncionariosDTO;
        private Long sequencialFuncionarioSelecionado;
        private FuncionarioDTO funcionarioSelecionado;
        private ParametrosPeriodoDTO parametrosPeriodoDTO;
        private Boolean graficoConsultado;
        private GraficoBarraDTO graficoVendas;
        private GraficoBarraDTO graficoPercentuaisMeta;
       
        private AvaliacaoFuncionarioDTO avaliacaoFuncionarioSelecionada;

        @Inject
        public RelatorioAnaliticoBean(FuncionarioService funcionarioService, GraficoService graficoService, AvaliacaoFuncionarioService avaliacaoFuncionarioService) {
                this.funcionarioService = funcionarioService;
                this.graficoService = graficoService;
                this.avaliacaoFuncionarioService = avaliacaoFuncionarioService;
        }

        @Override
        public GenericService<FuncionarioDTO> getService() {
                return null;
        }

        @Override
        public FuncionarioDTO getId() {
                return null;
        }
       
        @Override
        public void preCarregamento() {
                limparEntidade();
                consultarFuncionariosAdmitidos();
        }
       
        @Override
        public void limparEntidade() {
                setEntidade(new FuncionarioDTO());
                setParametrosPeriodoDTO(new ParametrosPeriodoDTO());
                setFuncionarioSelecionado(null);
                setGraficoConsultado(false);
        }
       
        public TipoProduto[] getTiposProduto() {
                return TipoProduto.values();
        }
       
        public List<FuncionarioDTO> getListaFuncionariosDTO() {
                return listaFuncionariosDTO;
        }
        public void setListaFuncionariosDTO(List<FuncionarioDTO> listaFuncionariosDTO) {
                this.listaFuncionariosDTO = listaFuncionariosDTO;
        }
       
        public Long getSequencialFuncionarioSelecionado() {
                return sequencialFuncionarioSelecionado;
        }
        public void setSequencialFuncionarioSelecionado(Long sequencialFuncionarioSelecionado) {
                this.sequencialFuncionarioSelecionado = sequencialFuncionarioSelecionado;
        }
       
        public FuncionarioDTO getFuncionarioSelecionado() {
                return funcionarioSelecionado;
        }
        public void setFuncionarioSelecionado(FuncionarioDTO funcionarioSelecionado) {
                this.funcionarioSelecionado = funcionarioSelecionado;
        }
       
        public ParametrosPeriodoDTO getParametrosPeriodoDTO() {
                return parametrosPeriodoDTO;
        }
        public void setParametrosPeriodoDTO(ParametrosPeriodoDTO parametrosPeriodoDTO) {
                this.parametrosPeriodoDTO = parametrosPeriodoDTO;
        }
       
        public Boolean getGraficoConsultado() {
                return graficoConsultado;
        }
        public void setGraficoConsultado(Boolean graficoConsultado) {
                this.graficoConsultado = graficoConsultado;
        }
       
        public GraficoBarraDTO getGraficoVendas() {
                return graficoVendas;
        }
        public void setGraficoVendas(GraficoBarraDTO graficoVendas) {
                this.graficoVendas = graficoVendas;
        }
       
        public GraficoBarraDTO getGraficoPercentuaisMeta() {
                return graficoPercentuaisMeta;
        }
        public void setGraficoPercentuaisMeta(GraficoBarraDTO graficoPercentuaisMeta) {
                this.graficoPercentuaisMeta = graficoPercentuaisMeta;
        }
       
        public AvaliacaoFuncionarioDTO getAvaliacaoFuncionarioSelecionada() {
                return avaliacaoFuncionarioSelecionada;
        }
        public void setAvaliacaoFuncionarioSelecionada(AvaliacaoFuncionarioDTO avaliacaoFuncionarioSelecionada) {
                this.avaliacaoFuncionarioSelecionada = avaliacaoFuncionarioSelecionada;
        }
       
        /**********************************/
       
        public void consultarFuncionariosAdmitidos() {
                setListaFuncionariosDTO(funcionarioService.consultarFuncionariosAdmitidos());
        }
       
        public void analisarFuncionario() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                FuncionarioDTO funcionarioDTO = funcionarioService.analisarFuncionario(getFuncionarioSelecionado());
                                setFuncionarioSelecionado(funcionarioDTO);
                        }
                });
        }
       
        public void gerarGraficosFuncionario() {
                setGraficoConsultado(true);
               
                ParametrosConsultaVendasDTO parametrosConsulta = new ParametrosConsultaVendasDTO();
                parametrosConsulta.setParametrosPeriodoDTO(getParametrosPeriodoDTO());
                parametrosConsulta.setVendedorSelecionado(getFuncionarioSelecionado().getVendedorDTO());
                parametrosConsulta.setFormasDePagamentoDTO(new FormaPagamentoDTO[0]);
               
                setGraficoVendas(new GraficoBarraDTO(parametrosConsulta));
                setGraficoVendas(graficoService.gerarGraficoVendas(getGraficoVendas().getParametrosConsulta(), null));
                setGraficoPercentuaisMeta(graficoService.gerarGraficoPercentuaisMeta(getGraficoVendas().getParametrosConsulta()));

                /*********************/
               
                BarChartModel graficoComparativoCustosLucro = funcionarioService.consultarGraficoComparativoCustosLucro(getFuncionarioSelecionado().getSequencialFuncionario(), getParametrosPeriodoDTO());
                getFuncionarioSelecionado().setGraficoComparativoCustosLucro(graficoComparativoCustosLucro);
               
                PieChartModel graficoTiposProdutos = funcionarioService.consultarGraficoTiposProdutos(getFuncionarioSelecionado().getSequencialFuncionario(), getParametrosPeriodoDTO(), Arrays.asList(getTiposProduto()));
                getFuncionarioSelecionado().setGraficoTiposProdutos(graficoTiposProdutos);
               
                PieChartModel graficoFormasPagamento = funcionarioService.consultarGraficoFormasPagamento(getFuncionarioSelecionado().getSequencialFuncionario(), getParametrosPeriodoDTO());
                getFuncionarioSelecionado().setGraficoFormasPagamento(graficoFormasPagamento);
        }
       
        public void consultarAvaliacoes() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                getFuncionarioSelecionado().setAvaliacoesDTO(avaliacaoFuncionarioService.consultarAvaliacoesFuncionario(getFuncionarioSelecionado().getSequencialFuncionario()));
                        }
                });
        }
       
        public void detalharAvaliacao(final AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                avaliacaoFuncionarioDTO.setItensAvaliacao(avaliacaoFuncionarioService.consultarItensDaAvaliacao(avaliacaoFuncionarioDTO.getSequencialFuncionario(), avaliacaoFuncionarioDTO.getSequencialAvaliacao()));
                                setAvaliacaoFuncionarioSelecionada(avaliacaoFuncionarioDTO);
                        }
                });
        }
       
        // TODO: IMPLEMENTAÇÃO PENDENTE
        public void consultarFerias() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                List<FuncionarioFeriasDTO> feriasDTO = new ArrayList<FuncionarioFeriasDTO>();
                                FuncionarioFeriasDTO funcionarioFeriasDTO = new FuncionarioFeriasDTO();
                                funcionarioFeriasDTO.setDataInicio(DataUtils.converterStringParaData("01/09/2021"));
                                funcionarioFeriasDTO.setDataFim(DataUtils.converterStringParaData("30/09/2021"));
                                funcionarioFeriasDTO.setDataInicioAquisicao(DataUtils.converterStringParaData("02/07/2019"));
                                funcionarioFeriasDTO.setDataFimAquisicao(DataUtils.converterStringParaData("01/07/2020"));
                                funcionarioFeriasDTO.setConfirmada(true);
                                funcionarioFeriasDTO.setObservacao("");
                                feriasDTO.add(funcionarioFeriasDTO);
                               
                                funcionarioFeriasDTO = new FuncionarioFeriasDTO();
                                funcionarioFeriasDTO.setDataInicio(DataUtils.converterStringParaData("01/10/2019"));
                                funcionarioFeriasDTO.setDataFim(DataUtils.converterStringParaData("30/10/2019"));
                                funcionarioFeriasDTO.setDataInicioAquisicao(DataUtils.converterStringParaData("02/07/2018"));
                                funcionarioFeriasDTO.setDataFimAquisicao(DataUtils.converterStringParaData("01/07/2019"));
                                funcionarioFeriasDTO.setConfirmada(true);
                                funcionarioFeriasDTO.setObservacao("");
                                feriasDTO.add(funcionarioFeriasDTO);
                               
                                getFuncionarioSelecionado().setFeriasDTO(feriasDTO);
                        }
                });
        }
       
        // TODO: IMPLEMENTAÇÃO PENDENTE
        public void consultarExames() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                List<ExameFuncionarioDTO> examesDTO = new ArrayList<ExameFuncionarioDTO>();
                                ExameFuncionarioDTO exameDTO = new ExameFuncionarioDTO();
                                exameDTO.setDataPrevista(DataUtils.converterStringParaData("01/05/2021"));
                                exameDTO.setTipoExame("P");
                                examesDTO.add(exameDTO);
                               
                                exameDTO = new ExameFuncionarioDTO();
                                exameDTO.setDataPrevista(DataUtils.converterStringParaData("01/05/2020"));
                                exameDTO.setDataRealizada(DataUtils.converterStringParaData("01/05/2020"));
                                exameDTO.setTipoExame("P");
                                examesDTO.add(exameDTO);
                               
                                exameDTO = new ExameFuncionarioDTO();
                                exameDTO.setDataRealizada(DataUtils.converterStringParaData("01/05/2019"));
                                exameDTO.setTipoExame("A");
                                examesDTO.add(exameDTO);
                               
                                getFuncionarioSelecionado().setExamesDTO(examesDTO);
                        }
                });
        }
       
        // TODO: IMPLEMENTAÇÃO PENDENTE
        public void consultarAtestados() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                List<AtestadoFuncionarioDTO> atestadosDTO = new ArrayList<AtestadoFuncionarioDTO>();
                                AtestadoFuncionarioDTO atestadoDTO = new AtestadoFuncionarioDTO();
                                atestadoDTO.setDataAtestado(DataUtils.converterStringParaData("01/11/2020"));
                                atestadoDTO.setQuantidadeDias(new Long(15));
                                atestadoDTO.setCodigoCid("Y71");
                                atestadoDTO.setObservacao("COVID");
                                atestadosDTO.add(atestadoDTO);
                               
                                atestadoDTO = new AtestadoFuncionarioDTO();
                                atestadoDTO.setDataAtestado(DataUtils.converterStringParaData("01/09/2020"));
                                atestadoDTO.setQuantidadeDias(new Long(3));
                                atestadoDTO.setCodigoCid("Y59");
                                atestadoDTO.setObservacao("");
                                atestadosDTO.add(atestadoDTO);
                               
                                getFuncionarioSelecionado().setAtestadosDTO(atestadosDTO);
                        }
                });
        }
       
        // TODO: IMPLEMENTAÇÃO PENDENTE
        public void consultarPontoEletronico() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                List<PontoDTO> pontosDTO = new ArrayList<PontoDTO>();
                                PontoDTO pontoDTO = new PontoDTO();
                                LojaDTO lojaDTO = new LojaDTO();
                                lojaDTO.setDescricao("QUIOSQUE BIG GRUTA");
                                pontoDTO.setLojaDTO(lojaDTO);
                               
                                PessoaDTO pessoaDTO = new PessoaDTO();
                                pessoaDTO.setNome(getFuncionarioSelecionado().getNome());
                                pontoDTO.setPessoaDTO(pessoaDTO);
                               
                                pontoDTO.setDataPonto(DataUtils.converterStringParaData("13/08/2021"));
                                pontoDTO.setDataHoraPontoInicio(DataUtils.converterStringParaDataComHorario("13/08/2021 16:00:00"));
                                pontoDTO.setDataHoraPontoFim(DataUtils.converterStringParaDataComHorario("13/08/2021 16:00:00"));
                                pontoDTO.setDataHoraIntervaloInicio(DataUtils.converterStringParaDataComHorario("13/08/2021 16:00:00"));
                                pontoDTO.setDataHoraIntervaloFim(DataUtils.converterStringParaDataComHorario("13/08/2021 16:00:00"));
                                pontoDTO.setObservacao("");
                                pontosDTO.add(pontoDTO);
                               
                                getFuncionarioSelecionado().setPontosDTO(pontosDTO);
                        }
                });
        }
       
}