Subversion Repositories Integrator Subversion

Rev

Rev 195 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
106 espaco 1
package br.com.ec.controller.managedbean;
2
 
3
import java.io.Serializable;
4
import java.util.Calendar;
5
import java.util.GregorianCalendar;
6
import java.util.List;
7
 
8
import javax.inject.Inject;
9
import javax.inject.Named;
10
 
11
import org.springframework.context.annotation.Scope;
12
 
195 espaco 13
import br.com.ec.core.generic.GenericService;
14
import br.com.ec.core.util.DataUtils;
15
import br.com.ec.core.util.VerificadorUtil;
106 espaco 16
import br.com.ec.domain.dto.ColaboradorDTO;
17
import br.com.ec.domain.model.AvaliacaoFuncionario;
18
import br.com.ec.domain.model.Usuario;
19
import br.com.ec.domain.model.Vigencia;
20
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
21
import br.com.ec.domain.service.usuario.UsuarioService;
22
import br.com.ec.domain.service.venda.VendaService;
23
import br.com.ec.domain.service.vendedor.VendedorService;
24
import br.com.ec.domain.service.vigencia.VigenciaService;
25
import br.com.ec.domain.shared.ConstantesSEC;
195 espaco 26
import br.com.ec.web.generic.AbstractBean;
106 espaco 27
 
28
@Named
29
@Scope("view")
30
public class ColaboradorVivoBean extends AbstractBean<ColaboradorDTO> implements Serializable {
31
 
32
        private static final long serialVersionUID = 1L;
33
 
34
        private UsuarioService usuarioService;
35
        private VendaService vendaService;
36
        private VendedorService vendedorService;
37
        private VigenciaService vigenciaService;
38
 
39
        private ColaboradorDTO resumoAntigo;
40
        private ColaboradorDTO resumoPromocaoInterna;
41
        private ColaboradorDTO resumoPromocaoInternaAnterior;
42
 
43
        private ContextoSeguranca contextoSeguranca;
44
 
45
        List<Vigencia> ultimasVigencias;
46
 
47
        @Inject
48
        public ColaboradorVivoBean(UsuarioService usuarioService, VendaService vendaService, VendedorService vendedorService,
49
                        VigenciaService vigenciaService, ContextoSeguranca contextoSeguranca) {
50
                this.usuarioService = usuarioService;
51
                this.vendaService = vendaService;
52
                this.vendedorService = vendedorService;
53
                this.vigenciaService = vigenciaService;
54
                this.contextoSeguranca = contextoSeguranca;
55
        }
56
 
57
        @Override
58
        public void preCarregamento() {
59
                setUltimasVigencias(vigenciaService.consultarUltimasVigencias());
60
                Usuario usuarioSelecionado = usuarioService.consultarPorId(contextoSeguranca.obterUsuario());
61
 
62
                if (!getUltimasVigencias().isEmpty()) {
63
                        if (getUltimasVigencias().size() >= 1) {
64
                                Vigencia primeiraVigencia = getUltimasVigencias().get(0);
65
                                ColaboradorDTO colaborador = new ColaboradorDTO();
66
                                colaborador.setUsuario(usuarioSelecionado);
67
                                colaborador.setRankingVendedor(vendaService.consultarRankingVendedor(vendedorService.consultarVendedorPorPessoa(usuarioSelecionado.getPessoa()), primeiraVigencia, null));
68
                                setEntidade(colaborador);
69
                                colaborador.getRankingVendedor().setPercentualMetaMensal(calcularPorcentagemDaMetaMensal());
70
                                colaborador.getRankingVendedor().setPercentualMetaDiaria(calcularPorcentagemDaMetaDiaria());
71
                        }
72
                        if (getUltimasVigencias().size() >= 2) {
73
                                Vigencia segundaVigencia = getUltimasVigencias().get(1);
74
                                ColaboradorDTO colaboradorAnterior = new ColaboradorDTO();
75
                                colaboradorAnterior.setUsuario(usuarioSelecionado);
76
                                colaboradorAnterior.setRankingVendedor(vendaService.consultarRankingVendedor(vendedorService.consultarVendedorPorPessoa(usuarioSelecionado.getPessoa()), segundaVigencia, null));
77
                                setResumoAntigo(colaboradorAnterior);
78
//                              colaboradorAnterior.getRankingVendedor().setPercentualMetaMensal(calcularPorcentagemDaMetaMensal());
79
//                              colaboradorAnterior.getRankingVendedor().setPercentualMetaDiaria(calcularPorcentagemDaMetaDiaria());
80
                        }
81
                }
82
 
83
                ColaboradorDTO colaboradorPromocaoInterna = new ColaboradorDTO();
84
                colaboradorPromocaoInterna.setUsuario(usuarioSelecionado);
85
                colaboradorPromocaoInterna.setRankingVendedor(vendaService.consultarRankingPromocaoInternaDoVendedor(vendedorService.consultarVendedorPorPessoa(usuarioSelecionado.getPessoa()),
86
                                DataUtils.getDataComHorarioMinimo(DataUtils.getPrimeiroDiaDoMesAtual()),
252 espaco 87
                                DataUtils.getDataComHorarioMaximo(DataUtils.getUltimoDiaDoMesAtual()),
88
                                ConstantesSEC.ProdutosPromocaoInterna.PRODUTOS));
106 espaco 89
                setResumoPromocaoInterna(colaboradorPromocaoInterna);
90
 
91
                ColaboradorDTO colaboradorPromocaoInternaAnterior = new ColaboradorDTO();
92
                colaboradorPromocaoInternaAnterior.setUsuario(usuarioSelecionado);
93
                colaboradorPromocaoInternaAnterior.setRankingVendedor(vendaService.consultarRankingPromocaoInternaDoVendedor(vendedorService.consultarVendedorPorPessoa(usuarioSelecionado.getPessoa()),
94
                                DataUtils.getDataComHorarioMinimo(DataUtils.getPrimeiroDiaDoMesAnterior()),
252 espaco 95
                                DataUtils.getDataComHorarioMaximo(DataUtils.getUltimoDiaDoMesAnterior()),
96
                                ConstantesSEC.ProdutosPromocaoInterna.PRODUTOS_MES_ANTERIOR));
106 espaco 97
                setResumoPromocaoInternaAnterior(colaboradorPromocaoInternaAnterior);
98
        }
99
 
100
        @Override
101
        public void limparEntidade() {
102
                setEntidade(new ColaboradorDTO());
103
        }
104
 
105
        @Override
106
        public GenericService<ColaboradorDTO> getService() {
107
                return null;
108
        }
109
 
110
        @Override
111
        public ColaboradorDTO getEntidade() {
112
                return entidade;
113
        }
114
 
115
        @Override
116
        public ColaboradorDTO getId() {
117
                return getEntidade();
118
        }
119
 
120
        public ColaboradorDTO getResumoAntigo() {
121
                return resumoAntigo;
122
        }
123
        public void setResumoAntigo(ColaboradorDTO resumoAntigo) {
124
                this.resumoAntigo = resumoAntigo;
125
        }
126
 
127
        public ColaboradorDTO getResumoPromocaoInterna() {
128
                return resumoPromocaoInterna;
129
        }
130
        public void setResumoPromocaoInterna(ColaboradorDTO resumoPromocaoInterna) {
131
                this.resumoPromocaoInterna = resumoPromocaoInterna;
132
        }
133
 
134
        public ColaboradorDTO getResumoPromocaoInternaAnterior() {
135
                return resumoPromocaoInternaAnterior;
136
        }
137
        public void setResumoPromocaoInternaAnterior(ColaboradorDTO resumoPromocaoInternaAnterior) {
138
                this.resumoPromocaoInternaAnterior = resumoPromocaoInternaAnterior;
139
        }
140
 
141
        public List<Vigencia> getUltimasVigencias() {
142
                return ultimasVigencias;
143
        }
144
        public void setUltimasVigencias(List<Vigencia> ultimasVigencias) {
145
                this.ultimasVigencias = ultimasVigencias;
146
        }
147
 
148
        /***************************************************************/
149
 
150
        public Double calcularPorcentagemDaMetaMensal() {
151
                return verificarMetas(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
152
                                consultarPorcentagem(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensal(),
153
                                        getEntidade().getRankingVendedor().getValorTotalVendido()) : 0.0;
154
        }
155
 
156
        public Double calcularPorcentagemDaMetaDiaria() {
157
                Integer quantidadeDiasNoMes = new GregorianCalendar().getActualMaximum (Calendar.DAY_OF_MONTH);
158
                return verificarMetas(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
159
                                consultarPorcentagem(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensal() / quantidadeDiasNoMes,
160
                                        getEntidade().getRankingVendedor().getValorTotalVendidoDoDia()) : 0.0;
161
        }
162
 
163
        public String retornarEstiloMetaDiaria() {
164
                Integer quantidadeDiasNoMes = new GregorianCalendar().getActualMaximum (Calendar.DAY_OF_MONTH);
165
                return verificarMetas(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
166
                                retornarEstilo(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensal() / quantidadeDiasNoMes,
167
                                        getEntidade().getRankingVendedor().getValorTotalVendidoDoDia()) : "red-intense";
168
        }
169
 
170
        public String retornarEstiloMetaMensal() {
171
                return verificarMetas(getEntidade().getRankingVendedor().getAvaliacaoFuncionario()) ?
172
                                retornarEstilo(getEntidade().getRankingVendedor().getAvaliacaoFuncionario().getValorMetaMensal(),
173
                                        getEntidade().getRankingVendedor().getValorTotalVendido()) : "red-intense";
174
        }
175
 
176
        private boolean verificarMetas(AvaliacaoFuncionario avaliacaoFuncionario) {
177
                if (VerificadorUtil.naoEstaNulo(avaliacaoFuncionario)) {
178
                        if (VerificadorUtil.naoEstaNulo(avaliacaoFuncionario.getValorMetaMensal())) {
179
                                return true;
180
                        }
181
                }
182
                return false;
183
        }
184
 
185
        private String retornarEstilo(Double valorMetaMensal, Double valorTotal) {
186
                if (VerificadorUtil.naoEstaNuloOuVazio(valorMetaMensal)) {
187
                        Double percentualRealizado = valorTotal * 100 / valorMetaMensal;
188
                        if (percentualRealizado < 75) {
189
                                return "red-intense";
190
                        } else {
191
                                if (percentualRealizado < 100) {
192
                                        return "blue-madison";
193
                                } else {
194
                                        if (percentualRealizado < 125) {
195
                                                return "green-haze";
196
                                        } else {
197
                                                return "green-seagreen";
198
                                        }
199
                                }
200
                        }
201
                }
202
                return "purple";
203
        }
204
 
205
        private Double consultarPorcentagem(Double valorTotal, Double valor) {
206
                if (VerificadorUtil.naoEstaNuloOuVazio(valorTotal) && VerificadorUtil.naoEstaNuloOuVazio(valor)) {
207
                        return (valor * 100 / valorTotal) / 100;
208
                }
209
                return 0.0;
210
        }
211
 
212
        public Integer getQuantidadeMinimaComissaoPromocaoInterna() {
213
                return ConstantesSEC.ProdutosPromocaoInterna.QUANTIDADE_MINIMA_RECEBIMENTO;
214
        }
215
 
216
}