Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 espaco 1
package br.gov.al.saude.srv.web.managebean.servidor;
2
 
3
import static br.gov.al.saude.framework.core.util.VerificadorUtil.estaNulo;
4
import static br.gov.al.saude.framework.core.util.VerificadorUtil.estaNuloOuVazio;
5
import static br.gov.al.saude.framework.core.util.VerificadorUtil.naoEstaNulo;
6
import static br.gov.al.saude.framework.core.util.VerificadorUtil.naoEstaNuloOuVazio;
7
import static br.gov.al.saude.framework.web.util.ConstantesWebHelper.IdentificadorMensagem.IDENTIFICADOR_MENSAGEM_ALTERADO_COM_SUCESSO;
8
import static br.gov.al.saude.srv.core.domain.servidor.ServidorService.PAPEL_SERVIDOR;
9
import static br.gov.al.saude.srv.core.domain.servidor.ServidorService.PAPEL_SERVIDOR_TECNICO_CSGDP;
10
import static br.gov.al.saude.srv.core.domain.servidor.ServidorService.PAPEL_SERVIDOR_TECNICO_SAD;
11
import static br.gov.al.saude.srv.core.domain.servidor.ServidorService.PAPEL_SERVIDOR_TECNICO_SAFP;
12
import static br.gov.al.saude.srv.core.domain.servidor.ServidorService.PAPEL_SERVIDOR_TECNICO_SER;
13
import static br.gov.al.saude.srv.core.domain.servidor.ServidorService.PAPEL_SERVIDOR_TECNICO_SIF;
14
import static br.gov.al.saude.srv.model.FormaIngresso.FORMA_INGRESSO_ESTAGIARIO;
15
import static br.gov.al.saude.srv.model.FormaIngresso.FORMA_INGRESSO_PRESTADOR;
16
import static br.gov.al.saude.srv.model.FormaIngresso.FORMA_INGRESSO_PROCESSO_SELETIVO;
17
 
18
import java.io.ByteArrayInputStream;
19
import java.io.ByteArrayOutputStream;
20
import java.io.File;
21
import java.io.FileFilter;
22
import java.io.IOException;
23
import java.io.OutputStream;
24
import java.io.Serializable;
25
import java.util.ArrayList;
26
import java.util.Arrays;
27
import java.util.Date;
28
import java.util.List;
29
 
30
import javax.faces.bean.ManagedBean;
31
import javax.faces.context.FacesContext;
32
import javax.imageio.stream.FileImageOutputStream;
33
import javax.servlet.ServletContext;
34
 
35
import net.sf.jasperreports.engine.JasperExportManager;
36
import net.sf.jasperreports.engine.JasperPrint;
37
 
38
import org.apache.commons.io.FilenameUtils;
39
import org.apache.commons.io.filefilter.WildcardFileFilter;
40
import org.primefaces.event.FileUploadEvent;
41
import org.primefaces.model.CroppedImage;
42
import org.primefaces.model.DefaultStreamedContent;
43
import org.primefaces.model.StreamedContent;
44
import org.primefaces.model.UploadedFile;
45
import org.springframework.beans.factory.annotation.Autowired;
46
import org.springframework.context.annotation.Scope;
47
import org.springframework.stereotype.Component;
48
import org.springframework.util.DigestUtils;
49
 
50
import br.gov.al.saude.framework.core.exception.RelatorioException;
51
import br.gov.al.saude.framework.core.generic.GenericFacade;
52
import br.gov.al.saude.framework.core.interfaces.Cadastrar;
53
import br.gov.al.saude.framework.core.model.pessoa.PessoaDTO;
54
import br.gov.al.saude.framework.core.util.StringUtils;
55
import br.gov.al.saude.framework.core.validador.Validador;
56
import br.gov.al.saude.framework.model.PessoaDocumentoView;
57
import br.gov.al.saude.framework.model.PessoaFisicaView;
58
import br.gov.al.saude.framework.model.PessoaTelefoneView;
59
import br.gov.al.saude.framework.model.SetorView;
60
import br.gov.al.saude.framework.model.UfView;
61
import br.gov.al.saude.framework.model.UsuarioView;
62
import br.gov.al.saude.framework.web.exception.VerificadorLancamentoException;
63
import br.gov.al.saude.framework.web.exception.VerificadorLancamentoException.CommandBean;
64
import br.gov.al.saude.framework.web.generic.AbstractBeanComModalScg;
65
import br.gov.al.saude.framework.web.generic.GenericConsultaDemanda;
66
import br.gov.al.saude.framework.web.message.LancadorMensagem;
67
import br.gov.al.saude.framework.web.model.ModelCampoCombo;
68
import br.gov.al.saude.srv.core.application.banco.BancoFacade;
69
import br.gov.al.saude.srv.core.application.cargo.CargoFacade;
70
import br.gov.al.saude.srv.core.application.carreira.CarreiraFacade;
71
import br.gov.al.saude.srv.core.application.conselho.ConselhoFacade;
72
import br.gov.al.saude.srv.core.application.cursoestagio.CursoEstagioFacade;
73
import br.gov.al.saude.srv.core.application.deficiencia.DeficienciaFacade;
74
import br.gov.al.saude.srv.core.application.especialidade.EspecialidadeFacade;
75
import br.gov.al.saude.srv.core.application.formaingresso.FormaIngressoFacade;
76
import br.gov.al.saude.srv.core.application.funcao.FuncaoFacade;
77
import br.gov.al.saude.srv.core.application.grauinstrucao.GrauInstrucaoFacade;
78
import br.gov.al.saude.srv.core.application.instituicaoestagio.InstituicaoEstagioFacade;
79
import br.gov.al.saude.srv.core.application.nacionalidade.NacionalidadeFacade;
80
import br.gov.al.saude.srv.core.application.ordenador.Ordenador;
81
import br.gov.al.saude.srv.core.application.ordenador.impl.OrdenadorImpl;
82
import br.gov.al.saude.srv.core.application.orgao.OrgaoFacade;
83
import br.gov.al.saude.srv.core.application.servidor.ServidorFacade;
84
import br.gov.al.saude.srv.core.application.setorview.SetorViewFacade;
85
import br.gov.al.saude.srv.core.application.situacaoservidor.SituacaoServidorFacade;
86
import br.gov.al.saude.srv.core.application.uf.UfFacade;
87
import br.gov.al.saude.srv.core.application.unidade.UnidadeFacade;
88
import br.gov.al.saude.srv.model.Banco;
89
import br.gov.al.saude.srv.model.Cargo;
90
import br.gov.al.saude.srv.model.Carreira;
91
import br.gov.al.saude.srv.model.Conselho;
92
import br.gov.al.saude.srv.model.CursoEstagio;
93
import br.gov.al.saude.srv.model.Deficiencia;
94
import br.gov.al.saude.srv.model.Especialidade;
95
import br.gov.al.saude.srv.model.FormaIngresso;
96
import br.gov.al.saude.srv.model.Funcao;
97
import br.gov.al.saude.srv.model.GrauInstrucao;
98
import br.gov.al.saude.srv.model.InstituicaoEstagio;
99
import br.gov.al.saude.srv.model.Nacionalidade;
100
import br.gov.al.saude.srv.model.Orgao;
101
import br.gov.al.saude.srv.model.Servidor;
102
import br.gov.al.saude.srv.model.ServidorContaBancaria;
103
import br.gov.al.saude.srv.model.ServidorDadoFuncional;
104
import br.gov.al.saude.srv.model.ServidorDadoFuncionalConselho;
105
import br.gov.al.saude.srv.model.ServidorDadoFuncionalContratado;
106
import br.gov.al.saude.srv.model.ServidorDadoFuncionalContratadoEstagiario;
107
import br.gov.al.saude.srv.model.ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo;
108
import br.gov.al.saude.srv.model.ServidorDadoFuncionalMatricula;
109
import br.gov.al.saude.srv.model.ServidorDadoFuncionalMatriculaCarreira;
110
import br.gov.al.saude.srv.model.ServidorDependente;
111
import br.gov.al.saude.srv.model.ServidorLocalizacaoArquivo;
112
import br.gov.al.saude.srv.model.ServidorQualificacao;
113
import br.gov.al.saude.srv.model.SituacaoServidor;
114
import br.gov.al.saude.srv.model.Unidade;
115
import br.gov.al.saude.srv.model.dto.CargoDTO;
116
import br.gov.al.saude.srv.model.dto.FuncaoDTO;
117
import br.gov.al.saude.srv.model.dto.ParametroConsultaCargoDTO;
118
import br.gov.al.saude.srv.model.dto.ParametroConsultaFuncaoDTO;
119
import br.gov.al.saude.srv.model.dto.ParametroConsultaServidorDTO;
120
import br.gov.al.saude.srv.model.dto.ServidorDTO;
121
import br.gov.al.saude.srv.model.embedded.ServidorContaBancarialId;
122
import br.gov.al.saude.srv.model.enums.TipoClasseCarreira;
123
import br.gov.al.saude.srv.model.enums.TipoNivelCarreira;
124
import br.gov.al.saude.srv.model.enums.TipoNivelEstagio;
125
import br.gov.al.saude.srv.model.enums.TipoRegimeTrabalho;
126
import br.gov.al.saude.srv.model.enums.TipoSituacaoCadastral;
127
import br.gov.al.saude.srv.model.enums.TipoVinculo;
128
 
129
@Component
130
@ManagedBean
131
@Scope("view")
132
public class ServidorBean extends AbstractBeanComModalScg<Servidor> implements Serializable {
133
 
134
        private static final long serialVersionUID = 1L;
135
 
136
        private ServidorFacade servidorFacade;
137
        private FormaIngressoFacade formaIngressoFacade;
138
        private UnidadeFacade unidadeFacade;
139
        private FuncaoFacade funcaoFacade;
140
        private CargoFacade cargoFacade;
141
        private InstituicaoEstagioFacade instituicaoEstagioFacade;
142
        private CursoEstagioFacade cursoEstagioFacade;
143
 
144
        private List<PessoaDocumentoView> listaDocumento;
145
        private List<PessoaTelefoneView> listaTelefone;
146
        private PessoaDocumentoView documentoSelecionado;
147
 
148
        private List<ServidorDadoFuncional> listaDadosFuncionais;
149
        private ServidorDadoFuncional dadoFuncionalSelecionado;
150
        private ServidorDadoFuncionalMatricula dadoFuncionalMatricula;
151
        private ServidorDadoFuncionalMatriculaCarreira dadoFuncionalMatriculaCarreira;
152
        private ServidorDadoFuncionalContratadoEstagiario dadoFuncionalContratadoEstagiario;
153
        private ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo dadoFuncionalContratadoPrestadorProcessoSeletivo;
154
 
155
        private ServidorDadoFuncional dadoFuncionalSelecionadoDetalhar;
156
        private ServidorDadoFuncionalMatricula dadoFuncionalMatriculaDetalhar;
157
        private ServidorDadoFuncionalMatriculaCarreira dadoFuncionalMatriculaCarreiraDetalhar;
158
        private ServidorDadoFuncionalContratadoEstagiario dadoFuncionalContratadoEstagiarioDetalhar;
159
        private ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo dadoFuncionalContratadoPrestadorProcessoSeletivoDetalhar;
160
        private Boolean cadastrarDadoFuncional;
161
 
162
        private List<ServidorContaBancaria> listaContasBancarias;
163
        private ServidorContaBancaria contaBancariaSelecionada;
164
        private Boolean cadastrarContaBancaria;
165
 
166
        private List<ServidorDependente> listaDependentes;
167
        private ServidorDependente dependenteSelecionado;
168
        private Boolean cadastrarDependente;
169
 
170
        private List<ServidorQualificacao> listaQualificacoes;
171
        private ServidorQualificacao qualificacaoSelecionada;
172
        private Boolean cadastrarQualificacao;
173
 
174
        private ParametroConsultaServidorDTO parametro;
175
 
176
        private ServidorLocalizacaoArquivo servidorLocalizacaoArquivoSelecionado;
177
        private ServidorDadoFuncionalConselho servidorDadoFuncionalConselho;
178
 
179
        private Servidor servidorSelecionado;
180
 
181
        private Boolean cadastrarPessoa;
182
        private Boolean servidorDados;
183
        private Boolean consultarServidor;
184
        private Boolean consultaDesabilitada;
185
 
186
        private ConsultaServidorPorDemanda lazy;
187
        private ConsultaFuncaoDTOPorDemanda lazyFuncaoDTO;
188
        private ConsultaCargoDTOPorDemanda lazyCargoDTO;
189
 
190
        private Ordenador ordenador;
191
        private Validador validador;
192
 
193
        private String tipoSituacaoCadastral = "";
194
        private List<ModelCampoCombo> listaTipoSituacaoCadastral;
195
 
196
        private List<TipoVinculo> listaTiposVinculo;
197
        private TipoVinculo tipoVinculoSelecionado;
198
        private List<FormaIngresso> listaFormasIngresso;
199
        private FormaIngresso formaIngressoSelecionada;
200
        private List<Unidade> listaUnidadesAtivas;
201
        private Funcao funcaoConsulta;
202
        private Cargo cargoConsulta;
203
        private List<InstituicaoEstagio> listaInstituicaoEstagio;
204
        private List<CursoEstagio> listaCursoEstagio;
205
        private List<ModelCampoCombo> listaNivelEstagio;
206
        private List<ModelCampoCombo> listaCargaHoraria;
207
 
208
        private UploadedFile fotoUpload;
209
        private CroppedImage fotoRecortada;
210
        private String nomeArquivoFoto;
211
 
212
        /* antigo Ficha Cadastral Bean */
213
        private GrauInstrucaoFacade grauInstrucaoFacade;
214
        private NacionalidadeFacade nacionalidadeFacade;
215
        private DeficienciaFacade deficienciaFacade;
216
        private SituacaoServidorFacade situacaoServidorFacade;
217
        private EspecialidadeFacade especialidadeFacade;
218
        private OrgaoFacade orgaoExternoFacade;
219
        private CarreiraFacade carreiraFacade;
220
        private SetorViewFacade setorViewFacade;
221
        private ConselhoFacade conselhoFacade;
222
        private UfFacade ufFacade;
223
        private BancoFacade bancoFacade;
224
 
225
        private List<GrauInstrucao> listaGrauInstrucao;
226
        private List<Nacionalidade> listaNacionalidade;
227
        private List<Deficiencia> listaDeficiencia;
228
        private List<SituacaoServidor> listaSituacaoServidor;
229
        private List<Especialidade> listaEspecialidade;
230
        private List<Orgao> listaOrgao;
231
        private List<Carreira> listaCarreira;
232
        private List<SetorView> listaSetorView;
233
        private List<Conselho> listaConselho;
234
        private List<UfView> listaUfView;
235
        private List<Banco> listaBanco;
236
        private List<ModelCampoCombo> listaTipoClasseCarreira;
237
        private List<ModelCampoCombo> listaTipoRegimeTrabalho;
238
        private List<ModelCampoCombo> listaTipoNivelCarreira;
239
 
240
        private Boolean listasInicializadas;
241
 
242
        @Autowired
243
        public ServidorBean(ServidorFacade servidorFacade, ConsultaServidorPorDemanda lazy, FormaIngressoFacade formaIngressoFacade, UnidadeFacade unidadeFacade,
244
                        FuncaoFacade funcaoFacade, CargoFacade cargoFacade, InstituicaoEstagioFacade instituicaoEstagioFacade, CursoEstagioFacade cursoEstagioFacade,
245
                        Validador validador, ConsultaFuncaoDTOPorDemanda lazyFuncaoDTO, ConsultaCargoDTOPorDemanda lazyCargoDTO,
246
                        GrauInstrucaoFacade grauInstrucaoFacade, NacionalidadeFacade nacionalidadeFacade, DeficienciaFacade deficienciaFacade,
247
                        SituacaoServidorFacade situacaoServidorFacade, EspecialidadeFacade especialidadeFacade, OrgaoFacade orgaoFacade,  
248
                        CarreiraFacade carreiraFacade, SetorViewFacade setorViewFacade, ConselhoFacade conselhoFacade, UfFacade ufFacade, BancoFacade bancoFacade) {
249
 
250
                this.servidorFacade = servidorFacade;
251
                this.formaIngressoFacade = formaIngressoFacade;
252
                this.unidadeFacade = unidadeFacade;
253
                this.funcaoFacade = funcaoFacade;
254
                this.cargoFacade = cargoFacade;
255
                this.instituicaoEstagioFacade = instituicaoEstagioFacade;
256
                this.cursoEstagioFacade = cursoEstagioFacade;
257
                this.lazy = lazy;
258
                this.lazyFuncaoDTO = lazyFuncaoDTO;
259
                this.lazyCargoDTO = lazyCargoDTO;
260
                this.ordenador = new OrdenadorImpl();
261
                this.validador = validador;
262
                setCadastrarPessoa(false);
263
                setServidorDados(false);
264
                setConsultarServidor(true);
265
                consultaDesabilitada = false;
266
 
267
                this.grauInstrucaoFacade = grauInstrucaoFacade;
268
                this.nacionalidadeFacade = nacionalidadeFacade;
269
                this.deficienciaFacade = deficienciaFacade;
270
                this.situacaoServidorFacade = situacaoServidorFacade;
271
                this.especialidadeFacade = especialidadeFacade;
272
                this.orgaoExternoFacade = orgaoFacade;
273
                this.carreiraFacade = carreiraFacade;
274
                this.setorViewFacade = setorViewFacade;
275
                this.conselhoFacade = conselhoFacade;
276
                this.ufFacade = ufFacade;
277
                this.bancoFacade = bancoFacade;
278
                listasInicializadas = false;
279
        }
280
 
281
        @Override
282
        public Servidor getEntidade() {
283
                if (estaNulo(entidade)) {
284
                        setEntidade(new Servidor());
285
                }
286
                return entidade;
287
        }
288
 
289
        @Override
290
        public GenericFacade<Servidor> getFacade() {
291
                return servidorFacade;
292
        }
293
 
294
        @Override
295
        public Object getId() {
296
                return getEntidade().getId();
297
        }
298
 
299
        @Override
300
        public String getTelaCrud() {
301
                return "/paginas/index.xhtml";
302
        }
303
 
304
        @Override
305
        public void limparEntidade() {
306
                entidade = new Servidor();
307
        }
308
 
309
        @Override
310
        public GenericConsultaDemanda<Servidor> getLazy() {
311
                return null;
312
        }
313
 
314
        public ConsultaServidorPorDemanda getLazyDTO() {
315
                return this.lazy;
316
        }
317
 
318
        public ConsultaFuncaoDTOPorDemanda getLazyFuncaoDTO() {
319
                return this.lazyFuncaoDTO;
320
        }
321
 
322
        public ConsultaCargoDTOPorDemanda getLazyCargoDTO() {
323
                return this.lazyCargoDTO;
324
        }
325
 
326
        @Override
327
        protected void modificarEntidadeAntesDaOperacao() {
328
                atribuirListasAhEntidade();
329
                atribuirLocalizacaoArquivoCasoTenhaSidoPreenchida();
330
                if (estaNuloOuVazio(getServidorSelecionado().getUsuario())) {
331
                        UsuarioView usuario = new UsuarioView();
332
                        usuario.setSequencialPessoa(getSequencialPessoaUsuarioLogado());
333
                        getServidorSelecionado().setUsuario(usuario);
334
                }
335
        }
336
 
337
        private void atribuirListasAhEntidade() {
338
                getServidorSelecionado().getPessoa().getDocumentos().clear();
339
                getServidorSelecionado().getPessoa().getDocumentos().addAll(getListaDocumento());
340
 
341
                getServidorSelecionado().getListaServidorDadoFuncional().clear();
342
                getServidorSelecionado().getListaServidorDadoFuncional().addAll(getListaDadosFuncionais());
343
 
344
                getServidorSelecionado().getListaServidorContaBancaria().clear();
345
                getServidorSelecionado().getListaServidorContaBancaria().addAll(getListaContasBancarias());
346
 
347
                getServidorSelecionado().getListaServidorDependente().clear();
348
                getServidorSelecionado().getListaServidorDependente().addAll(getListaDependentes());
349
 
350
                getServidorSelecionado().getListaServidorQualificacao().clear();
351
                getServidorSelecionado().getListaServidorQualificacao().addAll(getListaQualificacoes());
352
        }
353
 
354
        private void atribuirLocalizacaoArquivoCasoTenhaSidoPreenchida() {
355
                if(servidorLocalizacaoArquivoFoiPreenchido()) {
356
                        getServidorSelecionado().setServidorLocalizacaoArquivo(getServidorLocalizacaoArquivoSelecionado());
357
                        getServidorLocalizacaoArquivoSelecionado().setServidor(getServidorSelecionado());
358
                } else {
359
                        getServidorSelecionado().setServidorLocalizacaoArquivo(null);
360
                }
361
        }
362
 
363
        private Boolean servidorLocalizacaoArquivoFoiPreenchido() {
364
                return naoEstaNuloOuVazio(getServidorLocalizacaoArquivoSelecionado().getNumeroCaixa())
365
                                || naoEstaNuloOuVazio(getServidorLocalizacaoArquivoSelecionado().getNumeroPasta())
366
                                || naoEstaNuloOuVazio(getServidorLocalizacaoArquivoSelecionado().getNumeroPrateleira())
367
                                || naoEstaNuloOuVazio(getServidorLocalizacaoArquivoSelecionado().getTipoLado());
368
        }
369
 
370
        public List<PessoaDocumentoView> getListaDocumento() {
371
                if (listaDocumento == null) {
372
                        listaDocumento = new ArrayList<PessoaDocumentoView>();
373
                        if(getServidorSelecionado() != null) {
374
                                listaDocumento.addAll(getServidorSelecionado().getListaDocumentosDePessoa());
375
                        }
376
                }
377
                return listaDocumento;
378
        }
379
 
380
        public void setListaDocumento(List<PessoaDocumentoView> listaDocumento) {
381
                this.listaDocumento = listaDocumento;
382
        }
383
 
384
        public List<PessoaTelefoneView> getListaTelefone() {
385
                if (listaTelefone == null) {
386
                        listaTelefone = new ArrayList<PessoaTelefoneView>();
387
                        if(getServidorSelecionado() != null) {
388
                                listaTelefone.addAll(getServidorSelecionado().getPessoa().getTelefones());
389
                        }
390
                }
391
 
392
                return listaTelefone;
393
        }
394
 
395
        public void setListaTelefone(List<PessoaTelefoneView> listaTelefone) {
396
                this.listaTelefone = listaTelefone;
397
        }
398
 
399
        public List<ServidorDadoFuncional> getListaDadosFuncionais() {
400
                if (listaDadosFuncionais == null) {
401
                        listaDadosFuncionais = new ArrayList<ServidorDadoFuncional>();
402
                        if(getServidorSelecionado() != null) {
403
                                listaDadosFuncionais.addAll(getServidorSelecionado().getListaServidorDadoFuncional());
404
                        }
405
                }
406
                return listaDadosFuncionais;
407
        }
408
        public void setListaDadosFuncionais(List<ServidorDadoFuncional> listaDadosFuncionais) {
409
                this.listaDadosFuncionais = listaDadosFuncionais;
410
        }
411
 
412
        public List<ServidorContaBancaria> getListaContasBancarias() {
413
                if (listaContasBancarias == null) {
414
                        listaContasBancarias = new ArrayList<ServidorContaBancaria>();
415
                        if(getServidorSelecionado() != null) {
416
                                listaContasBancarias.addAll(getServidorSelecionado().getListaServidorContaBancaria());
417
                        }
418
                }
419
                return listaContasBancarias;
420
        }
421
        public void setListaContasBancarios(List<ServidorContaBancaria> listaContasBancarias) {
422
                this.listaContasBancarias = listaContasBancarias;
423
        }
424
 
425
        public List<ServidorDependente> getListaDependentes() {
426
                if (listaDependentes == null) {
427
                        listaDependentes = new ArrayList<ServidorDependente>();
428
                        if(getServidorSelecionado() != null) {
429
                                listaDependentes.addAll(getServidorSelecionado().getListaServidorDependente());
430
                        }
431
                }
432
                return listaDependentes;
433
        }
434
        public void setListaDependentes(List<ServidorDependente> listaDependentes) {
435
                this.listaDependentes = listaDependentes;
436
        }
437
 
438
        public List<ServidorQualificacao> getListaQualificacoes() {
439
                if (listaQualificacoes == null) {
440
                        listaQualificacoes = new ArrayList<ServidorQualificacao>();
441
                        if(getServidorSelecionado() != null) {
442
                                listaQualificacoes.addAll(ordenador.ordenar(getServidorSelecionado().getListaServidorQualificacao()));
443
                        }
444
                }
445
                return listaQualificacoes;
446
        }
447
        public void setListaQualificacoes(List<ServidorQualificacao> listaQualificacoes) {
448
                this.listaQualificacoes = listaQualificacoes;
449
        }
450
 
451
        public PessoaDocumentoView getDocumentoSelecionado() {
452
                return documentoSelecionado;
453
        }
454
        public void setDocumentoSelecionado(PessoaDocumentoView documentoSelecionado) {
455
                this.documentoSelecionado = documentoSelecionado;
456
        }
457
 
458
        public void setarDadoFuncionalDeAcordoComTipoVinculoEeFormaIngresso() {
459
                dadoFuncionalMatricula = null;
460
                dadoFuncionalMatriculaCarreira = null;
461
                dadoFuncionalContratadoEstagiario = null;
462
                dadoFuncionalContratadoPrestadorProcessoSeletivo = null;
463
 
464
                if(getTipoVinculoSelecionado().equals(TipoVinculo.EFETIVO) || getTipoVinculoSelecionado().equals(TipoVinculo.CELETISTA)) {
465
                        dadoFuncionalMatriculaCarreira = new ServidorDadoFuncionalMatriculaCarreira();
466
                        setDadoFuncionalSelecionado(dadoFuncionalMatriculaCarreira);
467
                }
468
                if(getTipoVinculoSelecionado().equals(TipoVinculo.COMISSIONADO)) {
469
                        dadoFuncionalMatricula = new ServidorDadoFuncionalMatricula();
470
                        setDadoFuncionalSelecionado(dadoFuncionalMatricula);
471
                }
472
                if(getTipoVinculoSelecionado().equals(TipoVinculo.CONTRATADO)) {
473
                        if(getFormaIngressoSelecionada().getCodigo().equals(FORMA_INGRESSO_ESTAGIARIO)) {
474
                                dadoFuncionalContratadoEstagiario = new ServidorDadoFuncionalContratadoEstagiario();
475
                                setDadoFuncionalSelecionado(dadoFuncionalContratadoEstagiario);
476
                        }
477
                        if(getFormaIngressoSelecionada().getCodigo().equals(FORMA_INGRESSO_PRESTADOR) || getFormaIngressoSelecionada().getCodigo().equals(FORMA_INGRESSO_PROCESSO_SELETIVO)) {
478
                                dadoFuncionalContratadoPrestadorProcessoSeletivo = new ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo();
479
                                setDadoFuncionalSelecionado(dadoFuncionalContratadoPrestadorProcessoSeletivo);
480
                        }
481
                }
482
                getDadoFuncionalSelecionado().setServidorDadoFuncionalConselho(new ServidorDadoFuncionalConselho());
483
        }
484
 
485
        public ServidorDadoFuncional getDadoFuncionalSelecionado() {
486
                if (estaNulo(dadoFuncionalSelecionado)) {
487
                        dadoFuncionalSelecionado = new ServidorDadoFuncional();
488
                }
489
                return dadoFuncionalSelecionado;
490
        }
491
 
492
        public void setDadoFuncionalSelecionado(ServidorDadoFuncional dadoFuncionalSelecionado) {
493
                this.dadoFuncionalSelecionado = dadoFuncionalSelecionado;
494
        }
495
 
496
        public ServidorDadoFuncional getDadoFuncionalSelecionadoDetalhar() {
497
                if (estaNulo(dadoFuncionalSelecionadoDetalhar)) {
498
                        dadoFuncionalSelecionadoDetalhar = new ServidorDadoFuncional();
499
                }
500
                return dadoFuncionalSelecionadoDetalhar;
501
        }
502
 
503
        public void setDadoFuncionalSelecionadoDetalhar(ServidorDadoFuncional dadoFuncionalSelecionado) {
504
                this.dadoFuncionalSelecionadoDetalhar = dadoFuncionalSelecionado;
505
        }
506
 
507
        public ServidorDadoFuncionalMatricula getDadoFuncionalMatricula() {
508
                return dadoFuncionalMatricula;
509
        }
510
 
511
        public void setDadoFuncionalMatricula(ServidorDadoFuncionalMatricula dadoFuncional) {
512
                this.dadoFuncionalMatricula = dadoFuncional;
513
        }
514
 
515
        public ServidorDadoFuncionalMatriculaCarreira getDadoFuncionalMatriculaCarreira() {
516
                return dadoFuncionalMatriculaCarreira;
517
        }
518
 
519
        public void setDadoFuncionalMatriculaCarreira(ServidorDadoFuncionalMatriculaCarreira dadoFuncional) {
520
                this.dadoFuncionalMatriculaCarreira = dadoFuncional;
521
        }
522
 
523
        public ServidorDadoFuncionalContratadoEstagiario getDadoFuncionalContratadoEstagiario() {
524
                return dadoFuncionalContratadoEstagiario;
525
        }
526
 
527
        public void setDadoFuncionalContratadoEstagiario(ServidorDadoFuncionalContratadoEstagiario dadoFuncional) {
528
                this.dadoFuncionalContratadoEstagiario = dadoFuncional;
529
        }
530
 
531
        public ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo getDadoFuncionalContratadoPrestadorProcessoSeletivo() {
532
                return dadoFuncionalContratadoPrestadorProcessoSeletivo;
533
        }
534
 
535
        public void setDadoFuncionalContratadoPrestadorProcessoSeletivo(ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo dadoFuncional) {
536
                this.dadoFuncionalContratadoPrestadorProcessoSeletivo = dadoFuncional;
537
        }
538
 
539
        public ServidorDadoFuncionalMatricula getDadoFuncionalMatriculaDetalhar() {
540
                return dadoFuncionalMatriculaDetalhar;
541
        }
542
 
543
        public void setDadoFuncionalMatriculaDetalhar(ServidorDadoFuncionalMatricula dadoFuncional) {
544
                this.dadoFuncionalMatriculaDetalhar = dadoFuncional;
545
        }
546
 
547
        public ServidorDadoFuncionalMatriculaCarreira getDadoFuncionalMatriculaCarreiraDetalhar() {
548
                return dadoFuncionalMatriculaCarreiraDetalhar;
549
        }
550
 
551
        public void setDadoFuncionalMatriculaCarreiraDetalhar(ServidorDadoFuncionalMatriculaCarreira dadoFuncional) {
552
                this.dadoFuncionalMatriculaCarreiraDetalhar = dadoFuncional;
553
        }
554
 
555
        public ServidorDadoFuncionalContratadoEstagiario getDadoFuncionalContratadoEstagiarioDetalhar() {
556
                return dadoFuncionalContratadoEstagiarioDetalhar;
557
        }
558
 
559
        public void setDadoFuncionalContratadoEstagiarioDetalhar(ServidorDadoFuncionalContratadoEstagiario dadoFuncional) {
560
                this.dadoFuncionalContratadoEstagiarioDetalhar = dadoFuncional;
561
        }
562
 
563
        public ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo getDadoFuncionalContratadoPrestadorProcessoSeletivoDetalhar() {
564
                return dadoFuncionalContratadoPrestadorProcessoSeletivoDetalhar;
565
        }
566
 
567
        public void setDadoFuncionalContratadoPrestadorProcessoSeletivoDetalhar(ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo dadoFuncional) {
568
                this.dadoFuncionalContratadoPrestadorProcessoSeletivoDetalhar = dadoFuncional;
569
        }
570
 
571
        public ServidorContaBancaria getContaBancariaSelecionada() {
572
                if (estaNulo(this.contaBancariaSelecionada)){
573
                        setContaBancariaSelecionada(new ServidorContaBancaria());
574
                }
575
                return contaBancariaSelecionada;
576
        }
577
        public void setContaBancariaSelecionada(ServidorContaBancaria contaBancariaSelecionada) {
578
                this.contaBancariaSelecionada = contaBancariaSelecionada;
579
        }
580
 
581
        public ServidorDependente getDependenteSelecionado() {
582
                if (estaNulo(this.dependenteSelecionado)){
583
                        setDependenteSelecionado(new ServidorDependente());
584
                }
585
                return dependenteSelecionado;
586
        }
587
        public void setDependenteSelecionado(ServidorDependente dependenteSelecionado) {
588
                this.dependenteSelecionado = dependenteSelecionado;
589
        }
590
 
591
        public ServidorQualificacao getQualificacaoSelecionada() {
592
                if (estaNulo(this.qualificacaoSelecionada)){
593
                        setQualificacaoSelecionada(new ServidorQualificacao());
594
                }
595
                return qualificacaoSelecionada;
596
        }
597
        public void setQualificacaoSelecionada(ServidorQualificacao qualificacaoSelecionada) {
598
                this.qualificacaoSelecionada = qualificacaoSelecionada;
599
        }
600
 
601
        public Boolean getCadastrarDadoFuncional() {
602
                return cadastrarDadoFuncional;
603
        }
604
        public void setCadastrarDadoFuncional(Boolean cadastrarDadoFuncional) {
605
                this.cadastrarDadoFuncional = cadastrarDadoFuncional;
606
        }
607
 
608
        public void setCadastrarContaBancaria(Boolean cadastrarContaBancaria) {
609
                this.cadastrarContaBancaria = cadastrarContaBancaria;
610
        }
611
        public Boolean getCadastrarContaBancaria() {
612
                return cadastrarContaBancaria;
613
        }
614
 
615
        public Boolean getCadastrarDependente() {
616
                return cadastrarDependente;
617
        }
618
        public void setCadastrarDependente(Boolean cadastrarDependente) {
619
                this.cadastrarDependente = cadastrarDependente;
620
        }
621
 
622
        public Boolean getCadastrarQualificacao() {
623
                return cadastrarQualificacao;
624
        }
625
        public void setCadastrarQualificacao(Boolean cadastrarQualificacao) {
626
                this.cadastrarQualificacao = cadastrarQualificacao;
627
        }
628
 
629
        public ServidorLocalizacaoArquivo getServidorLocalizacaoArquivoSelecionado() {
630
                if(estaNulo(servidorLocalizacaoArquivoSelecionado)) {
631
                        servidorLocalizacaoArquivoSelecionado = estaNulo(getServidorSelecionado().getServidorLocalizacaoArquivo()) ?
632
                                        new ServidorLocalizacaoArquivo() : getServidorSelecionado().getServidorLocalizacaoArquivo();
633
                }
634
                return servidorLocalizacaoArquivoSelecionado;
635
        }
636
 
637
        public void setServidorLocalizacaoArquivoSelecionado(ServidorLocalizacaoArquivo servidorLocalizacaoArquivoSelecionado) {
638
                this.servidorLocalizacaoArquivoSelecionado = servidorLocalizacaoArquivoSelecionado;
639
        }
640
 
641
        public ServidorDadoFuncionalConselho getServidorDadoFuncionalConselho() {
642
                if(estaNulo(servidorDadoFuncionalConselho)) {
643
                        servidorDadoFuncionalConselho = new ServidorDadoFuncionalConselho();
644
                }
645
                return servidorDadoFuncionalConselho;
646
        }
647
 
648
        public void setServidorDadoFuncionalConselho(ServidorDadoFuncionalConselho servidorDadoFuncionalConselho) {
649
                this.servidorDadoFuncionalConselho = servidorDadoFuncionalConselho;
650
        }
651
 
652
        public String getTipoSituacaoCadastral() {
653
                return tipoSituacaoCadastral;
654
        }
655
 
656
        public void setTipoSituacaoCadastral(String tipoSituacaoCadastral) {
657
                this.tipoSituacaoCadastral = tipoSituacaoCadastral;
658
        }
659
 
660
        public List<ModelCampoCombo> getListaTipoSituacaoCadastral() {
661
                listaTipoSituacaoCadastral = new ArrayList<ModelCampoCombo>();
662
 
663
                if(isUsuarioConectadoTecnicoSIF()) {
664
                        listaTipoSituacaoCadastral.add(new ModelCampoCombo(TipoSituacaoCadastral.VALIDADO.getDescricao(), TipoSituacaoCadastral.VALIDADO.getValue()));
665
                        listaTipoSituacaoCadastral.add(new ModelCampoCombo(TipoSituacaoCadastral.HOMOLOGADO.getDescricao(), TipoSituacaoCadastral.HOMOLOGADO.getValue()));
666
                } else {
667
                        listaTipoSituacaoCadastral.add(new ModelCampoCombo(TipoSituacaoCadastral.VALIDADO.getDescricao(), TipoSituacaoCadastral.VALIDADO.getValue()));
668
                }
669
 
670
                return listaTipoSituacaoCadastral;
671
        }
672
 
673
        public void setListaTipoSituacaoCadastral(List<ModelCampoCombo> listaTipoSituacaoCadastral) {
674
                this.listaTipoSituacaoCadastral = listaTipoSituacaoCadastral;
675
        }
676
 
677
        public List<TipoVinculo> getListaTiposVinculo() {
678
                if(estaNulo(listaTiposVinculo)) {
679
                        listaTiposVinculo = gerarListaTiposVinculosParaDadoFuncional();
680
                }
681
                return listaTiposVinculo;
682
        }
683
 
684
        public void setListaTiposVinculo(List<TipoVinculo> listaTiposVinculo) {
685
                this.listaTiposVinculo = listaTiposVinculo;
686
        }
687
 
688
        public TipoVinculo getTipoVinculoSelecionado() {
689
                return tipoVinculoSelecionado;
690
        }
691
 
692
        public void setTipoVinculoSelecionado(TipoVinculo tipoVinculoSelecionado) {
693
                this.tipoVinculoSelecionado = tipoVinculoSelecionado;
694
        }
695
 
696
        public List<FormaIngresso> getListaFormasIngresso() {
697
                listaFormasIngresso = formaIngressoFacade.listarFormaIngressoParaDadoFuncional(getServidorSelecionado().getSituacaoCadastral(), getUsuarioLogado(), getTipoVinculoSelecionado());
698
                return listaFormasIngresso;
699
        }
700
 
701
        public void setListaFormasIngresso(List<FormaIngresso> listaFormasIngresso) {
702
                this.listaFormasIngresso = listaFormasIngresso;
703
        }
704
 
705
        public FormaIngresso getFormaIngressoSelecionada() {
706
                return formaIngressoSelecionada;
707
        }
708
 
709
        public void setFormaIngressoSelecionada(FormaIngresso formaIngressoSelecionada) {
710
                this.formaIngressoSelecionada = formaIngressoSelecionada;
711
        }
712
 
713
        public List<Unidade> getListaUnidadesAtivas() {
714
                if(estaNulo(listaUnidadesAtivas)) {
715
                        listaUnidadesAtivas = new ArrayList<Unidade>();
716
                }
717
                if(naoEstaNulo(getDadoFuncionalSelecionado().getOrgaoLotacao())) {
718
                        Unidade unidade = new Unidade();
719
                        unidade.setOrgao(getDadoFuncionalSelecionado().getOrgaoLotacao());
720
                        listaUnidadesAtivas = unidadeFacade.listarUnidadeAtiva(unidade);
721
                }
722
                return listaUnidadesAtivas;
723
        }
724
 
725
        public void setListaUnidadesAtivas(List<Unidade> listaUnidadesAtivas) {
726
                this.listaUnidadesAtivas = listaUnidadesAtivas;
727
        }
728
 
729
        public Funcao getFuncaoConsulta() {
730
                if(estaNulo(funcaoConsulta)) {
731
                        funcaoConsulta = new Funcao();
732
                }
733
                return funcaoConsulta;
734
        }
735
 
736
        public void setFuncaoConsulta(Funcao funcaoConsulta) {
737
                this.funcaoConsulta = funcaoConsulta;
738
        }
739
 
740
        public Cargo getCargoConsulta() {
741
                if(estaNulo(cargoConsulta)) {
742
                        cargoConsulta = new Cargo();
743
                }
744
                return cargoConsulta;
745
        }
746
 
747
        public void setCargoConsulta(Cargo cargoConsulta) {
748
                this.cargoConsulta = cargoConsulta;
749
        }
750
 
751
        public List<InstituicaoEstagio> getListaInstituicaoEstagio() {
752
                return listaInstituicaoEstagio;
753
        }
754
 
755
        public void setListaInstituicaoEstagio(List<InstituicaoEstagio> listaInstituicaoEstagio) {
756
                this.listaInstituicaoEstagio = listaInstituicaoEstagio;
757
        }
758
 
759
        public List<CursoEstagio> getListaCursoEstagio() {
760
                return listaCursoEstagio;
761
        }
762
 
763
        public void setListaCursoEstagio(List<CursoEstagio> listaCursoEstagio) {
764
                this.listaCursoEstagio = listaCursoEstagio;
765
        }
766
 
767
        public List<ModelCampoCombo> getListaNivelEstagio() {
768
                listaNivelEstagio = new ArrayList<ModelCampoCombo>();
769
 
770
                for (TipoNivelEstagio nivel : TipoNivelEstagio.values()) {  
771
                        listaNivelEstagio.add(new ModelCampoCombo(nivel.toString(), nivel.getValue()));
772
                }
773
 
774
                return listaNivelEstagio;
775
        }
776
 
777
        public void setListaNivelEstagio(List<ModelCampoCombo> listaNivelEstagio) {
778
                this.listaNivelEstagio = listaNivelEstagio;
779
        }
780
 
781
        public List<ModelCampoCombo> getListaCargaHoraria() {
782
                listaCargaHoraria = new ArrayList<ModelCampoCombo>();
783
 
784
                if(getFormaIngressoSelecionada().getCodigo().equals(FORMA_INGRESSO_ESTAGIARIO)) {
785
                        listaCargaHoraria.add(new ModelCampoCombo("20", 20));
786
                        listaCargaHoraria.add(new ModelCampoCombo("30", 30));
787
                        listaCargaHoraria.add(new ModelCampoCombo("60", 60));
788
                } else {
789
                        listaCargaHoraria.add(new ModelCampoCombo("20", 20));
790
                        listaCargaHoraria.add(new ModelCampoCombo("24", 24));
791
                        listaCargaHoraria.add(new ModelCampoCombo("30", 30));
792
                        listaCargaHoraria.add(new ModelCampoCombo("40", 40));
793
                }
794
 
795
                return listaCargaHoraria;
796
        }
797
 
798
        public void setListaCargaHoraria(List<ModelCampoCombo> listaCargaHoraria) {
799
                this.listaCargaHoraria = listaCargaHoraria;
800
        }
801
 
802
        public UploadedFile getFotoUpload() {
803
                return fotoUpload;
804
        }
805
 
806
        public void setFotoUpload(UploadedFile fotoUpload) {
807
                this.fotoUpload = fotoUpload;
808
        }
809
 
810
        public CroppedImage getFotoRecortada() {
811
                return fotoRecortada;
812
        }
813
 
814
        public void setFotoRecortada(CroppedImage fotoRecortada) {
815
                this.fotoRecortada = fotoRecortada;
816
        }
817
 
818
        public String getNomeArquivoFoto() {
819
                return nomeArquivoFoto;
820
        }
821
 
822
        public void setNomeArquivoFoto(String nomeArquivoFoto) {
823
                this.nomeArquivoFoto = nomeArquivoFoto;
824
        }
825
 
826
        public void handleFileUpload(final FileUploadEvent event) throws IOException {
827
                setFotoUpload(event.getFile());
828
                salvarArquivoFotoUpload();
829
        }
830
 
831
        private void apagarArquivosFotosDoServidor() {
832
                File pastaFotos = new File(getCaminhoPastaFotosUploadTemporarias());
833
                FileFilter fileFilter = new WildcardFileFilter(getIdentificadorServidorCodificado() + "_*.*");
834
                File[] fotos = pastaFotos.listFiles(fileFilter);
835
                for(int i = 0; i < fotos.length; i++) {
836
                        fotos[i].delete();
837
                }
838
        }
839
 
840
        private void salvarArquivoFotoUpload() {
841
                apagarArquivosFotosDoServidor();
842
                gerarNomeArquivoFoto();
843
                salvarArquivoFoto(getFotoUpload().getContents());
844
        }
845
 
846
        public void recortarFoto() throws IOException {
847
                if(naoEstaNulo(getFotoRecortada())) {
848
                        getServidorSelecionado().setFoto(getFotoRecortada().getBytes());
849
                        salvarArquivoFotoRecortada();
850
                        setFotoUpload(null);
851
                }
852
        }
853
 
854
        private void salvarArquivoFotoRecortada() {
855
                apagarArquivosFotosDoServidor();
856
                gerarNomeArquivoFoto();
857
                salvarArquivoFoto(getFotoRecortada().getBytes());
858
        }
859
 
860
        private String getCaminhoCompletoFotoUpload() {
861
                return getCaminhoPastaFotosUploadTemporarias() + getNomeArquivoFoto();
862
        }
863
 
864
        private String getCaminhoPastaFotosUploadTemporarias() {
865
                ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
866
        return servletContext.getRealPath("") + File.separator + "paginas" + File.separator + "fotos_temp" + File.separator;
867
        }
868
 
869
        private void gerarNomeArquivoFoto() {
870
                String identificadorServidor = getIdentificadorServidorCodificado();
871
                String timestamp = new Long(new Date().getTime()).toString();
872
                String extensao = naoEstaNulo(getFotoUpload()) ? FilenameUtils.getExtension(getFotoUpload().getFileName()) : "jpg";
873
                setNomeArquivoFoto(identificadorServidor + "_" + timestamp + "." + extensao);
874
        }
875
 
876
        private String getIdentificadorServidorCodificado() {
877
                String identificadorServidor = getServidorSelecionado().getSequencialDaPessoa().toString();
878
                return DigestUtils.md5DigestAsHex(identificadorServidor.getBytes());
879
        }
880
 
881
        private void salvarArquivoFotoBanco() {
882
                if(naoEstaNulo(servidorSelecionado) && naoEstaNuloOuVazio(servidorSelecionado.getFoto())) {
883
                        apagarArquivosFotosDoServidor();
884
                        gerarNomeArquivoFoto();
885
                        salvarArquivoFoto(getServidorSelecionado().getFoto());
886
                }
887
        }
888
 
889
        private void salvarArquivoFoto(byte[] conteudo) {
890
                try {
891
                        FileImageOutputStream imagem = new FileImageOutputStream(new File(getCaminhoCompletoFotoUpload()));
892
                        imagem.write(conteudo, 0, conteudo.length);
893
                        imagem.close();
894
                } catch (IOException e) {
895
                        e.printStackTrace();
896
                }
897
        }
898
 
899
        public Servidor getServidorSelecionado() {
900
                if (estaNulo(servidorSelecionado) && getConsultarServidor()) {
901
                        servidorSelecionado = servidorFacade.consultarServidorPorSequencial(getSequencialPessoaUsuarioLogado());
902
                        if (estaNulo(servidorSelecionado)) {
903
                                setServidorSelecionado(new Servidor());
904
                                getServidorSelecionado().setPessoa(servidorFacade.consultarPessoaPorSequencial(getSequencialPessoaUsuarioLogado()));
905
                        }
906
                        salvarArquivoFotoBanco();
907
                }
908
                return servidorSelecionado;
909
        }
910
 
911
        public void setServidorSelecionado(Servidor servidorSelecionado) {
912
                this.servidorSelecionado = servidorSelecionado;
913
        }
914
 
915
        public void adicionarDadoFuncionalAhEntidade() {
916
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
917
                        public void execute() {
918
                                preencherCamposDadoFuncional();
919
                                validarObjeto(getDadoFuncionalSelecionado());
920
                                getListaDadosFuncionais().add(getDadoFuncionalSelecionado());
921
                                limparEntidadeDadoFuncional();
922
                        }
923
                });
924
        }
925
 
926
        public void alterarDadoFuncional() {
927
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
928
                        public void execute() {
929
                                preencherCamposDadoFuncional();
930
                                validarObjeto(getDadoFuncionalSelecionado());
931
                                getListaDadosFuncionais().set(getListaDadosFuncionais().indexOf(getDadoFuncionalSelecionado()), getDadoFuncionalSelecionado());
932
                                limparEntidadeDadoFuncional();
933
                        }
934
                });
935
        }
936
 
937
        private void preencherCamposDadoFuncional() {
938
                getDadoFuncionalSelecionado().setFormaIngresso(getFormaIngressoSelecionada());
939
                getDadoFuncionalSelecionado().setServidor(getServidorSelecionado());
940
                atribuirServidorDadoFuncionalConselhoCasoTenhaSidoPreenchido();
941
        }
942
 
943
        private void atribuirServidorDadoFuncionalConselhoCasoTenhaSidoPreenchido() {
944
                if(servidorDadoFuncionalConselhoFoiPreenchido()) {
945
                        getDadoFuncionalSelecionado().setServidorDadoFuncionalConselho(getServidorDadoFuncionalConselho());
946
                        getServidorDadoFuncionalConselho().setServidorDadoFuncional(getDadoFuncionalSelecionado());
947
                } else {
948
                        getDadoFuncionalSelecionado().setServidorDadoFuncionalConselho(null);
949
                }
950
        }
951
 
952
        private Boolean servidorDadoFuncionalConselhoFoiPreenchido() {
953
                return naoEstaNuloOuVazio(getServidorDadoFuncionalConselho().getNumeroInscricaoConselho())
954
                                || naoEstaNuloOuVazio(getServidorDadoFuncionalConselho().getConselho())
955
                                || naoEstaNuloOuVazio(getServidorDadoFuncionalConselho().getUf());
956
        }
957
 
958
        public void limparEntidadeDadoFuncional() {
959
                limparDadosFuncionais();
960
                limparDadosConsultaFuncao();
961
                setCadastrarDadoFuncional(true);
962
        }
963
 
964
        public void adicionarContaBancariaAhEntidade() {
965
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
966
                        public void execute() {
967
                                adicionarReferenciasNaEntidadeContaBancaria();
968
                                validarObjeto(getContaBancariaSelecionada());
969
                                getListaContasBancarias().add(getContaBancariaSelecionada());
970
                                limparEntidadeContaBancaria();
971
                        }
972
                });
973
        }
974
 
975
        public void alterarContaBancaria() {
976
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
977
                        public void execute() {
978
                                adicionarReferenciasNaEntidadeContaBancaria();
979
                                validarObjeto(getContaBancariaSelecionada());
980
                                getListaContasBancarias().set(getListaContasBancarias().indexOf(getContaBancariaSelecionada()), getContaBancariaSelecionada());
981
                                limparEntidadeContaBancaria();
982
                        }
983
                });
984
        }
985
 
986
        private void adicionarReferenciasNaEntidadeContaBancaria() {
987
                ServidorContaBancarialId servidorContaBancarialId = new ServidorContaBancarialId();
988
                servidorContaBancarialId.setSequencialPessoaServidor(getServidorSelecionado().getSequencialDaPessoa());
989
                getContaBancariaSelecionada().setServidorContaBancarialId(servidorContaBancarialId);
990
                getContaBancariaSelecionada().setServidor(getServidorSelecionado());
991
                getContaBancariaSelecionada().getServidorContaBancarialId().setCodigoBanco(getContaBancariaSelecionada().getBanco().getCodigo());
992
        }
993
 
994
        public void limparEntidadeContaBancaria() {
995
                setContaBancariaSelecionada(new ServidorContaBancaria());
996
                setCadastrarContaBancaria(true);
997
        }
998
 
999
        public void adicionarDependenteAhEntidade() {
1000
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
1001
                        public void execute() {
1002
                                removerFormatacaoCpfDependente(getDependenteSelecionado());
1003
                                adicionarReferenciasNaEntidadeDependente();
1004
                                validarObjeto(getDependenteSelecionado());
1005
                                getListaDependentes().add(getDependenteSelecionado());
1006
                                limparEntidadeDependente();
1007
                        }
1008
                });
1009
        }
1010
 
1011
        public void alterarDependente() {
1012
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
1013
                        public void execute() {
1014
                                removerFormatacaoCpfDependente(getDependenteSelecionado());
1015
                                adicionarReferenciasNaEntidadeDependente();
1016
                                validarObjeto(getDependenteSelecionado());
1017
                                getListaDependentes().set(getListaDependentes().indexOf(getDependenteSelecionado()), getDependenteSelecionado());
1018
                                limparEntidadeDependente();
1019
                        }
1020
                });
1021
        }
1022
 
1023
        private void removerFormatacaoCpfDependente(ServidorDependente dependente) {
1024
                if(naoEstaNuloOuVazio(dependente.getNumeroCpf())) {
1025
                        dependente.setNumeroCpf(StringUtils.removerDaStringFormatacoesInformadas(dependente.getNumeroCpf(), StringUtils.FORMATACAO_PONTO, StringUtils.FORMATACAO_HIFEN));
1026
                }
1027
        }
1028
 
1029
        private void adicionarReferenciasNaEntidadeDependente() {
1030
                getDependenteSelecionado().setServidor(getServidorSelecionado());
1031
        }
1032
 
1033
        public void limparEntidadeDependente() {
1034
                setDependenteSelecionado(new ServidorDependente());
1035
                setCadastrarDependente(true);
1036
        }
1037
 
1038
        public void adicionarQualificacaoAhEntidade() {
1039
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
1040
                        public void execute() {
1041
                                adicionarReferenciasNaEntidadeQualificacao();
1042
                                validarObjeto(getQualificacaoSelecionada());
1043
                                getListaQualificacoes().add(getQualificacaoSelecionada());
1044
                                limparEntidadeQualificacao();
1045
                        }
1046
                });
1047
        }
1048
 
1049
        public void alterarQualificacao() {
1050
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
1051
                        public void execute() {
1052
                                adicionarReferenciasNaEntidadeQualificacao();
1053
                                validarObjeto(getQualificacaoSelecionada());
1054
                                getListaQualificacoes().set(getListaQualificacoes().indexOf(getQualificacaoSelecionada()), getQualificacaoSelecionada());
1055
                                limparEntidadeQualificacao();
1056
                        }
1057
                });
1058
        }
1059
 
1060
        private void adicionarReferenciasNaEntidadeQualificacao() {
1061
                getQualificacaoSelecionada().setServidor(getServidorSelecionado());
1062
        }
1063
 
1064
        public void limparEntidadeQualificacao() {
1065
                setQualificacaoSelecionada(new ServidorQualificacao());
1066
                setCadastrarQualificacao(true);
1067
        }
1068
 
1069
        private UsuarioView getUsuarioLogado() {
1070
                return ((UsuarioView) getUsuario().getPrincipal());
1071
        }
1072
 
1073
        private Long getSequencialPessoaUsuarioLogado() {
1074
                return ((UsuarioView) getUsuario().getPrincipal()).getSequencialPessoa();
1075
        }
1076
 
1077
        public void setarEntidadeDadosFuncionais(ServidorDadoFuncional dadoFuncional) {
1078
                limparDadosFuncionais();
1079
 
1080
                if(dadoFuncional instanceof ServidorDadoFuncionalMatriculaCarreira) {
1081
                        dadoFuncionalMatriculaCarreira = (ServidorDadoFuncionalMatriculaCarreira) dadoFuncional;
1082
                }
1083
                if(dadoFuncional instanceof ServidorDadoFuncionalMatricula && dadoFuncionalMatriculaCarreira == null) {
1084
                        dadoFuncionalMatricula = (ServidorDadoFuncionalMatricula) dadoFuncional;
1085
                }
1086
                if(dadoFuncional instanceof ServidorDadoFuncionalContratadoEstagiario) {
1087
                        dadoFuncionalContratadoEstagiario = (ServidorDadoFuncionalContratadoEstagiario) dadoFuncional;
1088
                }
1089
                if(dadoFuncional instanceof ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo) {
1090
                        dadoFuncionalContratadoPrestadorProcessoSeletivo = (ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo) dadoFuncional;
1091
                }
1092
                setDadoFuncionalSelecionado(dadoFuncional);
1093
                setFormaIngressoSelecionada(dadoFuncional.getFormaIngresso());
1094
                setTipoVinculoSelecionado(TipoVinculo.parse(getFormaIngressoSelecionada().getTipoVinculo()));
1095
                setarDadoFuncionalConselho(getDadoFuncionalSelecionado());
1096
                setCadastrarDadoFuncional(false);
1097
        }
1098
 
1099
        public void setarEntidadeDadosFuncionaisDetalhar(ServidorDadoFuncional dadoFuncional) {
1100
                limparDadosFuncionais();
1101
 
1102
                if(dadoFuncional instanceof ServidorDadoFuncionalMatriculaCarreira) {
1103
                        dadoFuncionalMatriculaCarreiraDetalhar = (ServidorDadoFuncionalMatriculaCarreira) dadoFuncional;
1104
                }
1105
                if(dadoFuncional instanceof ServidorDadoFuncionalMatricula && dadoFuncionalMatriculaCarreiraDetalhar == null) {
1106
                        dadoFuncionalMatriculaDetalhar = (ServidorDadoFuncionalMatricula) dadoFuncional;
1107
                }
1108
                if(dadoFuncional instanceof ServidorDadoFuncionalContratadoEstagiario) {
1109
                        dadoFuncionalContratadoEstagiarioDetalhar = (ServidorDadoFuncionalContratadoEstagiario) dadoFuncional;
1110
                }
1111
                if(dadoFuncional instanceof ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo) {
1112
                        dadoFuncionalContratadoPrestadorProcessoSeletivoDetalhar = (ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo) dadoFuncional;
1113
                }
1114
                setDadoFuncionalSelecionadoDetalhar(dadoFuncional);
1115
                setCadastrarDadoFuncional(false);
1116
        }
1117
 
1118
        private void setarDadoFuncionalConselho(ServidorDadoFuncional dadoFuncional) {
1119
                servidorDadoFuncionalConselho = estaNulo(dadoFuncional.getServidorDadoFuncionalConselho()) ?
1120
                        new ServidorDadoFuncionalConselho() : dadoFuncional.getServidorDadoFuncionalConselho();
1121
        }
1122
 
1123
        public void setarEntidadeContasBancarias(ServidorContaBancaria contaBancaria) {
1124
                setContaBancariaSelecionada(contaBancaria);
1125
                setCadastrarContaBancaria(false);
1126
        }
1127
 
1128
        public void setarEntidadeDependentes(ServidorDependente servidorDependente) {
1129
                setDependenteSelecionado(servidorDependente);
1130
                setCadastrarDependente(false);
1131
        }
1132
 
1133
        public void setarEntidadeQualificacoes(ServidorQualificacao servidorQualificacao) {
1134
                setQualificacaoSelecionada(servidorQualificacao);
1135
                setCadastrarQualificacao(false);
1136
        }
1137
 
1138
        public void removerDadoFuncionalDaLista(final ServidorDadoFuncional dadoFuncional) {
1139
                if (getListaDadosFuncionais().contains(dadoFuncional)) {
1140
                        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
1141
                                public void execute() {
1142
                                        getListaDadosFuncionais().remove(dadoFuncional);
1143
                                        limparEntidadeDadoFuncional();
1144
                                }
1145
                        });
1146
                }
1147
        }
1148
 
1149
        public void removerContaBancariaDaLista(final ServidorContaBancaria contaBancaria) {
1150
                if (getListaContasBancarias().contains(contaBancaria)) {
1151
                        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
1152
                                public void execute() {
1153
                                        getListaContasBancarias().remove(contaBancaria);
1154
                                        limparEntidadeContaBancaria();
1155
                                }
1156
                        });
1157
                }
1158
        }
1159
 
1160
        public void removerDependenteDaLista(final ServidorDependente servidorDependente) {
1161
                if (getListaDependentes().contains(servidorDependente)) {
1162
                        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
1163
                                public void execute() {
1164
                                        getListaDependentes().remove(servidorDependente);
1165
                                        limparEntidadeDependente();
1166
                                }
1167
                        });
1168
                }
1169
        }
1170
 
1171
        public void removerQualificacaoDaLista(final ServidorQualificacao servidorQualificacao) {
1172
                if (getListaQualificacoes().contains(servidorQualificacao)) {
1173
                        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
1174
                                public void execute() {
1175
                                        getListaQualificacoes().remove(servidorQualificacao);
1176
                                        limparEntidadeQualificacao();
1177
                                }
1178
                        });
1179
                }
1180
        }
1181
 
1182
        public ParametroConsultaServidorDTO getParametro() {
1183
                if (estaNulo(parametro)) {
1184
                        parametro = new ParametroConsultaServidorDTO();
1185
                }
1186
                return parametro;
1187
        }
1188
 
1189
        public void setParametro(ParametroConsultaServidorDTO parametro) {
1190
                this.parametro = parametro;
1191
        }
1192
 
1193
        public void prepararRestricoesParaConsulta() {
1194
                this.lazy.setParametro(getParametro());
1195
        }
1196
 
1197
        public void prepararRestricoesParaConsultaFuncao() {
1198
                lazyFuncaoDTO.setParametros(getParametrosConsultaFuncaoDTO());
1199
        }
1200
 
1201
        public void prepararRestricoesParaConsultaCargo() {
1202
                lazyCargoDTO.setParametros(getParametrosConsultaCargoDTO());
1203
        }
1204
 
1205
        public Boolean getCadastrarPessoa() {
1206
                return cadastrarPessoa;
1207
        }
1208
        public void setCadastrarPessoa(Boolean cadastrarPessoa) {
1209
                this.cadastrarPessoa = cadastrarPessoa;
1210
        }
1211
 
1212
        public Boolean getServidorDados() {
1213
                return servidorDados;
1214
        }
1215
        public void setServidorDados(Boolean servidorDados) {
1216
                this.servidorDados = servidorDados;
1217
        }
1218
 
1219
        public Boolean getConsultarServidor() {
1220
                return consultarServidor;
1221
        }
1222
 
1223
        public void setConsultarServidor(Boolean consultarServidor) {
1224
                this.consultarServidor = consultarServidor;
1225
        }
1226
 
1227
        public void desabilitarConsultarServidor() {
1228
                if(!consultaDesabilitada) {
1229
                        setConsultarServidor(false);
1230
                        consultaDesabilitada = true;
1231
                }
1232
        }
1233
 
1234
        public Date getDataAtual() {
1235
                return new Date();
1236
        }
1237
 
1238
        public void prepararParaCadastrarPessoa(){
1239
                setCadastrarPessoa(true);
1240
                setServidorDados(true);
1241
                setConsultarServidor(true);
1242
        }
1243
 
1244
        @Override
1245
        public void setarPessoa(final PessoaDTO pessoaDTO) {
1246
                setCadastrarPessoa(false);
1247
 
1248
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
1249
                        @Override
1250
                        public void execute() {
1251
                                PessoaFisicaView pessoaFisicaView = new PessoaFisicaView();
1252
                                pessoaFisicaView.setSequencialPessoa(pessoaDTO.getId());
1253
 
1254
                                ServidorDTO servidorDTO = new ServidorDTO();
1255
                                servidorDTO.setSequencialPessoa(pessoaFisicaView.getSequencialPessoa());
1256
                                preparaServidorParaAtualizarDados(servidorDTO);
1257
 
1258
                                if (estaNulo(servidorSelecionado)) {
1259
                                        Servidor servidor = new Servidor();
1260
                                        PessoaFisicaView pessoaConsultada = ((ServidorFacade)getFacade()).consultarPessoaPorSequencial((Long)pessoaDTO.getId());
1261
                                        servidor.setPessoa(pessoaConsultada);
1262
                                        UsuarioView usuario = new UsuarioView();
1263
                                        usuario.setSequencialPessoa(getSequencialPessoaUsuarioLogado());
1264
                                        servidor.setUsuario(usuario);
1265
                                        setServidorSelecionado(servidor);
1266
                                }
1267
 
1268
                                iniciarListas();
1269
                        }
1270
                });
1271
        }
1272
 
1273
        @Override
1274
        protected void popularObjetoSeIdPessoaDiferenteDeNulo(String idPessoaCadastrada) {
1275
                if (naoEstaNuloOuVazio(idPessoaCadastrada)) {
1276
                  if(!idPessoaCadastrada.equals("0")){
1277
                          PessoaDTO pessoaDTO = new PessoaDTO();
1278
                          pessoaDTO.setId(Long.valueOf(idPessoaCadastrada));
1279
                          setarPessoa(pessoaDTO);
1280
                          setServidorDados(true);
1281
                          setConsultarServidor(true);
1282
                  }
1283
                }
1284
        }
1285
 
1286
        @Override
1287
        public void alterar(final Servidor servidor) {
1288
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
1289
                        public void execute() {
1290
                                modificarEntidadeAntesDaOperacao();
1291
                                ((ServidorFacade)getFacade()).atualizarServidor(servidor);
1292
                                ((ServidorFacade)getFacade()).atualizarServidorLegado(servidor);
1293
                                limparEntidade();
1294
                                salvarArquivoFotoBanco();
1295
                                LancadorMensagem.lancarSucesso(getMensagens().get(IDENTIFICADOR_MENSAGEM_ALTERADO_COM_SUCESSO));
1296
                        }
1297
                });
1298
        }
1299
 
1300
        public void alterarServidor(final Servidor servidor) {
1301
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
1302
                        public void execute() {
1303
                                modificarEntidadeAntesDaOperacao();
1304
                                ((ServidorFacade)getFacade()).atualizarServidor(servidor);
1305
                                ((ServidorFacade)getFacade()).atualizarServidorLegado(servidor);
1306
                                limparEntidade();
1307
                                salvarArquivoFotoBanco();
1308
                                LancadorMensagem.lancarSucesso(getMensagens().get(IDENTIFICADOR_MENSAGEM_ALTERADO_COM_SUCESSO));
1309
                        }
1310
                });
1311
        }
1312
 
1313
        public void alterarSituacaoCadastral(final Servidor servidor) {
1314
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
1315
                        public void execute() {
1316
                                modificarEntidadeAntesDaOperacao();
1317
                                ((ServidorFacade)getFacade()).atualizarServidor(servidor);
1318
                                setarUsuarioAlteracaoSituacaoCadastral(servidor);
1319
                                ((ServidorFacade)getFacade()).alterarSituacaoFichaCadastral(servidor, TipoSituacaoCadastral.parse(tipoSituacaoCadastral));
1320
                                ((ServidorFacade)getFacade()).atualizarServidorLegado(servidor);
1321
                                limparEntidade();
1322
                                salvarArquivoFotoBanco();
1323
                                LancadorMensagem.lancarSucesso(getMensagens().get(IDENTIFICADOR_MENSAGEM_ALTERADO_COM_SUCESSO));
1324
                        }
1325
                });
1326
        }
1327
 
1328
        public TipoSituacaoCadastral[] getTiposSitucoesCadastrais() {
1329
                return TipoSituacaoCadastral.values();
1330
        }
1331
 
1332
        public String descricaoSituacaoServidor(ServidorDadoFuncional servidorDadoFuncional) {
1333
                if(servidorDadoFuncional instanceof ServidorDadoFuncionalMatricula) {
1334
                        return getSituacaoServidorDadoFuncionalMatricula((ServidorDadoFuncionalMatricula)servidorDadoFuncional);
1335
                }
1336
                if(servidorDadoFuncional instanceof ServidorDadoFuncionalContratado) {
1337
                        return getSituacaoServidorDadoFuncionalContratado((ServidorDadoFuncionalContratado)servidorDadoFuncional);
1338
                }
1339
                return null;
1340
        }
1341
 
1342
        private <T extends ServidorDadoFuncionalMatricula> String getSituacaoServidorDadoFuncionalMatricula(T dadoFuncional) {
1343
                return ((ServidorDadoFuncionalMatricula)dadoFuncional).getSituacaoServidor().getDescricao();
1344
        }
1345
 
1346
        private <T extends ServidorDadoFuncionalContratado> String getSituacaoServidorDadoFuncionalContratado(T dadoFuncional) {
1347
                return dadoFuncional.getDescricaoSituacaoServidor();
1348
        }
1349
 
1350
        private List<TipoVinculo> gerarListaTiposVinculosParaDadoFuncional() {
1351
                List<TipoVinculo> lista = new ArrayList<TipoVinculo>();
1352
 
1353
                if(isSituacaoFichaCadastralHomologadoOuValidado() && (isUsuarioConectadoTecnicoSAFP() || isUsuarioConectadoTecnicoSER())) {
1354
                        lista.add(TipoVinculo.CONTRATADO);
1355
                } else {
1356
                        lista.add(TipoVinculo.EFETIVO);
1357
                        lista.add(TipoVinculo.COMISSIONADO);
1358
                        lista.add(TipoVinculo.CONTRATADO);
1359
                        lista.add(TipoVinculo.CELETISTA);
1360
                }
1361
 
1362
                return lista;
1363
        }
1364
 
1365
        public Boolean temPermissaoAlterarDadosGerais() {
1366
                if(isSituacaoFichaCadastralHomologadoOuValidado()) {
1367
                        if(isUsuarioConectadoServidor() ||
1368
                           isUsuarioConectadoTecnicoSAFP() ||
1369
                           isUsuarioConectadoTecnicoSER() ||
1370
                           isUsuarioConectadoTecnicoSAD() ||
1371
                           isUsuarioConectadoTecnicoSCGDP()
1372
                           ) {
1373
                                return false;
1374
                        }
1375
                }
1376
                return true;
1377
        }
1378
 
1379
        public Boolean temPermissaoEspecialAlterarDadoFuncional(ServidorDadoFuncional dadoFuncional) {
1380
                if(isSituacaoFichaCadastralHomologadoOuValidado() && naoEstaNulo(dadoFuncional)) {
1381
                        if(isUsuarioConectadoTecnicoSAFP() && dadoFuncional.getFormaIngresso().getCodigo().equals(FORMA_INGRESSO_PRESTADOR)) {
1382
                                return true;
1383
                        }
1384
                        if(isUsuarioConectadoTecnicoSER() && dadoFuncional.getFormaIngresso().getCodigo().equals(FORMA_INGRESSO_ESTAGIARIO)) {
1385
                                return true;
1386
                        }
1387
                }
1388
                return false;
1389
        }
1390
 
1391
        public Boolean temPermissaoEspecialAlterarDadoBancario() {
1392
                if(isSituacaoFichaCadastralHomologadoOuValidado() && isUsuarioConectadoTecnicoSAFP()) {
1393
                        return true;
1394
                }
1395
                return false;
1396
        }
1397
 
1398
        public Boolean temPermissaoEspecialAlterarQualificacao() {
1399
                if(isUsuarioConectadoTecnicoSAD()) {
1400
                        return true;
1401
                }
1402
                return false;
1403
        }
1404
 
1405
        private Boolean isSituacaoFichaCadastralHomologadoOuValidado() {
1406
                return getServidorSelecionado().getSituacaoCadastral().equals(TipoSituacaoCadastral.HOMOLOGADO)
1407
                                || getServidorSelecionado().getSituacaoCadastral().equals(TipoSituacaoCadastral.VALIDADO);
1408
        }
1409
 
1410
        private Boolean isUsuarioConectadoServidor() {
1411
                return verificarPermissao(PAPEL_SERVIDOR) && !verificarPermissao(PAPEL_SERVIDOR_TECNICO_SIF);
1412
        }
1413
 
1414
        private Boolean isUsuarioConectadoTecnicoSAFP() {
1415
                return verificarPermissao(PAPEL_SERVIDOR_TECNICO_SAFP) && !verificarPermissao(PAPEL_SERVIDOR_TECNICO_SIF);
1416
        }
1417
 
1418
        private Boolean isUsuarioConectadoTecnicoSER() {
1419
                return verificarPermissao(PAPEL_SERVIDOR_TECNICO_SER) && !verificarPermissao(PAPEL_SERVIDOR_TECNICO_SIF);
1420
        }
1421
 
1422
        private Boolean isUsuarioConectadoTecnicoSAD() {
1423
                return verificarPermissao(PAPEL_SERVIDOR_TECNICO_SAD) && !verificarPermissao(PAPEL_SERVIDOR_TECNICO_SIF);
1424
        }
1425
 
1426
        private Boolean isUsuarioConectadoTecnicoSCGDP() {
1427
                return verificarPermissao(PAPEL_SERVIDOR_TECNICO_CSGDP) && !verificarPermissao(PAPEL_SERVIDOR_TECNICO_SIF);
1428
        }
1429
 
1430
        private Boolean isUsuarioConectadoTecnicoSIF() {
1431
                return verificarPermissao(PAPEL_SERVIDOR_TECNICO_SIF);
1432
        }
1433
 
1434
        public StreamedContent emitirFichaCadastral(final Long sequencialPessoa) throws Exception {
1435
                return new RelatorioVerificadorLancamentoException().verificarLancamentoException(new CommandRelatorio() {
1436
                        private JasperPrint relatorio;
1437
 
1438
                        @Override
1439
                        public StreamedContent execute() throws Exception {
1440
                                relatorio = servidorFacade.emitirFichaCadastral(sequencialPessoa);
1441
                                return gerarPdf(relatorio, "Ficha Cadastral");
1442
                        }
1443
                });
1444
        }
1445
 
1446
        private class RelatorioVerificadorLancamentoException {
1447
                public RelatorioVerificadorLancamentoException() {}
1448
 
1449
                public StreamedContent verificarLancamentoException(CommandRelatorio commandRelatorio) {
1450
                        try {
1451
                                return commandRelatorio.execute();
1452
                        } catch (RuntimeException e) {
1453
                                LancadorMensagem.lancarAlerta(e.getMessage());
1454
                        } catch (Exception e) {
1455
                                LancadorMensagem.lancarErro(e.getMessage());
1456
                        }
1457
                        return null;
1458
                }
1459
        }
1460
 
1461
        private interface CommandRelatorio {
1462
                StreamedContent execute() throws RelatorioException, Exception;
1463
        }
1464
 
1465
        protected StreamedContent gerarPdf(JasperPrint relatorio, String nomeRelatorio) throws Exception {
1466
                byte[] arquivo = null;
1467
                arquivo = JasperExportManager.exportReportToPdf(relatorio);
1468
                String nomeDoArquivo = nomeRelatorio + ".pdf";
1469
                OutputStream out = new ByteArrayOutputStream();
1470
                out.write(arquivo);
1471
                ByteArrayInputStream input = new ByteArrayInputStream(((ByteArrayOutputStream)out).toByteArray());
1472
                return new DefaultStreamedContent(input, "application/pdf", nomeDoArquivo);
1473
        }
1474
 
1475
        private void setarUsuarioAlteracaoSituacaoCadastral(final Servidor servidor) {
1476
                UsuarioView usuarioHomologacao = new UsuarioView();
1477
                usuarioHomologacao.setSequencialPessoa(getSequencialPessoaUsuarioLogado());
1478
                servidor.setUsuarioAlteracaoSituacaoCadastral(usuarioHomologacao);
1479
        }
1480
 
1481
        public void preparaServidorParaAtualizarDados(ServidorDTO servidor) {
1482
                setServidorSelecionado(((ServidorFacade)getFacade()).consultarServidorPorSequencial(servidor.getSequencialPessoa()));
1483
                limparListasServidor();
1484
                setServidorDados(true);
1485
                setConsultarServidor(true);
1486
                salvarArquivoFotoBanco();
1487
        }
1488
 
1489
        private void limparListasServidor() {
1490
                setListaDocumento(null);
1491
                setListaDadosFuncionais(null);
1492
                setListaContasBancarios(null);
1493
                setListaDependentes(null);
1494
                setListaQualificacoes(null);
1495
        }
1496
 
1497
        public void limparDadosFuncionais() {
1498
                dadoFuncionalSelecionado = null;
1499
                dadoFuncionalMatricula = null;
1500
                dadoFuncionalMatriculaCarreira = null;
1501
                dadoFuncionalContratadoEstagiario = null;
1502
                dadoFuncionalContratadoPrestadorProcessoSeletivo = null;
1503
                dadoFuncionalMatriculaDetalhar = null;
1504
                dadoFuncionalMatriculaCarreiraDetalhar = null;
1505
                dadoFuncionalContratadoEstagiarioDetalhar = null;
1506
                dadoFuncionalContratadoPrestadorProcessoSeletivoDetalhar = null;
1507
                formaIngressoSelecionada = null;
1508
                servidorDadoFuncionalConselho = null;
1509
        }
1510
 
1511
        public void limparDadosConsultaFuncao() {
1512
                funcaoConsulta = new Funcao();
1513
                lazyFuncaoDTO.habilitarConsulta();
1514
                prepararRestricoesParaConsultaFuncao();
1515
        }
1516
 
1517
        public void limparDadosConsultaCargo() {
1518
                cargoConsulta = new Cargo();
1519
                lazyCargoDTO.habilitarConsulta();
1520
                prepararRestricoesParaConsultaCargo();
1521
        }
1522
 
1523
        public void limparDadosConsultaServidor() {
1524
                limparListasServidor();
1525
                setServidorDados(false);
1526
                setConsultarServidor(false);
1527
                setFotoUpload(null);
1528
                setFotoRecortada(null);
1529
        }
1530
 
1531
        public void setarFuncaoDadoFuncional(FuncaoDTO funcaoDTO) {
1532
                Funcao funcao = new Funcao();
1533
                funcao.setCodigo(funcaoDTO.getCodigo());
1534
                if(getDadoFuncionalSelecionado() instanceof ServidorDadoFuncionalMatricula) {
1535
                        ((ServidorDadoFuncionalMatricula)getDadoFuncionalSelecionado()).setFuncao(funcaoFacade.consultarPorId(funcao));
1536
                }
1537
        }
1538
 
1539
        public void setarCargoDadoFuncional(CargoDTO cargoDTO) {
1540
                Cargo cargo = new Cargo();
1541
                cargo.setCodigo(cargoDTO.getCodigo());
1542
                if(getDadoFuncionalSelecionado() instanceof ServidorDadoFuncionalMatriculaCarreira) {
1543
                        ((ServidorDadoFuncionalMatriculaCarreira)getDadoFuncionalSelecionado()).setCargoCarreira(cargoFacade.consultarPorId(cargo));
1544
                }
1545
                if(getDadoFuncionalSelecionado() instanceof ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo) {
1546
                        ((ServidorDadoFuncionalContratadoPrestadorProcessoSeletivo)getDadoFuncionalSelecionado()).setCargo(cargoFacade.consultarPorId(cargo));
1547
                }
1548
        }
1549
 
1550
        private ParametroConsultaFuncaoDTO getParametrosConsultaFuncaoDTO() {
1551
                ParametroConsultaFuncaoDTO parametros = new ParametroConsultaFuncaoDTO();
1552
 
1553
                if(naoEstaNuloOuVazio(getFuncaoConsulta().getDescricao())) {
1554
                        parametros.setDescricao(getFuncaoConsulta().getDescricao());
1555
                }
1556
 
1557
                if(naoEstaNuloOuVazio(getFuncaoConsulta().getNivel())) {
1558
                        parametros.setNivel(getFuncaoConsulta().getNivel());
1559
                }
1560
 
1561
                if(naoEstaNuloOuVazio(getFuncaoConsulta().getTipo())) {
1562
                        parametros.setTipo(getFuncaoConsulta().getTipoFuncao());
1563
                }
1564
 
1565
                return parametros;
1566
        }
1567
 
1568
        private ParametroConsultaCargoDTO getParametrosConsultaCargoDTO() {
1569
                ParametroConsultaCargoDTO parametros = new ParametroConsultaCargoDTO();
1570
 
1571
                if(naoEstaNuloOuVazio(getCargoConsulta().getDescricao())) {
1572
                        parametros.setDescricao(getCargoConsulta().getDescricao());
1573
                }
1574
 
1575
                if(naoEstaNuloOuVazio(getCargoConsulta().getGrauInstrucao())) {
1576
                        parametros.setGrauInstrucao(getCargoConsulta().getGrauInstrucao());
1577
                }
1578
 
1579
                return parametros;
1580
        }
1581
 
1582
        private void validarObjeto(Object entidade) {
1583
                validador.validar(entidade, Cadastrar.class);
1584
        }
1585
 
1586
        /* antigo Ficha Cadastral Bean */
1587
        public List<GrauInstrucao> getListaGrauInstrucao() {
1588
                return listaGrauInstrucao;
1589
        }
1590
 
1591
        public void setListaGrauInstrucao(List<GrauInstrucao> listaGrauInstrucao) {
1592
                this.listaGrauInstrucao = listaGrauInstrucao;
1593
        }
1594
 
1595
        public List<Nacionalidade> getListaNacionalidade() {
1596
                return listaNacionalidade;
1597
        }
1598
 
1599
        public void setListaNacionalidade(List<Nacionalidade> listaNacionalidade) {
1600
                this.listaNacionalidade = listaNacionalidade;
1601
        }
1602
 
1603
        public List<Deficiencia> getListaDeficiencia() {
1604
                return listaDeficiencia;
1605
        }
1606
 
1607
        public void setListaDeficiencia(List<Deficiencia> listaDeficiencia) {
1608
                this.listaDeficiencia = listaDeficiencia;
1609
        }
1610
 
1611
        public List<SituacaoServidor> getListaSituacaoServidor() {
1612
                return listaSituacaoServidor;
1613
        }
1614
 
1615
        public void setListaSituacaoServidor(List<SituacaoServidor> listaSituacaoServidor) {
1616
                this.listaSituacaoServidor = listaSituacaoServidor;
1617
        }
1618
 
1619
        public List<Especialidade> getListaEspecialidade() {
1620
                return listaEspecialidade;
1621
        }
1622
 
1623
        public void setListaEspecialidade(List<Especialidade> listaEspecialidade) {
1624
                this.listaEspecialidade = listaEspecialidade;
1625
        }
1626
 
1627
        public List<Orgao> getListaOrgao() {
1628
                return listaOrgao;
1629
        }
1630
 
1631
        public void setListaOrgao(List<Orgao> listaOrgao) {
1632
                this.listaOrgao = listaOrgao;
1633
        }
1634
 
1635
        public List<Carreira> getListaCarreira() {
1636
                return listaCarreira;
1637
        }
1638
 
1639
        public void setListaCarreira(List<Carreira> listaCarreira) {
1640
                this.listaCarreira = listaCarreira;
1641
        }
1642
 
1643
        public List<SetorView> getListaSetorView() {
1644
                return listaSetorView;
1645
        }
1646
 
1647
        public void setListaSetorView(List<SetorView> listaSetorView) {
1648
                this.listaSetorView = listaSetorView;
1649
        }
1650
 
1651
        public List<Conselho> getListaConselho() {
1652
                return listaConselho;
1653
        }
1654
 
1655
        public void setListaConselho(List<Conselho> listaConselho) {
1656
                this.listaConselho = listaConselho;
1657
        }
1658
 
1659
        public List<UfView> getListaUfView() {
1660
                return listaUfView;
1661
        }
1662
 
1663
        public void setListaUfView(List<UfView> listaUfView) {
1664
                this.listaUfView = listaUfView;
1665
        }
1666
 
1667
        public List<Banco> getListaBanco() {
1668
                return listaBanco;
1669
        }
1670
 
1671
        public void setListaBanco(List<Banco> listaBanco) {
1672
                this.listaBanco = listaBanco;
1673
        }
1674
 
1675
        public List<ModelCampoCombo> getListaTipoClasseCarreira() {
1676
                return listaTipoClasseCarreira;
1677
        }
1678
 
1679
        public void setListaTipoClasseCarreira(List<ModelCampoCombo> listaTipoClasseCarreira) {
1680
                this.listaTipoClasseCarreira = listaTipoClasseCarreira;
1681
        }
1682
 
1683
        public List<ModelCampoCombo> getListaTipoRegimeTrabalho() {
1684
                return listaTipoRegimeTrabalho;
1685
        }
1686
 
1687
        public void setListaTipoRegimeTrabalho(List<ModelCampoCombo> listaTipoRegimeTrabalho) {
1688
                this.listaTipoRegimeTrabalho = listaTipoRegimeTrabalho;
1689
        }
1690
 
1691
        public List<ModelCampoCombo> getListaTipoNivelCarreira() {
1692
                return listaTipoNivelCarreira;
1693
        }
1694
 
1695
        public void setListaTipoNivelCarreira(List<ModelCampoCombo> listaTipoNivelCarreira) {
1696
                this.listaTipoNivelCarreira = listaTipoNivelCarreira;
1697
        }
1698
 
1699
        public void iniciarListas() {
1700
                if(!listasInicializadas) {
1701
                        setListaGrauInstrucao(grauInstrucaoFacade.consultarTodos(new GrauInstrucao()));
1702
                        setListaNacionalidade(nacionalidadeFacade.consultarTodos(new Nacionalidade()));
1703
                        setListaDeficiencia(deficienciaFacade.consultarTodos(new Deficiencia()));
1704
                        setListaSituacaoServidor(situacaoServidorFacade.consultarTodos(new SituacaoServidor()));
1705
                        setListaEspecialidade(especialidadeFacade.consultarTodos(new Especialidade()));
1706
                        setListaOrgao(orgaoExternoFacade.consultarTodos(new Orgao()));
1707
                        setListaCarreira(carreiraFacade.consultarTodos(new Carreira()));
1708
                        setListaSetorView(setorViewFacade.consultarTodos(new SetorView()));
1709
                        setListaConselho(conselhoFacade.consultarTodos(new Conselho()));
1710
                        setListaUfView(ufFacade.consultarTodos(new UfView()));
1711
                        setListaBanco(bancoFacade.consultarTodos(new Banco()));
1712
                        setListaTipoClasseCarreira(gerarListaModelCampoComboEstatica(Arrays.asList(TipoClasseCarreira.values())));
1713
                        setListaTipoNivelCarreira(gerarListaModelCampoComboEstatica(Arrays.asList(TipoNivelCarreira.values())));
1714
                        setListaTipoRegimeTrabalho(gerarListaModelCampoComboEstatica(Arrays.asList(TipoRegimeTrabalho.values())));
1715
                        listaInstituicaoEstagio = instituicaoEstagioFacade.listarInstituicaoEstagio();
1716
                        listaCursoEstagio = cursoEstagioFacade.listarCursoEstagio();
1717
                        listasInicializadas = true;
1718
                }
1719
        }
1720
 
1721
}