package br.gov.al.saude.rhd.web.managebean.servidor;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.faces.bean.ManagedBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import br.gov.al.saude.framework.core.generic.GenericFacade;
import br.gov.al.saude.framework.core.util.VerificadorUtil;
import br.gov.al.saude.framework.web.generic.AbstractBean;
import br.gov.al.saude.framework.web.generic.GenericConsultaDemanda;
import br.gov.al.saude.rhd.core.application.servidor.ServidorFacade;
import br.gov.al.saude.rhd.core.application.unidade.UnidadeFacade;
import br.gov.al.saude.rhd.model.view.ServidorDadoFuncionalView;
import br.gov.al.saude.rhd.model.view.ServidorView;
import br.gov.al.saude.rhd.model.view.UnidadeView;
import br.gov.al.saude.sca.model.usuario.view.UsuarioView;
import br.gov.al.saude.scg.model.view.PessoaDocumentoView;
import br.gov.al.saude.scg.model.view.PessoaTelefoneView;
@
Component
@ManagedBean
@Scope
("view")
public class ServidorBean
extends AbstractBean
<ServidorView
> implements Serializable {
private static final long serialVersionUID = 1L
;
private ServidorFacade servidorFacade
;
private UnidadeFacade unidadeFacade
;
private List<ServidorDadoFuncionalView
> dadosFuncionais
;
private ServidorDadoFuncionalView dadoFuncional
;
private List<PessoaDocumentoView
> documentos
;
private List<PessoaTelefoneView
> telefones
;
@Autowired
public ServidorBean
(ServidorFacade servidorFacade, UnidadeFacade unidadeFacade
) {
this.
servidorFacade = servidorFacade
;
this.
unidadeFacade = unidadeFacade
;
}
@
Override
public ServidorView getEntidade
() {
if (VerificadorUtil.
estaNulo(entidade
)) {
entidade = servidorFacade.
consultarDadosPessoais(getSequencialPessoaUsuarioLogado
());
}
return entidade
;
}
@
Override
public GenericFacade
<ServidorView
> getFacade
() {
return servidorFacade
;
}
@
Override
public Object getId
() {
return getEntidade
().
getId();
}
@
Override
public String getTelaCrud
() {
return "/paginas/dados_gerais.xhtml";
}
@
Override
public void limparEntidade
() {
entidade =
new ServidorView
();
}
@
Override
public GenericConsultaDemanda
<ServidorView
> getLazy
() {
return null;
}
public List<ServidorDadoFuncionalView
> getDadosFuncionais
() {
if (dadosFuncionais ==
null) {
dadosFuncionais =
new ArrayList<ServidorDadoFuncionalView
>();
if (VerificadorUtil.
naoEstaNulo(getEntidade
())) {
dadosFuncionais.
addAll(getEntidade
().
getListaDadosFuncionaisView());
}
}
return dadosFuncionais
;
}
public void setListaDadosFuncionais
(List<ServidorDadoFuncionalView
> dadosFuncionais
) {
this.
dadosFuncionais = dadosFuncionais
;
}
public void setDadoFuncional
(ServidorDadoFuncionalView dadoFuncional
) {
this.
dadoFuncional = dadoFuncional
;
}
public ServidorDadoFuncionalView getDadoFuncional
() {
return dadoFuncional
;
}
public List<PessoaDocumentoView
> getDocumentos
() {
if (documentos ==
null) {
documentos =
new ArrayList<PessoaDocumentoView
>();
if (VerificadorUtil.
naoEstaNulo(getEntidade
())) {
documentos.
addAll(getEntidade
().
getPessoa().
getDocumentos());
}
}
return documentos
;
}
public void setDocumentos
(List<PessoaDocumentoView
> documentos
) {
this.
documentos = documentos
;
}
public List<PessoaTelefoneView
> getTelefones
() {
if (telefones ==
null) {
telefones =
new ArrayList<PessoaTelefoneView
>();
if (VerificadorUtil.
naoEstaNulo(getEntidade
())) {
telefones.
addAll(getEntidade
().
getPessoa().
getTelefones());
}
}
return telefones
;
}
public void setTelefones
(List<PessoaTelefoneView
> telefones
) {
this.
telefones = telefones
;
}
private Long getSequencialPessoaUsuarioLogado
() {
return ((UsuarioView
) getUsuario
().
getPrincipal()).
getSequencialPessoa();
}
public void setarEntidadeServidorDadoFuncionalView
(ServidorDadoFuncionalView servidorDadoFuncionalView
) {
setDadoFuncional
(servidorDadoFuncionalView
);
}
public Set<UnidadeView
> getUnidadesDeExercicioDoUsuario
() {
Set<UnidadeView
> unidades =
new HashSet<UnidadeView
>();
unidades.
addAll(unidadeFacade.
listarUnidadeExercicioPorPapelUsuario((UsuarioView
) getUsuario
().
getPrincipal()));
return unidades
;
}
}