Subversion Repositories Integrator Subversion

Rev

Rev 170 | Go to most recent revision | Details | 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.ByteArrayInputStream;
4
import java.io.Serializable;
5
import java.util.ArrayList;
6
import java.util.HashSet;
7
import java.util.List;
8
 
9
import javax.faces.context.FacesContext;
10
import javax.inject.Inject;
11
import javax.inject.Named;
12
import javax.servlet.ServletContext;
13
 
14
import org.primefaces.model.DefaultStreamedContent;
15
import org.primefaces.model.StreamedContent;
16
import org.springframework.context.annotation.Scope;
17
 
18
import br.com.ec.controller.managedbean.consultademanda.PessoaConsultaPorDemanda;
19
import br.com.ec.domain.dto.ParametrosConsultaPessoaDTO;
20
import br.com.ec.domain.model.DadosBancarios;
21
import br.com.ec.domain.model.Endereco;
22
import br.com.ec.domain.model.Fornecedor;
23
import br.com.ec.domain.model.Funcionario;
24
import br.com.ec.domain.model.Loja;
25
import br.com.ec.domain.model.Perfil;
26
import br.com.ec.domain.model.Pessoa;
27
import br.com.ec.domain.model.Usuario;
28
import br.com.ec.domain.model.UsuarioLoja;
29
import br.com.ec.domain.model.UsuarioPerfil;
30
import br.com.ec.domain.model.Vendedor;
31
import br.com.ec.domain.model.tipos.TipoComissionamento;
32
import br.com.ec.domain.model.tipos.TipoEscolaridade;
33
import br.com.ec.domain.model.tipos.TipoEstadoCivil;
34
import br.com.ec.domain.model.tipos.TipoRacaCor;
35
import br.com.ec.domain.model.tipos.TipoRegimeTributario;
36
import br.com.ec.domain.service.fornecedor.FornecedorService;
37
import br.com.ec.domain.service.funcionario.FuncionarioService;
38
import br.com.ec.domain.service.pessoa.PessoaService;
39
import br.com.ec.domain.service.usuario.UsuarioService;
40
import br.com.ec.domain.service.vendedor.VendedorService;
41
import br.edu.cesmac.core.exception.NegocioException;
42
import br.edu.cesmac.core.generic.GenericService;
43
import br.edu.cesmac.core.util.ArquivoUtil;
44
import br.edu.cesmac.core.util.VerificadorUtil;
45
import br.edu.cesmac.web.exception.VerificadorLancamentoException;
46
import br.edu.cesmac.web.exception.VerificadorLancamentoException.CommandBean;
47
import br.edu.cesmac.web.generic.AbstractBean;
48
import br.edu.cesmac.web.message.LancadorMensagem;
49
import br.edu.cesmac.web.util.TipoOperacao;
50
 
51
@Named
52
@Scope("view")
53
public class PessoaBean extends AbstractBean<Pessoa> implements Serializable {
54
 
55
        private static final long serialVersionUID = 1L;
56
 
57
        private ParametrosConsultaPessoaDTO parametrosConsultaPessoaDTO;
58
        private PessoaConsultaPorDemanda lazy;
59
 
60
        private PessoaService pessoaService;
61
        private UsuarioService usuarioService;
62
        private FuncionarioService funcionarioService;
63
        private VendedorService vendedorService;
64
        private FornecedorService fornecedorService;
65
 
66
        private Endereco endereco;
67
        private List<Endereco> enderecos;
68
        private DadosBancarios dadosBancarios;
69
        private List<DadosBancarios> listaDadosBancarios;
70
        private Usuario usuario;
71
        private Perfil perfilSelecionado;
72
        private Loja lojaSelecionada;
73
        private Funcionario funcionario;
74
        private Vendedor vendedor;
75
        private Fornecedor fornecedor;
76
        private List<Pessoa> listaPessoasJuridicas;
77
 
78
        @Inject
79
        public PessoaBean(PessoaConsultaPorDemanda lazy, PessoaService pessoaService, UsuarioService usuarioService,
80
                        FuncionarioService funcionarioService, VendedorService vendedorService, FornecedorService fornecedorService) {
81
                this.lazy = lazy;
82
                this.pessoaService = pessoaService;
83
                this.usuarioService = usuarioService;
84
                this.funcionarioService = funcionarioService;
85
                this.vendedorService = vendedorService;
86
                this.fornecedorService = fornecedorService;
87
        }
88
 
89
        @Override
90
        public void preCarregamento() {
91
                parametrosConsultaPessoaDTO = new ParametrosConsultaPessoaDTO();
92
                parametrosConsultaPessoaDTO.setEntidade(new Pessoa());
93
                prepararConsultaDemanda();
94
                limparEntidade();
95
        }
96
 
97
        @Override
98
        public void limparEntidade() {
99
                Pessoa pessoa = new Pessoa();
100
                setEnderecos(new ArrayList<Endereco>());
101
                setListaDadosBancarios(new ArrayList<DadosBancarios>());
102
                setEntidade(pessoa);
103
                setUsuario(null);
104
                setFuncionario(null);
105
                setVendedor(null);
106
                setFornecedor(null);
107
        }
108
 
109
        @Override
110
        public GenericService<Pessoa> getService() {
111
                return pessoaService;
112
        }
113
 
114
        @Override
115
        public Pessoa getEntidade() {
116
                return entidade;
117
        }
118
 
119
        @Override
120
        public void preConsultar() {
121
                setTipoOperacao(TipoOperacao.CONSULTAR);
122
        }
123
 
124
        @Override
125
        public Pessoa getId() {
126
                return getEntidade();
127
        }
128
 
129
        public TipoRegimeTributario[] getTiposRegimeTributario() {
130
                return TipoRegimeTributario.values();
131
        }
132
 
133
        public TipoComissionamento[] getTiposComissionamento() {
134
                return TipoComissionamento.values();
135
        }
136
 
137
        public TipoEstadoCivil[] getTiposEstadoCivil() {
138
                return TipoEstadoCivil.values();
139
        }
140
 
141
        public TipoRacaCor[] getTiposRacaCor() {
142
                return TipoRacaCor.values();
143
        }
144
 
145
        public TipoEscolaridade[] getTiposEscolaridade() {
146
                return TipoEscolaridade.values();
147
        }
148
 
149
        public Endereco getEndereco() {
150
                return endereco;
151
        }
152
        public void setEndereco(Endereco endereco) {
153
                this.endereco = endereco;
154
        }
155
 
156
        public List<Endereco> getEnderecos() {
157
                return enderecos;
158
        }
159
        public void setEnderecos(List<Endereco> enderecos) {
160
                this.enderecos = enderecos;
161
        }
162
 
163
        public DadosBancarios getDadosBancarios() {
164
                return dadosBancarios;
165
        }
166
        public void setDadosBancarios(DadosBancarios dadosBancarios) {
167
                this.dadosBancarios = dadosBancarios;
168
        }
169
 
170
        public List<DadosBancarios> getListaDadosBancarios() {
171
                return listaDadosBancarios;
172
        }
173
        public void setListaDadosBancarios(List<DadosBancarios> listaDadosBancarios) {
174
                this.listaDadosBancarios = listaDadosBancarios;
175
        }
176
 
177
        public Usuario getUsuario() {
178
                return usuario;
179
        }
180
        public void setUsuario(Usuario usuario) {
181
                this.usuario = usuario;
182
        }
183
 
184
        public Perfil getPerfilSelecionado() {
185
                return perfilSelecionado;
186
        }
187
        public void setPerfilSelecionado(Perfil perfilSelecionado) {
188
                this.perfilSelecionado = perfilSelecionado;
189
        }
190
 
191
        public Loja getLojaSelecionada() {
192
                return lojaSelecionada;
193
        }
194
        public void setLojaSelecionada(Loja lojaSelecionada) {
195
                this.lojaSelecionada = lojaSelecionada;
196
        }
197
 
198
        public Funcionario getFuncionario() {
199
                return funcionario;
200
        }
201
        public void setFuncionario(Funcionario funcionario) {
202
                this.funcionario = funcionario;
203
        }
204
 
205
        public Vendedor getVendedor() {
206
                return vendedor;
207
        }
208
        public void setVendedor(Vendedor vendedor) {
209
                this.vendedor = vendedor;
210
        }
211
 
212
        public Fornecedor getFornecedor() {
213
                return fornecedor;
214
        }
215
        public void setFornecedor(Fornecedor fornecedor) {
216
                this.fornecedor = fornecedor;
217
        }
218
 
219
        public ParametrosConsultaPessoaDTO getParametrosConsultaPessoaDTO() {
220
                return parametrosConsultaPessoaDTO;
221
        }
222
        public void setParametrosConsultaPessoaDTO(ParametrosConsultaPessoaDTO parametrosConsultaPessoaDTO) {
223
                this.parametrosConsultaPessoaDTO = parametrosConsultaPessoaDTO;
224
        }
225
 
226
        public PessoaConsultaPorDemanda getLazy() {
227
                return lazy;
228
        }
229
        public void setLazy(PessoaConsultaPorDemanda lazy) {
230
                this.lazy = lazy;
231
        }
232
        public void prepararConsultaDemanda() {
233
                lazy.setarParametrosConsulta(getParametrosConsultaPessoaDTO());
234
        }
235
 
236
        public List<Pessoa> getListaPessoasJuridicas() {
237
                if (VerificadorUtil.estaNuloOuVazio(listaPessoasJuridicas)) {
238
                        setListaPessoasJuridicas(pessoaService.consultarPessoasJuridicas());
239
                }
240
                return listaPessoasJuridicas;
241
        }
242
        public void setListaPessoasJuridicas(List<Pessoa> listaPessoasJuridicas) {
243
                this.listaPessoasJuridicas = listaPessoasJuridicas;
244
        }
245
 
246
        @Override
247
        protected void modificarEntidadeAntesDaOperacao() {
248
                getEntidade().setEnderecos(new HashSet<Endereco>(getEnderecos()));
249
                getEntidade().setDadosBancarios(new HashSet<DadosBancarios>(getListaDadosBancarios()));
250
        }
251
 
252
        @Override
253
        public void cadastrar(final Pessoa pessoa) {
254
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
255
                        public void execute() {
256
                                modificarEntidadeAntesDaOperacao();
257
                                getService().cadastrar(pessoa);
258
                                persistirUsuario(pessoa);
259
                                persistirFuncionario(pessoa);
260
                                persistirVendedor(pessoa);
261
                                persistirFornecedor(pessoa);
262
                                limparEntidade();
263
                                modificarEntidadeDepoisDaOperacao();
264
                                LancadorMensagem.lancarSucesso(getMensagens().get(IDENTIFICADOR_MENSAGEM_CADASTRADO_COM_SUCESSO));
265
                        }
266
                });
267
        }
268
 
269
        @Override
270
        public void alterar(final Pessoa pessoa) {
271
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
272
                        public void execute() {
273
                                modificarEntidadeAntesDaOperacao();
274
                                getService().alterar(pessoa);
275
                                persistirUsuario(pessoa);
276
                                persistirFuncionario(pessoa);
277
                                persistirVendedor(pessoa);
278
                                persistirFornecedor(pessoa);
279
                                limparEntidade();
280
                                modificarEntidadeDepoisDaOperacao();
281
                                LancadorMensagem.lancarSucesso(getMensagens().get(IDENTIFICADOR_MENSAGEM_CADASTRADO_COM_SUCESSO));
282
                        }
283
                });
284
        }
285
 
286
        private void persistirUsuario(Pessoa pessoa) {
287
                if (VerificadorUtil.naoEstaNulo(getUsuario())) {
288
                        if (VerificadorUtil.estaNulo(getUsuario().getSequencial())) {
289
                                getUsuario().setPessoa(pessoa);
290
                                getUsuario().setAtivo(true);
291
                                usuarioService.cadastrar(getUsuario());
292
                        } else {
293
                                usuarioService.alterar(getUsuario());
294
                        }
295
                }
296
        }
297
 
298
        private void persistirFuncionario(Pessoa pessoa) {
299
                if (VerificadorUtil.naoEstaNulo(getFuncionario())) {
300
                        if (VerificadorUtil.estaNulo(getFuncionario().getSequencial())) {
301
                                getFuncionario().setPessoa(pessoa);
302
                                getFuncionario().setAtivo(true);
303
                                funcionarioService.cadastrar(getFuncionario());
304
                        } else {
305
                                funcionarioService.alterar(getFuncionario());
306
                        }
307
                }
308
        }
309
 
310
        private void persistirVendedor(Pessoa pessoa) {
311
                if (VerificadorUtil.naoEstaNulo(getVendedor())) {
312
                        if (VerificadorUtil.estaNulo(getVendedor().getSequencial())) {
313
                                getVendedor().setPessoa(pessoa);
314
                                getVendedor().setAtivo(true);
315
                                vendedorService.cadastrar(getVendedor());
316
                        } else {
317
                                vendedorService.alterar(getVendedor());
318
                        }
319
                }
320
        }
321
 
322
        private void persistirFornecedor(Pessoa pessoa) {
323
                if (VerificadorUtil.naoEstaNulo(getFornecedor())) {
324
                        if (VerificadorUtil.estaNulo(getFornecedor().getSequencial())) {
325
                                getFornecedor().setPessoa(pessoa);
326
                                getFornecedor().setAtivo(true);
327
                                fornecedorService.cadastrar(getFornecedor());
328
                        } else {
329
                                fornecedorService.alterar(getFornecedor());
330
                        }
331
                }
332
        }
333
 
334
        /***************************************************************/
335
 
336
        @Override
337
        public void preDetalhar(Pessoa pessoa) {
338
                detalharPessoa(pessoa);
339
                setTipoOperacao(TipoOperacao.DETALHAR);
340
        }
341
 
342
        @Override
343
        public void preAlterar(Pessoa pessoa) {
344
                detalharPessoa(pessoa);
345
                setTipoOperacao(TipoOperacao.ALTERAR);
346
        }
347
 
348
        public void detalharPessoa(Pessoa pessoa) {
349
                limparEntidade();
350
                setEntidade(pessoaService.detalharPessoa(pessoa));
351
                setEnderecos(new ArrayList<>(getEntidade().getEnderecos()));
352
                setListaDadosBancarios(new ArrayList<>(getEntidade().getDadosBancarios()));
353
                try {setUsuario(usuarioService.consultarUsuarioPorPessoa(pessoa));} catch (Exception e) {}
354
                try {setFuncionario(funcionarioService.consultarFuncionarioPorPessoa(pessoa));} catch (Exception e) {}
355
                try {setVendedor(vendedorService.consultarVendedorPorPessoa(pessoa));} catch (Exception e) {}
356
                try {setFornecedor(fornecedorService.consultarFornecedorPorPessoa(pessoa));} catch (Exception e) {}
357
        }
358
 
359
        public void limparEndereco() {
360
                setEndereco(new Endereco());
361
        }
362
 
363
        public void limparDadoBancario() {
364
                setDadosBancarios(new DadosBancarios());
365
        }
366
 
367
        public void cadastrarEndereco() {
368
                getEndereco().setPessoa(getEntidade());
369
                getEndereco().setAtivo(true);
370
                getEnderecos().add(getEndereco());
371
                adicionandoParametroArgsConfirmandoAcao(true);
372
        }
373
 
374
        public void alterarEndereco() {
375
                removerEndereco(getEndereco());
376
                getEnderecos().add(getEndereco());
377
                adicionandoParametroArgsConfirmandoAcao(true);
378
        }
379
 
380
        public void removerEndereco(Endereco endereco) {
381
                getEnderecos().remove(getEnderecos().indexOf(endereco));
382
        }
383
 
384
        public void cadastrarDadosBancarios() {
385
                getDadosBancarios().setPessoa(getEntidade());
386
                getDadosBancarios().setAtivo(true);
387
                getListaDadosBancarios().add(getDadosBancarios());
388
                adicionandoParametroArgsConfirmandoAcao(true);
389
        }
390
 
391
        public void alterarDadosBancarios() {
392
                removerDadosBancarios(getDadosBancarios());
393
                getListaDadosBancarios().add(getDadosBancarios());
394
                adicionandoParametroArgsConfirmandoAcao(true);
395
        }
396
 
397
        public void removerDadosBancarios(DadosBancarios dadosBancarios) {
398
                getListaDadosBancarios().remove(getListaDadosBancarios().indexOf(dadosBancarios));
399
        }
400
 
401
        public void limparPerfil() {
402
                setPerfilSelecionado(null);
403
        }
404
 
405
        public void adicionarPerfil() {
406
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
407
                        public void execute() {
408
                                if (VerificadorUtil.estaNulo(getPerfilSelecionado())) {
409
                                        throw new NegocioException("Selecione o perfil");
410
                                }
411
                                UsuarioPerfil usuarioPerfil = new UsuarioPerfil();
412
                                usuarioPerfil.setPerfil(getPerfilSelecionado());
413
                                usuarioPerfil.setUsuario(getUsuario());
414
                                if (VerificadorUtil.estaNulo(getUsuario().getPerfis())) {
415
                                        getUsuario().setPerfis(new HashSet<UsuarioPerfil>());
416
                                }
417
                                getUsuario().getPerfis().add(usuarioPerfil);
418
                                adicionandoParametroArgsConfirmandoAcao(true);
419
                        }
420
                });
421
        }
422
 
423
        public void removerPerfil(UsuarioPerfil usuarioPerfil) {
424
                getUsuario().getPerfis().remove(usuarioPerfil);
425
        }
426
 
427
        public void adicionarLoja() {
428
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
429
                        public void execute() {
430
                                if (VerificadorUtil.estaNulo(getLojaSelecionada())) {
431
                                        throw new NegocioException("Selecione a loja");
432
                                }
433
                                UsuarioLoja usuarioLoja = new UsuarioLoja();
434
                                usuarioLoja.setLoja(getLojaSelecionada());
435
                                usuarioLoja.setUsuario(getUsuario());
436
                                if (VerificadorUtil.estaNulo(getUsuario().getLojas())) {
437
                                        getUsuario().setLojas(new HashSet<UsuarioLoja>());
438
                                }
439
                                getUsuario().getLojas().add(usuarioLoja);
440
                                adicionandoParametroArgsConfirmandoAcao(true);
441
                        }
442
                });
443
        }
444
 
445
        public void removerLoja(UsuarioLoja usuarioLoja) {
446
                getUsuario().getLojas().remove(usuarioLoja);
447
        }
448
 
449
        public void limparLoja() {
450
                setLojaSelecionada(null);
451
        }
452
 
453
        public void alterarSenhaUsuario() {
454
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
455
                        public void execute() {
456
                                usuarioService.alterarSenhaUsuario(getUsuario());
457
                                LancadorMensagem.lancarSucesso("SENHA ALTERADA COM SUCESSO");
458
                        }
459
                });
460
        }
461
 
462
        public void iniciarUsuario() {
463
                setUsuario(new Usuario());
464
        }
465
 
466
        public void iniciarFuncionario() {
467
                setFuncionario(new Funcionario());
468
        }
469
 
470
        public void iniciarVendedor() {
471
                setVendedor(new Vendedor());
472
        }
473
 
474
        public void iniciarFornecedor() {
475
                setFornecedor(new Fornecedor());
476
        }
477
 
478
        public Funcionario consultarFuncionarioPorPessoa(Pessoa pessoa) {
479
                return funcionarioService.consultarFuncionarioPorPessoa(pessoa);
480
        }
481
 
482
        public StreamedContent emitirFichaColaboradorEsocial() throws Exception {
483
                ByteArrayInputStream input = new ByteArrayInputStream(pessoaService.emitirFichaColaboradorEsocial((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext(), getEntidade()));
484
                return new DefaultStreamedContent(input, ArquivoUtil.retornarContentTypeArquivo("doc"), "formulario_esocial.doc");
485
        }
486
 
487
        public StreamedContent emitirExameAdmissional() throws Exception {
488
                ByteArrayInputStream input = new ByteArrayInputStream(pessoaService.emitirTermoAdmissional((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext(), getEntidade()));
489
                return new DefaultStreamedContent(input, ArquivoUtil.retornarContentTypeArquivo("docx"), "exameAdmissional.docx");
490
        }
491
 
492
        public StreamedContent emitirExameDemissional() throws Exception {
493
                ByteArrayInputStream input = new ByteArrayInputStream(pessoaService.emitirTermoDemissional((ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext(), getEntidade()));
494
                return new DefaultStreamedContent(input, ArquivoUtil.retornarContentTypeArquivo("docx"), "exameDemissional.docx");
495
        }
496
 
497
}