Subversion Repositories Integrator Subversion

Rev

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