Subversion Repositories Integrator Subversion

Rev

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