Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
200 espaco 1
package br.com.ec.controller.managedbean;
2
 
3
import java.io.Serializable;
4
import java.util.ArrayList;
5
import java.util.Date;
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
 
13
import br.com.ec.core.consulta.ParametrosConsulta;
14
import br.com.ec.core.generic.GenericService;
15
import br.com.ec.core.util.DataUtils;
16
import br.com.ec.core.util.VerificadorUtil;
17
import br.com.ec.domain.dto.PendenciaDTO;
18
import br.com.ec.domain.model.Loja;
19
import br.com.ec.domain.model.Pendencia;
20
import br.com.ec.domain.model.Perfil;
21
import br.com.ec.domain.model.Usuario;
22
import br.com.ec.domain.model.UsuarioLoja;
23
import br.com.ec.domain.model.UsuarioPerfil;
24
import br.com.ec.domain.service.loja.LojaService;
25
import br.com.ec.domain.service.pendencia.PendenciaService;
26
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
27
import br.com.ec.domain.service.usuario.UsuarioService;
28
import br.com.ec.domain.shared.ConstantesSEC;
29
import br.com.ec.web.exception.VerificadorLancamentoException;
30
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
31
import br.com.ec.web.generic.AbstractBean;
32
import br.com.ec.web.message.LancadorMensagem;
33
 
34
@Named
35
@Scope("view")
36
public class PendenciaBean extends AbstractBean<Pendencia> implements Serializable {
37
 
38
        private static final long serialVersionUID = 1L;
39
 
40
        private List<Pendencia> pendencias;
41
        private List<PendenciaDTO> pendenciasUltimasFinalizadasDTO;
42
        private Integer quantidadePendencias;
43
        private Integer quantidadePendenciasRespondidas;
44
 
45
        private PendenciaService pendenciaService;
46
        private LojaService lojaService;
47
 
48
        private Pendencia pendenciaSelecionado;
49
        private Loja lojaSelecionada;
50
 
51
        private String senhaUsuario;
52
        private UsuarioService usuarioService;
53
        private ContextoSeguranca contextoSeguranca;
54
 
55
        @Inject
56
        public PendenciaBean(PendenciaService pendenciaService, LojaService lojaService, UsuarioService usuarioService, ContextoSeguranca contextoSeguranca) {
57
                this.pendenciaService = pendenciaService;
58
                this.lojaService = lojaService;
59
                this.usuarioService = usuarioService;
60
                this.contextoSeguranca = contextoSeguranca;
61
        }
62
 
63
        @Override
64
        public void preCarregamento() {
65
                limparEntidade();
66
        }
67
 
68
        @Override
69
        public void limparEntidade() {
70
                entidade = new Pendencia();
71
                entidade.setLoja(getLojaSelecionada());
72
                entidade.setIndicadorFinalizado(false);
73
                parametrosConsulta = new ParametrosConsulta<Pendencia>();
74
                parametrosConsulta.setEntidade(entidade);
75
        }
76
 
77
        @Override
78
        public GenericService<Pendencia> getService() {
79
                return pendenciaService;
80
        }
81
 
82
        @Override
83
        public Pendencia getEntidade() {
84
                return entidade;
85
        }
86
 
87
        @Override
88
        public Pendencia getId() {
89
                return getEntidade();
90
        }
91
 
92
        public List<Pendencia> getPendencias() {
93
                if (VerificadorUtil.estaNulo(pendencias)) {
94
                        consultarPendencias();
95
                }
96
                return pendencias;
97
        }
98
        public void setPendencias(List<Pendencia> pendencias) {
99
                this.pendencias = pendencias;
100
        }
101
        public void consultarPendencias() {
102
                Pendencia entidadeParaConsulta = preencherEntidadeParaConsulta();
103
                setPendencias(pendenciaService.consultarPassandoEntidade(entidadeParaConsulta, 0, pendenciaService.obterQuantidadeDeRegistrosPassandoEntidade(entidadeParaConsulta)));
104
                entidadeParaConsulta.setIndicadorFinalizado(true);
105
                setPendenciasUltimasFinalizadasDTO(pendenciaService.consultarUltimasPendenciasAtendidas(entidadeParaConsulta));
106
        }
107
 
108
        private Pendencia preencherEntidadeParaConsulta() {
109
                List<Perfil> perfis = new ArrayList<Perfil>();
110
                Pendencia entidadeParaConsulta = new Pendencia();
111
                Boolean perfilAdministrador = false;
112
                Usuario solicitante = contextoSeguranca.obterUsuario();
113
                Boolean temPerfilVendedor = false;
114
                List<Loja> lojasConsulta = new ArrayList<Loja>();
115
                for (UsuarioPerfil usuarioPerfil : solicitante.getPerfis()) {
116
                        if (usuarioPerfil.getPerfil().getCodigo().equals(ConstantesSEC.PERFIL_ADMINISTRADOR_1)) {
117
                                perfilAdministrador = true;
118
                        }
119
                        if (!perfilAdministrador) {
120
                                if (usuarioPerfil.getPerfil().getCodigo().equals(ConstantesSEC.PERFIL_VENDEDOR_5)) {
121
                                        for (UsuarioLoja usuarioLoja : solicitante.getLojas()) {
122
                                                lojasConsulta.add(usuarioLoja.getLoja());
123
                                        }
124
                                        temPerfilVendedor = true;
125
                                } else {
126
                                        perfis.add(usuarioPerfil.getPerfil());
127
                                }
128
                        }
129
                }
130
                if (temPerfilVendedor) {
131
                        entidadeParaConsulta.setLojasConsulta(lojasConsulta);
132
                }
133
                entidadeParaConsulta.setPerfisConsulta(perfis);
134
                entidadeParaConsulta.setUsuario(solicitante);
135
                entidadeParaConsulta.setIndicadorFinalizado(getEntidade().getIndicadorFinalizado());
136
                entidadeParaConsulta.setLoja(getEntidade().getLoja());
137
                entidadeParaConsulta.setPerfil(getEntidade().getPerfil());
138
                entidadeParaConsulta.setData(getEntidade().getData());
139
                return entidadeParaConsulta;
140
        }
141
 
142
        public List<PendenciaDTO> getPendenciasUltimasFinalizadasDTO() {
143
                return pendenciasUltimasFinalizadasDTO;
144
        }
145
        public void setPendenciasUltimasFinalizadasDTO(List<PendenciaDTO> pendenciasUltimasFinalizadasDTO) {
146
                this.pendenciasUltimasFinalizadasDTO = pendenciasUltimasFinalizadasDTO;
147
        }
148
 
149
        public Pendencia getPendenciaSelecionado() {
150
                return pendenciaSelecionado;
151
        }
152
        public void setPendenciaSelecionado(Pendencia pendenciaSelecionado) {
153
                this.pendenciaSelecionado = pendenciaSelecionado;
154
        }
155
 
156
        public Loja getLojaSelecionada() {
157
                if (VerificadorUtil.estaNulo(lojaSelecionada)) {
158
                        if (VerificadorUtil.naoEstaNulo(getParametro("sequencialLoja"))) {
159
                                Loja loja = new Loja();
160
                                loja.setSequencial(new Long(getParametro("sequencialLoja").toString()));
161
                                lojaSelecionada = lojaService.consultarPorId(loja);
162
                        }
163
                }
164
                return lojaSelecionada;
165
        }
166
        public void setLojaSelecionada(Loja lojaSelecionada) {
167
                this.lojaSelecionada = lojaSelecionada;
168
        }
169
 
170
        public Integer quantidadePendenciasNaoFinalizadas(Loja loja) {
171
                return pendenciaService.quantidadePendenciasNaoFinalizadas(loja);
172
        }
173
 
174
        public String getSenhaUsuario() {
175
                return senhaUsuario;
176
        }
177
        public void setSenhaUsuario(String senhaUsuario) {
178
                this.senhaUsuario = senhaUsuario;
179
        }
180
 
181
        @Override
182
        public void cadastrar() {
183
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
184
                        public void execute() {
185
                                if (VerificadorUtil.naoEstaNulo(getLojaSelecionada())) {
186
                                        getEntidade().setLoja(getLojaSelecionada());
187
                                }
188
                                Usuario usuario = verificarSenhaUsuario();
189
                                getEntidade().setUsuario(usuario);
190
                                setSenhaUsuario("");
191
                        }
192
                });
193
                super.cadastrar();
194
                consultarPendencias();
195
        }
196
 
197
        private Usuario verificarSenhaUsuario() {
198
                return usuarioService.consultarUsuarioPorSenha(getSenhaUsuario());
199
        }
200
 
201
        @Override
202
        public void alterar() {
203
                super.alterar();
204
                consultarPendencias();
205
        }
206
 
207
        public void finalizar(final Pendencia pendencia) {
208
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
209
                        public void execute() {
210
                                pendencia.setDataFinalizado(DataUtils.getDataAtual());
211
                                Usuario usuarioResposta = verificarSenhaUsuario();
212
                                pendencia.setUsuarioResposta(usuarioResposta);
213
                                setSenhaUsuario("");
214
                                getService().alterar(pendencia);
215
                                limparEntidade();
216
                                consultarPendencias();
217
                                LancadorMensagem.lancarSucesso("Pendência finalizada com sucesso!");
218
                        }
219
                });
220
        }
221
 
222
        public void aguardar(final Pendencia pendencia) {
223
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
224
                        public void execute() {
225
                                pendencia.setIndicadorFinalizado(false);
226
                                getService().alterar(pendencia);
227
                                consultarPendencias();
228
                                LancadorMensagem.lancarSucesso("Pendência ativa novamente!");
229
                        }
230
                });
231
        }
232
 
233
        public void excluir(final Pendencia pendencia) {
234
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
235
                        public void execute() {
236
                                getService().excluir(pendencia);
237
                                consultarPendencias();
238
                                LancadorMensagem.lancarSucesso("Pendência excluída com sucesso!");
239
                        }
240
                });
241
        }
242
 
243
        public void lerPendencia(final Long sequencialPendencia) {
244
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
245
                        public void execute() {
246
                                pendenciaService.lerRepostaPendencia(sequencialPendencia);
247
                                consultarPendencias();
248
                                LancadorMensagem.lancarSucesso("Resposta de pendência lida com sucesso!");
249
                        }
250
                });
251
        }
252
 
253
        public Integer getQuantidadePendencias() {
254
                if (VerificadorUtil.estaNulo(quantidadePendencias)) {
255
                        /*
256
                        Pendencia entidadeParaConsulta = new Pendencia();
257
                        List<Perfil> perfis = new ArrayList<Perfil>();
258
                        Usuario solicitante = contextoSeguranca.obterUsuario();
259
                        if (VerificadorUtil.naoEstaNulo(solicitante)) {
260
                                for (UsuarioPerfil usuarioPerfil : solicitante.getPerfis()) {
261
                                        perfis.add(usuarioPerfil.getPerfil());
262
                                }
263
                        }
264
                        entidadeParaConsulta.setPerfisConsulta(perfis);
265
                        */
266
                        Pendencia entidadeParaConsulta = preencherEntidadeParaConsulta();
267
                        if (entidadeParaConsulta.getPerfisConsulta().isEmpty()) {
268
                                Usuario solicitante = contextoSeguranca.obterUsuario();
269
                                for (UsuarioPerfil usuarioPerfil : solicitante.getPerfis()) {
270
                                        if (usuarioPerfil.getPerfil().getCodigo().equals(ConstantesSEC.PERFIL_ADMINISTRADOR_1)) {
271
                                                entidadeParaConsulta.getPerfisConsulta().add(usuarioPerfil.getPerfil());
272
                                                break;
273
                                        }
274
                                }
275
                        }
276
 
277
                        entidadeParaConsulta.setUsuario(null);
278
                        entidadeParaConsulta.setIndicadorFinalizado(false);
279
                        setQuantidadePendencias(pendenciaService.obterQuantidadeDeRegistrosPassandoEntidade(entidadeParaConsulta));
280
                }
281
                return quantidadePendencias;
282
        }
283
        public void setQuantidadePendencias(Integer quantidadePendencias) {
284
                this.quantidadePendencias = quantidadePendencias;
285
        }
286
 
287
        public Integer getQuantidadePendenciasRespondidas() {
288
                if (VerificadorUtil.estaNulo(quantidadePendenciasRespondidas)) {
289
                        Usuario solicitante = contextoSeguranca.obterUsuario();
290
                        Date dataFinalizacao = DataUtils.acrescentarDias(DataUtils.getDataAtual(), -7);
291
                        setQuantidadePendenciasRespondidas(pendenciaService.obterQuantidadePendenciasRespondidasNaoLidas(solicitante, dataFinalizacao));
292
                }
293
                return quantidadePendenciasRespondidas;
294
        }
295
        public void setQuantidadePendenciasRespondidas(Integer quantidadePendenciasRespondidas) {
296
                this.quantidadePendenciasRespondidas = quantidadePendenciasRespondidas;
297
        }
298
 
299
}