Subversion Repositories Integrator Subversion

Rev

Rev 161 | Rev 165 | 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
 
160 espaco 13
import br.com.ec.domain.dto.PendenciaDTO;
106 espaco 14
import br.com.ec.domain.model.Loja;
15
import br.com.ec.domain.model.Pendencia;
16
import br.com.ec.domain.model.Perfil;
17
import br.com.ec.domain.model.Usuario;
164 espaco 18
import br.com.ec.domain.model.UsuarioLoja;
106 espaco 19
import br.com.ec.domain.model.UsuarioPerfil;
20
import br.com.ec.domain.service.loja.LojaService;
21
import br.com.ec.domain.service.pendencia.PendenciaService;
22
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
23
import br.com.ec.domain.service.usuario.UsuarioService;
24
import br.com.ec.domain.shared.ConstantesSEC;
25
import br.edu.cesmac.core.consulta.ParametrosConsulta;
26
import br.edu.cesmac.core.generic.GenericService;
27
import br.edu.cesmac.core.util.DataUtils;
28
import br.edu.cesmac.core.util.VerificadorUtil;
29
import br.edu.cesmac.web.exception.VerificadorLancamentoException;
30
import br.edu.cesmac.web.exception.VerificadorLancamentoException.CommandBean;
31
import br.edu.cesmac.web.generic.AbstractBean;
32
import br.edu.cesmac.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;
160 espaco 41
        private List<PendenciaDTO> pendenciasUltimasFinalizadasDTO;
106 espaco 42
        private Integer quantidadePendencias;
160 espaco 43
        private Integer quantidadePendenciasRespondidas;
106 espaco 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
                entidade = new Pendencia();
66
                entidade.setLoja(getLojaSelecionada());
67
                entidade.setIndicadorFinalizado(false);
68
                parametrosConsulta = new ParametrosConsulta<Pendencia>();
69
                parametrosConsulta.setEntidade(entidade);
70
        }
71
 
72
        @Override
73
        public void limparEntidade() {
74
                setEntidade(new Pendencia());
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() {
164 espaco 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() {
106 espaco 109
                List<Perfil> perfis = new ArrayList<Perfil>();
160 espaco 110
                Pendencia entidadeParaConsulta = new Pendencia();
106 espaco 111
                Boolean perfilAdministrador = false;
112
                Usuario solicitante = contextoSeguranca.obterUsuario();
164 espaco 113
                Boolean temPerfilVendedor = false;
114
                List<Loja> lojasConsulta = new ArrayList<Loja>();
106 espaco 115
                for (UsuarioPerfil usuarioPerfil : solicitante.getPerfis()) {
116
                        if (usuarioPerfil.getPerfil().getCodigo().equals(ConstantesSEC.PERFIL_ADMINISTRADOR_1)) {
117
                                perfilAdministrador = true;
118
                        }
119
                        if (!perfilAdministrador) {
164 espaco 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
                                }
106 espaco 128
                        }
129
                }
164 espaco 130
                if (temPerfilVendedor) {
131
                        entidadeParaConsulta.setLojasConsulta(lojasConsulta);
132
                }
160 espaco 133
                entidadeParaConsulta.setPerfisConsulta(perfis);
134
                entidadeParaConsulta.setUsuario(solicitante);
135
                entidadeParaConsulta.setIndicadorFinalizado(getEntidade().getIndicadorFinalizado());
164 espaco 136
                return entidadeParaConsulta;
106 espaco 137
        }
138
 
160 espaco 139
        public List<PendenciaDTO> getPendenciasUltimasFinalizadasDTO() {
140
                return pendenciasUltimasFinalizadasDTO;
106 espaco 141
        }
160 espaco 142
        public void setPendenciasUltimasFinalizadasDTO(List<PendenciaDTO> pendenciasUltimasFinalizadasDTO) {
143
                this.pendenciasUltimasFinalizadasDTO = pendenciasUltimasFinalizadasDTO;
106 espaco 144
        }
145
 
146
        public Pendencia getPendenciaSelecionado() {
147
                return pendenciaSelecionado;
148
        }
149
        public void setPendenciaSelecionado(Pendencia pendenciaSelecionado) {
150
                this.pendenciaSelecionado = pendenciaSelecionado;
151
        }
152
 
153
        public Loja getLojaSelecionada() {
154
                if (VerificadorUtil.estaNulo(lojaSelecionada)) {
155
                        if (VerificadorUtil.naoEstaNulo(getParametro("sequencialLoja"))) {
156
                                Loja loja = new Loja();
157
                                loja.setSequencial(new Long(getParametro("sequencialLoja").toString()));
158
                                lojaSelecionada = lojaService.consultarPorId(loja);
159
                        }
160
                }
161
                return lojaSelecionada;
162
        }
163
        public void setLojaSelecionada(Loja lojaSelecionada) {
164
                this.lojaSelecionada = lojaSelecionada;
165
        }
166
 
167
        public Integer quantidadePendenciasNaoFinalizadas(Loja loja) {
168
                return pendenciaService.quantidadePendenciasNaoFinalizadas(loja);
169
        }
170
 
171
        public String getSenhaUsuario() {
172
                return senhaUsuario;
173
        }
174
        public void setSenhaUsuario(String senhaUsuario) {
175
                this.senhaUsuario = senhaUsuario;
176
        }
177
 
178
        @Override
179
        public void cadastrar() {
180
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
181
                        public void execute() {
182
                                if (VerificadorUtil.naoEstaNulo(getLojaSelecionada())) {
183
                                        getEntidade().setLoja(getLojaSelecionada());
184
                                }
185
                                Usuario usuario = verificarSenhaUsuario();
186
                                getEntidade().setUsuario(usuario);
187
                                setSenhaUsuario("");
188
                        }
189
                });
190
                super.cadastrar();
191
                consultarPendencias();
192
        }
193
 
194
        private Usuario verificarSenhaUsuario() {
195
                return usuarioService.consultarUsuarioPorSenha(getSenhaUsuario());
196
        }
197
 
198
        @Override
199
        public void alterar() {
200
                super.alterar();
201
                consultarPendencias();
202
        }
203
 
204
        public void finalizar(final Pendencia pendencia) {
205
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
206
                        public void execute() {
207
                                pendencia.setDataFinalizado(DataUtils.getDataAtual());
156 espaco 208
                                Usuario usuarioResposta = verificarSenhaUsuario();
209
                                pendencia.setUsuarioResposta(usuarioResposta);
210
                                setSenhaUsuario("");
106 espaco 211
                                getService().alterar(pendencia);
212
                                consultarPendencias();
213
                                LancadorMensagem.lancarSucesso("Pendência finalizada com sucesso!");
214
                        }
215
                });
216
        }
217
 
218
        public void aguardar(final Pendencia pendencia) {
219
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
220
                        public void execute() {
221
                                pendencia.setIndicadorFinalizado(false);
222
                                getService().alterar(pendencia);
223
                                consultarPendencias();
224
                                LancadorMensagem.lancarSucesso("Pendência ativa novamente!");
225
                        }
226
                });
227
        }
228
 
229
        public void excluir(final Pendencia pendencia) {
230
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
231
                        public void execute() {
232
                                getService().excluir(pendencia);
233
                                consultarPendencias();
234
                                LancadorMensagem.lancarSucesso("Pendência excluída com sucesso!");
235
                        }
236
                });
237
        }
238
 
161 espaco 239
        public void lerPendencia(final Long sequencialPendencia) {
240
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
241
                        public void execute() {
242
                                pendenciaService.lerRepostaPendencia(sequencialPendencia);
243
                                consultarPendencias();
244
                                LancadorMensagem.lancarSucesso("Resposta de pendência lida com sucesso!");
245
                        }
246
                });
247
        }
248
 
106 espaco 249
        public Integer getQuantidadePendencias() {
250
                if (VerificadorUtil.estaNulo(quantidadePendencias)) {
164 espaco 251
                        /*
160 espaco 252
                        Pendencia entidadeParaConsulta = new Pendencia();
106 espaco 253
                        List<Perfil> perfis = new ArrayList<Perfil>();
254
                        Usuario solicitante = contextoSeguranca.obterUsuario();
255
                        if (VerificadorUtil.naoEstaNulo(solicitante)) {
256
                                for (UsuarioPerfil usuarioPerfil : solicitante.getPerfis()) {
257
                                        perfis.add(usuarioPerfil.getPerfil());
258
                                }
259
                        }
160 espaco 260
                        entidadeParaConsulta.setPerfisConsulta(perfis);
164 espaco 261
                        */
262
                        Pendencia entidadeParaConsulta = preencherEntidadeParaConsulta();
160 espaco 263
                        entidadeParaConsulta.setIndicadorFinalizado(false);
264
                        setQuantidadePendencias(pendenciaService.obterQuantidadeDeRegistrosPassandoEntidade(entidadeParaConsulta));
106 espaco 265
                }
266
                return quantidadePendencias;
267
        }
268
        public void setQuantidadePendencias(Integer quantidadePendencias) {
269
                this.quantidadePendencias = quantidadePendencias;
270
        }
271
 
160 espaco 272
        public Integer getQuantidadePendenciasRespondidas() {
273
                if (VerificadorUtil.estaNulo(quantidadePendenciasRespondidas)) {
274
                        Usuario solicitante = contextoSeguranca.obterUsuario();
275
                        Date dataFinalizacao = DataUtils.acrescentarDias(DataUtils.getDataAtual(), -7);
161 espaco 276
                        setQuantidadePendenciasRespondidas(pendenciaService.obterQuantidadePendenciasRespondidasNaoLidas(solicitante, dataFinalizacao));
160 espaco 277
                }
278
                return quantidadePendenciasRespondidas;
279
        }
280
        public void setQuantidadePendenciasRespondidas(Integer quantidadePendenciasRespondidas) {
281
                this.quantidadePendenciasRespondidas = quantidadePendenciasRespondidas;
282
        }
283
 
106 espaco 284
}