Subversion Repositories Integrator Subversion

Rev

Rev 195 | 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.List;
5
 
6
import javax.inject.Inject;
7
import javax.inject.Named;
8
 
9
import org.springframework.context.annotation.Scope;
10
 
11
import br.com.ec.controller.managedbean.consultademanda.CupomConsultaPorDemanda;
195 espaco 12
import br.com.ec.core.consulta.ParametrosConsulta;
13
import br.com.ec.core.exception.NegocioException;
14
import br.com.ec.core.generic.GenericService;
15
import br.com.ec.core.util.DataUtils;
16
import br.com.ec.core.util.VerificadorUtil;
106 espaco 17
import br.com.ec.domain.model.Cliente;
18
import br.com.ec.domain.model.Cupom;
19
import br.com.ec.domain.model.tipos.TipoCupom;
693 blopes 20
import br.com.ec.domain.model.tipos.TipoRegraCupom;
106 espaco 21
import br.com.ec.domain.service.cliente.ClienteService;
22
import br.com.ec.domain.service.cupom.CupomService;
195 espaco 23
import br.com.ec.web.exception.VerificadorLancamentoException;
24
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
25
import br.com.ec.web.generic.AbstractBean;
26
import br.com.ec.web.message.LancadorMensagem;
106 espaco 27
 
28
@Named
29
@Scope("view")
30
public class CupomBean extends AbstractBean<Cupom> implements Serializable {
31
 
32
        private static final long serialVersionUID = 1L;
33
 
34
        private CupomService cupomService;
35
        private ClienteService clienteService;
36
 
37
        private Cupom cupomSelecionado;
38
        private String cpfCliente;
39
        private Double valorSeparacao;
40
        private String codigoCupomParaUnir;
41
        private String codigoCupomParaUnirSegundo;
42
        private Cupom cupomSelecionadoParaUnir;
43
 
44
        private CupomConsultaPorDemanda lazy;
45
        private CupomConsultaPorDemanda lazyValidos;
46
 
47
        @Inject
48
        public CupomBean(CupomService cupomService, CupomConsultaPorDemanda lazy, CupomConsultaPorDemanda lazyValidos, ClienteService clienteService) {
49
                this.cupomService = cupomService;
50
                this.lazy = lazy;
51
                this.lazyValidos = lazyValidos;
52
                this.clienteService = clienteService;
53
        }
54
 
55
        @Override
56
        public void preCarregamento() {
57
                entidade = new Cupom();
58
                parametrosConsulta = new ParametrosConsulta<Cupom>();
59
                parametrosConsulta.setEntidade(entidade);
60
        }
61
 
62
        @Override
63
        public void limparEntidade() {
64
                setEntidade(new Cupom());
65
                setCupomSelecionado(null);
66
                setCodigoCupomParaUnir("");
67
                setCodigoCupomParaUnirSegundo("");
68
        }
69
 
70
        @Override
71
        public GenericService<Cupom> getService() {
72
                return cupomService;
73
        }
74
 
75
        @Override
76
        public Cupom getEntidade() {
77
                return entidade;
78
        }
79
 
80
        @Override
81
        public Cupom getId() {
82
                return getEntidade();
83
        }
84
 
85
        public Cupom getCupomSelecionado() {
86
                return cupomSelecionado;
87
        }
88
        public void setCupomSelecionado(Cupom cupomSelecionado) {
89
                this.cupomSelecionado = cupomSelecionado;
90
        }
91
 
92
        public Cupom getCupomSelecionadoParaUnir() {
93
                return cupomSelecionadoParaUnir;
94
        }
95
        public void setCupomSelecionadoParaUnir(Cupom cupomSelecionadoParaUnir) {
96
                this.cupomSelecionadoParaUnir = cupomSelecionadoParaUnir;
97
        }
98
 
99
        public CupomConsultaPorDemanda getLazy() {
100
                prepararConsultaDemanda();
101
                return lazy;
102
        }
103
        public void setLazy(CupomConsultaPorDemanda lazy) {
104
                this.lazy = lazy;
105
        }
106
        public void prepararConsultaDemanda() {
107
                lazy.setarParametrosConsulta(getParametrosConsulta());
108
        }
109
 
110
        public CupomConsultaPorDemanda getLazyValidos() {
111
                prepararConsultaDemandaValidos();
112
                return lazyValidos;
113
        }
114
        public void setLazyValidos(CupomConsultaPorDemanda lazyValidos) {
115
                this.lazyValidos = lazyValidos;
116
        }
117
        public void prepararConsultaDemandaValidos() {
118
                ParametrosConsulta<Cupom> parametros = getParametrosConsulta();
119
                Cupom cupom = new Cupom();
120
                cupom.setDataHoraValidade(DataUtils.getDataAtual());
121
                cupom.setAtivo(true);
122
                cupom.setPublico(true);
123
                parametros.setEntidade(cupom);
124
                lazyValidos.setarParametrosConsulta(parametros);
125
        }
126
 
127
        public String getCpfCliente() {
128
                return VerificadorUtil.naoEstaNulo(cpfCliente)? cpfCliente.replace(".", "").replace("-", "") : cpfCliente;
129
        }
130
        public void setCpfCliente(String cpfCliente) {
131
                this.cpfCliente = cpfCliente;
132
        }
133
 
134
        public Double getValorSeparacao() {
135
                return valorSeparacao;
136
        }
137
        public void setValorSeparacao(Double valorSeparacao) {
138
                this.valorSeparacao = valorSeparacao;
139
        }
140
 
141
        public String getCodigoCupomParaUnir() {
142
                return codigoCupomParaUnir;
143
        }
144
        public void setCodigoCupomParaUnir(String codigoCupomParaUnir) {
145
                this.codigoCupomParaUnir = codigoCupomParaUnir;
146
        }
147
 
148
        public String getCodigoCupomParaUnirSegundo() {
149
                return codigoCupomParaUnirSegundo;
150
        }
151
        public void setCodigoCupomParaUnirSegundo(String codigoCupomParaUnirSegundo) {
152
                this.codigoCupomParaUnirSegundo = codigoCupomParaUnirSegundo;
153
        }
154
 
155
        public TipoCupom[] getTiposCupom() {
156
                return TipoCupom.values();
157
        }
158
 
693 blopes 159
        public TipoRegraCupom[] getTiposRegraCupom() {
160
                return TipoRegraCupom.values();
161
        }
162
 
106 espaco 163
        /***************************************************************/
164
 
165
        public List<Cupom> getConsultarTodas() {
166
                return cupomService.consultarTodos(new Cupom());
167
        }
168
 
169
        public void prepararParaGerarCupom() {
170
                Cupom cupomGerado = new Cupom();
171
                cupomGerado.setCodigo(cupomService.gerarCodigoValido());
172
                cupomGerado.setDataHoraEmissao(DataUtils.getDataAtual());
173
                cupomGerado.setPublico(true);
174
                cupomGerado.setAtivo(true);
175
                cupomGerado.setLimiteUtilizacao(false);
176
                cupomGerado.setTipoCupom(TipoCupom.PROMOCIONAL.getValor());
177
                setCupomSelecionado(cupomGerado);
178
        }
179
 
180
        public void cadastrarCupomGerado() {
181
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
182
                        public void execute() {
183
                                cupomService.cadastrar(getCupomSelecionado());
184
                                LancadorMensagem.lancarSucesso("CUPOM GERADO COM SUCESSO! CÓDIGO GERADO: " + getCupomSelecionado().getCodigo());
185
                                setCupomSelecionado(null);
186
                        }
187
                });
188
        }
189
 
190
        public void alterarCupomGerado() {
191
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
192
                        public void execute() {
193
                                cupomService.alterar(getCupomSelecionado());
194
                                LancadorMensagem.lancarSucesso("CUPOM ALTERADO COM SUCESSO!");
195
                                setCupomSelecionado(null);
196
                        }
197
                });
198
        }
199
 
200
        public void selecionarCliente(final Cliente cliente) {
201
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
202
                        public void execute() {
203
                                getCupomSelecionado().setCliente(clienteService.consultarClientePorCpfCnpj(cliente.getCpfCnpj()));
204
                                setCpfCliente(null);
205
                                adicionandoParametroArgsConfirmandoAcao(true);
206
                        }
207
                });
208
        }
209
 
210
        public void retirarCliente() {
211
                getCupomSelecionado().setCliente(null);
212
        }
213
 
214
        public void excluirCupom(final Cupom cupom) {
215
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
216
                        public void execute() {
217
                                cupomService.excluirCupom(cupom);
218
                                adicionandoParametroArgsConfirmandoAcao(true);
219
                                LancadorMensagem.lancarSucesso("CUPOM EXCLUÍDO COM SUCESSO");
220
                        }
221
                });
222
        }
223
 
224
        public void prepararParaSepararCupom() {
225
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
226
                        public void execute() {
227
                                setCupomSelecionado(cupomService.consultarCupomPorCodigo(getEntidade().getCodigo()));
228
                                verificarCupomValidoEhParaReembolso(getCupomSelecionado());
229
                                setValorSeparacao(new Double(0.0));
230
                                adicionandoParametroArgsConfirmandoAcao(true);
231
                        }
232
                });
233
        }
234
 
235
        public void confirmarSeparacaoCupom() {
236
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
237
                        public void execute() {
238
                                Cupom cupomNovo = cupomService.separarCupom(getCupomSelecionado(), getValorSeparacao());
239
                                adicionandoParametroArgsConfirmandoAcao(true);
240
                                limparEntidade();
241
                                LancadorMensagem.lancarSucesso("CUPOM GERADO COM SUCESSO! CÓDIGO: " + cupomNovo.getCodigo());
242
                        }
243
                });
244
        }
245
 
246
        public void prepararParaUnirCupons() {
247
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
248
                        public void execute() {
249
                                setCupomSelecionado(cupomService.consultarCupomPorCodigo(getCodigoCupomParaUnir()));
250
                                verificarCupomValidoEhParaReembolso(getCupomSelecionado());
251
                                setCupomSelecionadoParaUnir(cupomService.consultarCupomPorCodigo(getCodigoCupomParaUnirSegundo()));
252
                                verificarCupomValidoEhParaReembolso(getCupomSelecionadoParaUnir());
253
                                adicionandoParametroArgsConfirmandoAcao(true);
254
                        }
255
                });
256
        }
257
 
258
        private void verificarCupomValidoEhParaReembolso(Cupom cupom) {
259
                if (VerificadorUtil.naoEstaNulo(cupom)) {
260
                        if (!cupom.getAtivo() || !cupom.valido()) {
261
                                throw new NegocioException("OPERAÇÃO NÃO PERMITIDA: CUPOM INDISPONÍVEL");
262
                        }
263
                        if (!cupom.getTipoCupom().equals(TipoCupom.REEMBOLSO.getValor())) {
264
                                throw new NegocioException("OPERAÇÃO NÃO PERMITIDA: CUPOM DEVE SER PARA REEMBOLSO");
265
                        }
266
                }
267
        }
268
 
269
        public void confirmarUniaoCupons() {
270
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
271
                        public void execute() {
272
                                Cupom cupomNovo = cupomService.unirCupons(getCupomSelecionado(), getCupomSelecionadoParaUnir());
273
                                adicionandoParametroArgsConfirmandoAcao(true);
274
                                limparEntidade();
275
                                LancadorMensagem.lancarSucesso("CUPONS UNIDOS COM SUCESSO! CÓDIGO: " + cupomNovo.getCodigo());
276
                        }
277
                });
278
        }
279
 
280
}