Subversion Repositories Integrator Subversion

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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