Subversion Repositories Integrator Subversion

Rev

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