Subversion Repositories Integrator Subversion

Rev

Rev 297 | Rev 430 | 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.FuncionarioFerias;
import br.com.ec.domain.model.tipos.TipoProduto;
import br.com.ec.domain.service.AvaliacaoFuncionarioService;
import br.com.ec.domain.service.FuncionarioFeriasService;
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 FuncionarioFeriasService funcionarioFeriasService;
       
        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,
                        FuncionarioFeriasService funcionarioFeriasService) {
                this.funcionarioService = funcionarioService;
                this.graficoService = graficoService;
                this.avaliacaoFuncionarioService = avaliacaoFuncionarioService;
                this.funcionarioFeriasService = funcionarioFeriasService;
        }

        @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);
                        }
                });
        }
       
}