ec.gob.ceaaces.controller.FuncionarioController.java Source code

Java tutorial

Introduction

Here is the source code for ec.gob.ceaaces.controller.FuncionarioController.java

Source

/*
 * 
 * F * Desarrollado por: eviscarra
 * 
 * Copyright (c) 20
 * 
 * 
 * 
 * 
 * 3-2013 CEAACESS All Rights Reserved.
 * 
 * This software is the confidential and proprietary information of CEAACESS.
 * ("Confidential Information"). You shall not disclose such Confidential
 * Information and shall use it only in accordance with the terms of the license
 * agreement you entered into with CEAACES.
 * 
 * CEAACES MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
 * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
 * NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
 * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
 * DERIVATIVES.
 */
package ec.gob.ceaaces.controller;

import java.io.IOException;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.logging.Logger;

import javax.annotation.PostConstruct;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;

import org.apache.commons.beanutils.PropertyUtils;
import org.primefaces.context.RequestContext;
import org.primefaces.event.TabChangeEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;

import ec.gob.ceaaces.catalogo.dtos.catalogos.AreaConocimientoDTO;
import ec.gob.ceaaces.catalogo.dtos.catalogos.AuditoriaDTO;
import ec.gob.ceaaces.catalogo.dtos.catalogos.CarreraIesDTO;
import ec.gob.ceaaces.catalogo.dtos.catalogos.FaseDTO;
import ec.gob.ceaaces.catalogo.dtos.catalogos.FaseIesDTO;
import ec.gob.ceaaces.catalogo.dtos.catalogos.IesDTO;
import ec.gob.ceaaces.catalogo.dtos.catalogos.PaisDTO;
import ec.gob.ceaaces.catalogo.dtos.catalogos.SubAreaConocimientoDTO;
import ec.gob.ceaaces.catalogo.exceptions.ServicioException;
import ec.gob.ceaaces.institutos.dtos.evaluacion.ContratacionDTO;
import ec.gob.ceaaces.institutos.dtos.evaluacion.FuncionarioDTO;
import ec.gob.ceaaces.institutos.dtos.evaluacion.InformacionCarreraDTO;
import ec.gob.ceaaces.institutos.dtos.evaluacion.InformacionIesDTO;
import ec.gob.ceaaces.institutos.dtos.evaluacion.PersonaDTO;
import ec.gob.ceaaces.institutos.dtos.evaluacion.SedeIesDTO;
import ec.gob.ceaaces.institutos.enumeraciones.CategoriaTitularEnum;
import ec.gob.ceaaces.institutos.enumeraciones.DiscapacidadEnum;
import ec.gob.ceaaces.institutos.enumeraciones.GeneroEnum;
import ec.gob.ceaaces.institutos.enumeraciones.RelacionIESEnum;
import ec.gob.ceaaces.institutos.enumeraciones.TiempoDedicacionEnum;
import ec.gob.ceaaces.institutos.enumeraciones.TipoFuncionarioEnum;
import ec.gob.ceaaces.seguridad.model.dtos.UsuarioDTO;
import ec.gob.ceaaces.services.CatalogoServicio;
import ec.gob.ceaaces.services.EvidenciasServicio;
import ec.gob.ceaaces.services.RegistroServicio;
import ec.gob.ceaaces.services.UsuarioIesCarrerasServicio;
import ec.gob.ceaaces.util.JsfUtil;
import ec.gob.ceaaces.util.Util;

public class FuncionarioController implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 178648910196975660L;

    private static final Logger LOG = Logger.getLogger(FuncionarioController.class.getSimpleName());

    @Autowired
    private CatalogoServicio catalagoServicio;

    @Autowired
    private EvidenciasServicio evidenciasServicio;

    @Autowired
    private UsuarioIesCarrerasServicio uicServicio;

    @Autowired
    private RegistroServicio registroServicio;

    private int indiceTab;

    private Date fechaMin;
    private Date fechaMax;
    private Date fechaActual;

    private Long idPais;
    private Long idPaisFormacion;
    private Long idNivelTitulo = -99L;

    private Long idSubArea;
    private Long idArea = -99L;
    private List<AreaConocimientoDTO> areasConocimiento;
    private List<SubAreaConocimientoDTO> subareas;

    private List<PaisDTO> paises;
    private List<String> relacionesIes;
    private List<String> tiemposDedicacion;
    private List<String> categorias;
    private List<String> discapacidades;
    private List<String> generos;
    private List<String> tipoFuncionario;

    private List<IesDTO> listaIes;
    private List<IesDTO> iesFiltros;
    private CarreraIesDTO carreraSeleccionada;
    private IesDTO iesSeleccionada;
    private IesDTO iesFormacion;

    private List<FuncionarioDTO> funcionarios;
    private List<FuncionarioDTO> funcionariosFiltros;
    private FuncionarioDTO funcionarioSeleccionado;
    private final UsuarioDTO usuarioSistema;

    private PersonaDTO personaFuncionario;
    private ContratacionDTO contratoFuncionario;

    private List<ContratacionDTO> contrataciones;

    private boolean verTablaIes;
    private boolean verBtnIesDoc;
    private boolean verBtnIesCon;
    private boolean verBtnIesFor;
    private boolean verTabDatosPersonales;
    private boolean verTabContratacion;

    private String discapacidad = DiscapacidadEnum.NINGUNA.getValue();
    private String categoria;
    private String genero;
    private String tipoFunc;
    private String pestania = "Datos Personales";
    private String accion = "Guardar cambios";
    private String msgAccion = "";
    private String cedulaFuncionario;
    private Long idSedeSeleccionada;
    private String relacionSeleccionada;

    private FaseDTO faseEvaluacionDTO;
    private InformacionIesDTO informacionIesDTO;
    private InformacionCarreraDTO informacionCarreraDTO;

    private List<SedeIesDTO> listaSedeIesDto;
    private Boolean alertaEvaluador = false;
    private Integer numeroFuncionarios;

    // Filtros Funcionarios
    private int indice;

    private static final String ORIGEN_CARGA = "IES";
    private final static String URL_ELIMINADOS = "/home/jhomara/archivosIES/evaluacionCarreras/eliminados/";
    private final static String URL = "/home/jhomara/archivosIES/evaluacionCarreras";
    // private final static String URL_ELIMINADOS =
    // "/archivosIES/evaluacionCarreras/eliminados/";
    // private final static String URL = "/archivosIES/evaluacionCarreras";

    private String clienteId;

    private boolean editarContrato;

    private String perfil;

    private int registros = 10;
    private int indiceAtras;
    private int indiceSiguiente;
    private int numRegistros;
    private boolean busqueda;
    private String identificacion;
    private List<FuncionarioDTO> listaFuncionariosTodos;
    private static final Integer[] rangos = { 10, 20, 50, 100, 200 };
    private int contador;
    private FaseIesDTO faseIesDTO;
    private boolean habilitarSiguiente = true;

    public FuncionarioController() {

        this.paises = new ArrayList<>();
        this.listaIes = new ArrayList<>();
        this.iesFiltros = new ArrayList<IesDTO>();
        this.funcionarios = new ArrayList<>();
        this.funcionariosFiltros = new ArrayList<>();
        this.categorias = new ArrayList<>();
        this.tiemposDedicacion = new ArrayList<>();
        this.relacionesIes = new ArrayList<>();
        this.discapacidades = new ArrayList<>();
        this.generos = new ArrayList<>();
        this.tipoFuncionario = new ArrayList<>();
        this.contrataciones = new ArrayList<>();
        this.areasConocimiento = new ArrayList<>();
        this.subareas = new ArrayList<>();

        this.iesSeleccionada = new IesDTO();
        this.funcionarioSeleccionado = new FuncionarioDTO();
        this.usuarioSistema = new UsuarioDTO();
        this.carreraSeleccionada = new CarreraIesDTO();

        this.personaFuncionario = new PersonaDTO();
        this.contratoFuncionario = new ContratacionDTO();

        this.verBtnIesDoc = true;
        this.verTabDatosPersonales = false;
        this.verTabContratacion = true;

        this.listaFuncionariosTodos = new ArrayList<FuncionarioDTO>();
        this.listaSedeIesDto = new ArrayList<>();

    }

    @PostConstruct
    private void cargarDatosIniciales() {
        try {

            ListaIesController controller = (ListaIesController) JsfUtil.obtenerObjetoSesion("listaIesController");

            this.alertaEvaluador = false;
            this.discapacidades.clear();
            this.generos.clear();
            this.relacionesIes.clear();
            this.tiemposDedicacion.clear();
            this.categorias.clear();
            this.funcionarios.clear();
            this.funcionariosFiltros.clear();
            this.areasConocimiento.clear();

            for (DiscapacidadEnum dis : DiscapacidadEnum.values()) {
                this.discapacidades.add(dis.getValue());
            }

            for (GeneroEnum gen : GeneroEnum.values()) {
                this.generos.add(gen.getValue());
            }

            for (CategoriaTitularEnum cat : CategoriaTitularEnum.values()) {
                this.categorias.add(cat.getValue());
            }

            for (TiempoDedicacionEnum tid : TiempoDedicacionEnum.values()) {
                this.tiemposDedicacion.add(tid.getValue());
            }

            for (RelacionIESEnum rel : RelacionIESEnum.values()) {
                this.relacionesIes.add(rel.getValue());
            }

            for (TipoFuncionarioEnum tfe : TipoFuncionarioEnum.values()) {
                this.tipoFuncionario.add(tfe.getValue());
            }

            this.areasConocimiento = catalagoServicio.obtenerAreasConocimiento();

            this.perfil = controller.getPerfil().getNombre();

            if (this.perfil.startsWith("IES_EVALUADOR")) {
                alertaEvaluador = true;
            }

            this.iesSeleccionada = controller.getIes();
            this.informacionIesDTO = registroServicio.obtenerInformacionIesPorIes(controller.getIes());

            this.faseIesDTO = controller.getFaseIesDTO();

            this.numeroFuncionarios = registroServicio.totalFuncionariosPorIes(informacionIesDTO.getId());

            cargarFuncionarios();
            cargarPaises();
            contextUsuario();
            cargarSedeIes();

        } catch (Exception e) {
            e.printStackTrace();
            JsfUtil.msgError("Ha ocurrido un error en el sistema. Comunquese con el Administrador");
        }
    }

    /**
     * 
     * Seteo de usuario automatico
     * 
     * @author eteran
     * @version 09/09/2013 - 16:28:20
     */
    private void contextUsuario() {
        this.usuarioSistema.setUsuario(SecurityContextHolder.getContext().getAuthentication().getName());
    }

    /**
     * 
     * Carga todas las Ies
     * 
     * @author eteran
     * @version 04/09/2013 - 11:18:18
     */
    public void cargarIes() {
        this.listaIes.clear();

        try {
            this.listaIes = uicServicio.obtenerIes();
        } catch (Exception e) {
            e.printStackTrace();
            JsfUtil.msgError("No se cargaron las Ies");
            return;
        }
    }

    private void cargarFuncionarios() {

        try {

            funcionarios.clear();
            funcionariosFiltros.clear();
            FuncionarioDTO funcionarioDTO = null;
            if (busqueda) {
                limpiarListas();
                busqueda = false;
                habilitarSiguiente = true;
                cargarFuncionarios();
                identificacion = null;
                return;
            }

            if (indice < 0 || registros == 0) {
                funcionarios.clear();
                indice = 0;
                return;
            }

            LOG.info("1 listaFuncionariosTodos size.." + this.listaFuncionariosTodos.size());

            if (listaFuncionariosTodos.size() <= (numRegistros)) {
                int indiceaux = 0;
                if (listaFuncionariosTodos.size() != 0) {
                    indiceaux = listaFuncionariosTodos.size() - 1;
                } else {
                    indiceaux = 0;
                }

                this.listaFuncionariosTodos.addAll(registroServicio.obtenerFuncionario(funcionarioDTO,
                        informacionIesDTO.getId(), indiceaux, registros));

                LOG.info("2 listaFuncionariosTodos size.." + this.listaFuncionariosTodos.size());

                List<FuncionarioDTO> auxLista = new ArrayList<FuncionarioDTO>();
                auxLista.addAll(listaFuncionariosTodos);
                if (auxLista.size() != 0) {
                    if (listaFuncionariosTodos.size() < indice + registros) {
                        this.funcionarios = auxLista.subList(indice, listaFuncionariosTodos.size());
                    } else {
                        this.funcionarios = auxLista.subList(indice, indice + registros);
                    }
                }
                this.funcionariosFiltros.addAll(funcionarios);
            } else {
                List<FuncionarioDTO> auxLista = new ArrayList<FuncionarioDTO>();
                auxLista.addAll(listaFuncionariosTodos);
                if (auxLista.size() != 0) {
                    this.funcionarios = auxLista.subList(indice, indice + registros);
                    this.funcionariosFiltros.addAll(funcionarios);
                }
            }
            if (this.funcionarios.size() < registros) {
                habilitarSiguiente = false;
            }
            System.out.println("funcionarios size.." + this.funcionarios.size());
            LOG.info("funcionariosFiltros size.." + this.funcionariosFiltros.size());
            LOG.info("listaFuncionariosTodos size.." + this.listaFuncionariosTodos.size());
        } catch (Exception e) {
            e.printStackTrace();
            JsfUtil.msgError("Ha ocurrido un error en el sistema. Comunquese con el Administrador");
        }

    }

    public void buscarFuncionarioPorCedula() {
        try {

            if (!identificacion.equals("")) {
                indice = 0;
                FuncionarioDTO funcionarioDTO = new FuncionarioDTO();
                this.funcionarios.clear();
                this.listaFuncionariosTodos.clear();
                this.funcionariosFiltros.clear();
                funcionarioDTO.setIdentificacion(identificacion);
                funcionarioDTO.setIdInformacionIes(this.informacionIesDTO.getId());

                funcionarioDTO = registroServicio.obtenerFuncionarioPorCedula(funcionarioDTO);

                if (funcionarioDTO != null) {
                    funcionarios.add(funcionarioDTO);
                    this.funcionariosFiltros.add(funcionarioDTO);
                    this.listaFuncionariosTodos.add(funcionarioDTO);

                    JsfUtil.msgInfo("Funcionario encontrado");
                } else {
                    JsfUtil.msgInfo("Funcionario no encontrado!");
                }
            } else {
                JsfUtil.msgError("Ingrese nmero de cdula!");
            }
        } catch (Exception e) {
            e.printStackTrace();
            JsfUtil.msgError("Fall bsqueda de funcionario por cdula");
        }
        busqueda = true;
        habilitarSiguiente = true;
    }

    public void limpiarListas() {
        funcionarios.clear();
        funcionariosFiltros.clear();
        listaFuncionariosTodos.clear();
        indice = 0;
        registros = 10;
        numRegistros = 0;
    }

    /**
     * 
     * Para controlar la navegacion entre tabs del tabView
     * 
     * @author eteran
     * @version 10/09/2013 - 10:49:28
     * @param event
     */
    public void tomarTab(TabChangeEvent event) {
        this.pestania = event.getTab().getTitle();
        activarTab();
    }

    /**
     * 
     * Activa el tab de tabView segun la pestaa
     * 
     * @author eteran
     * @version 12/09/2013 - 14:40:19
     */
    public void activarTab() {
        if (this.pestania.equals("Datos Personales")) {
            this.indiceTab = 0;
        }

        if (this.pestania.equals("Contratacion")) {
            this.indiceTab = 1;
        }

        if (funcionarioSeleccionado.getId() == null) {
            this.verTabDatosPersonales = false;
            this.verTabContratacion = true;
        } else {
            this.verTabDatosPersonales = false;
            this.verTabContratacion = false;
        }
    }

    /**
     * 
     * @return
     */
    public String regresar() {
        limpiarListas();
        cargarFuncionarios();
        editarContrato = false;

        return "administracionFuncionarios?faces-redirct=true";
    }

    /**
     * 
     * Limpia el objeto iesSeleccionada
     * 
     * @author eteran
     * @version 03/09/2013 - 16:24:46
     */
    public void cancelarSeleccionIes() {
        if (this.pestania.equals("Formacion")) {
            this.iesFormacion = new IesDTO();
        }
    }

    /**
     * 
     * Inicializa el objeto Funcionario
     * 
     * @author eviscarra
     * @version 12/09/2013 - 14:41:17
     * @param event
     */
    public void iniciarNuevoFuncionario() {
        this.funcionarioSeleccionado = new FuncionarioDTO();
        this.accion = "Guardar";
        this.indiceTab = 0;
        cargarPaises();
    }

    private void cargarPaises() {
        this.paises.clear();
        try {
            this.paises = catalagoServicio.obtenerPaises();
        } catch (Exception e) {
            e.printStackTrace();
            JsfUtil.msgError("No se pudo cargar los paises");
            return;
        }
    }

    private void nuevoRedirect() {
        if (funcionarioSeleccionado == null) {
            return;
        }

        this.contrataciones.clear();

        // cargarDatosIniciales();

        if (funcionarioSeleccionado.getId() == null) {
            funcionarioSeleccionado = new FuncionarioDTO();
            idPais = -99L;
        }

        if (this.funcionarioSeleccionado.getId() != null) {
            this.personaFuncionario = new PersonaDTO();

            try {
                PropertyUtils.copyProperties(personaFuncionario, funcionarioSeleccionado);
            } catch (IllegalAccessException e1) {
                e1.printStackTrace();
            } catch (InvocationTargetException e1) {
                e1.printStackTrace();
            } catch (NoSuchMethodException e1) {
                e1.printStackTrace();
            }

            cargarPaises();

            if (funcionarioSeleccionado.getIesDTO() == null) {
                personaFuncionario.setIesDTO(this.iesSeleccionada);
                funcionarioSeleccionado.setIesDTO(this.iesSeleccionada);
            }

            if (funcionarioSeleccionado.getPaisOrigen() != null) {
                idPais = funcionarioSeleccionado.getPaisOrigen().getId();
            } else {
                idPais = -99L;
            }

            if (funcionarioSeleccionado.getSedeIesDTO() != null) {
                idSedeSeleccionada = funcionarioSeleccionado.getSedeIesDTO().getId();
            }

            if (funcionarioSeleccionado.getDiscapacidad() != null) {
                discapacidad = funcionarioSeleccionado.getDiscapacidad().getValue();
            } else {
                funcionarioSeleccionado.setDiscapacidad(DiscapacidadEnum.NINGUNA);
                discapacidad = funcionarioSeleccionado.getDiscapacidad().getValue();
            }

            if (funcionarioSeleccionado.getSexo() != null) {
                genero = funcionarioSeleccionado.getSexo().getValue();
            } else {
                genero = funcionarioSeleccionado.getSexo().getValue();
            }

            if (funcionarioSeleccionado.getTipoFuncionario() != null) {
                tipoFunc = funcionarioSeleccionado.getTipoFuncionario().getValue();
            }

            if (funcionarioSeleccionado.getContratacionDTO() != null) {

                for (int i = 0; i < funcionarioSeleccionado.getContratacionDTO().size(); i++) {
                    if (funcionarioSeleccionado.getContratacionDTO().get(i).getActivo()) {
                        contrataciones.add(funcionarioSeleccionado.getContratacionDTO().get(i));
                    }
                }
                contrataciones.removeAll(Collections.singleton(null));
            }

        }
        activarTab();
    }

    public void nuevo() {
        nuevoRedirect();

        ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
        try {
            ec.redirect("/" + ec.getContextName() + "/funcionarios/funcionario.jsf");

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public void cancelarIesFormacion() {
        this.iesFormacion = new IesDTO();
    }

    public void eliminarFuncionario() {
        try {
            AuditoriaDTO auditoria = new AuditoriaDTO();
            auditoria.setUsuarioModificacion(usuarioSistema.getUsuario());
            auditoria.setFechaModificacion(new Date());
            funcionarioSeleccionado.setAuditoria(auditoria);
            funcionarioSeleccionado.setFaseIesDTO(faseIesDTO);
            registroServicio.eliminarFuncionario(funcionarioSeleccionado);
            iniciarNuevoFuncionario();
            limpiarListas();
            cargarFuncionarios();
            JsfUtil.msgInfo("Registro eliminado correctamente");
        } catch (Exception e) {
            e.printStackTrace();
            JsfUtil.msgError("No se pudo eliminar el Funcionario seleccionado");
            return;
        }

    }

    public void eliminarContratacion() {
        boolean eliminar = false;
        AuditoriaDTO auditoria = new AuditoriaDTO();
        auditoria.setUsuarioModificacion(usuarioSistema.getUsuario());
        auditoria.setFechaModificacion(new Date());
        for (int i = 0; i < contrataciones.size(); i++) {
            if (contratoFuncionario.getId() != null
                    && contratoFuncionario.getId().equals(contrataciones.get(i).getId())) {
                contrataciones.get(i).setActivo(false);
                personaFuncionario.setOrigenCarga(ORIGEN_CARGA);
                personaFuncionario.setIesDTO(this.iesSeleccionada);
                eliminar = true;
                break;
            }
        }

        if (eliminar) {
            try {
                contratoFuncionario.setActivo(false);
                contratoFuncionario.setPersonaDTO(funcionarioSeleccionado);
                contratoFuncionario.setAuditoriaDTO(auditoria);
                contratoFuncionario.setFaseIesDTO(faseIesDTO);
                registroServicio.registrarContratacionDTO(contratoFuncionario);
                contrataciones.remove(contratoFuncionario);
                JsfUtil.msgInfo("Registro eliminado correctamente");
            } catch (Exception e) {
                e.printStackTrace();
                JsfUtil.msgError("No se pudo eliminar el contrato seleccionado");
                return;
            }
        }

    }

    /**
     * 
     * Se toma la discapacidad del combo discapacidades
     * 
     * @author eteran
     * @version 12/09/2013 - 14:42:46
     * @param event
     */
    public void tomarDiscapacidad(ValueChangeEvent event) {
        this.discapacidad = (String) event.getNewValue();
    }

    /**
     * 
     * Se toma el genero del combo sexo
     * 
     * @author eteran
     * @version 12/09/2013 - 14:43:31
     * @param event
     */
    public void tomarGenero(ValueChangeEvent event) {
        this.genero = (String) event.getNewValue();
    }

    public void tomarAreaConocimiento() {
        cargarSubareasConocimiento(idArea);

        if (this.idArea.equals(-99L)) {
            subareas.clear();
        }
    }

    public void tomarSubArea(ValueChangeEvent event) {
        this.idSubArea = (Long) event.getNewValue();

        if (idSubArea != -99L) {
            SubAreaConocimientoDTO sub = new SubAreaConocimientoDTO();
            sub.setId(this.idSubArea);
        }
    }

    private void cargarSubareasConocimiento(Long idArea) {
        this.subareas.clear();
        try {
            this.subareas = catalagoServicio.obtenerSubAreasConocimientoPorArea(idArea);
        } catch (ServicioException e) {
            e.printStackTrace();
            JsfUtil.msgError("No se pudo cargar las subareas de conocimiento");
            return;
        }
    }

    public void guardar() {

        if (funcionarioSeleccionado == null) {
            return;
        }
        if (validarDatosPersonales() == false) {
            return;
        }

        funcionarioSeleccionado.setOrigenCarga(ORIGEN_CARGA);
        funcionarioSeleccionado.setIesDTO(this.iesSeleccionada);
        funcionarioSeleccionado.setFaseIesDTO(faseIesDTO);

        PersonaDTO perdoc = null;

        try {
            perdoc = new PersonaDTO();
            PropertyUtils.copyProperties(perdoc, funcionarioSeleccionado);
        } catch (IllegalAccessException e1) {
            e1.printStackTrace();
        } catch (InvocationTargetException e1) {
            e1.printStackTrace();
        } catch (NoSuchMethodException e1) {
            e1.printStackTrace();
        }

        personaFuncionario = perdoc;
        personaFuncionario.setIesDTO(this.iesSeleccionada);
        PaisDTO nac = new PaisDTO();
        nac.setId(idPais);
        this.personaFuncionario.setPaisOrigen(nac);
        this.personaFuncionario.setDiscapacidad(DiscapacidadEnum.parse(this.discapacidad));
        this.personaFuncionario.setSexo(GeneroEnum.parse(this.genero));
        this.funcionarioSeleccionado.setTipoFuncionario(TipoFuncionarioEnum.parse(this.tipoFunc));

        SedeIesDTO sid = new SedeIesDTO();
        sid.setId(this.idSedeSeleccionada);
        this.funcionarioSeleccionado.setSedeIesDTO(sid);

        personaFuncionario.setIesDTO(this.iesSeleccionada);
        FuncionarioDTO resultado = null;
        try {
            // if (pestania.equals("Datos Personales")) {

            if (funcionarioSeleccionado.getId() == null) {
                personaFuncionario.setActivo(true);
                personaFuncionario.setFaseIesDTO(faseIesDTO);
                funcionarioSeleccionado.setActivo(true);
                if (contrataciones.isEmpty()) {
                    JsfUtil.msgAdvert("Ingrese los datos de contratacin.");
                    indiceTab = 1;
                    verTabContratacion = false;
                } else {
                    funcionarioSeleccionado.setContratacionDTO(contrataciones);
                    resultado = registroServicio.registrarFuncionario(personaFuncionario, funcionarioSeleccionado,
                            usuarioSistema);
                    RequestContext.getCurrentInstance().execute("dlgwContrato.hide()");
                    JsfUtil.msgInfo("Registro almacenado correctamente");
                }
            } else {
                resultado = registroServicio.registrarFuncionario(personaFuncionario, funcionarioSeleccionado,
                        usuarioSistema);
                JsfUtil.msgInfo("Registro almacenado correctamente");
            }

            // resultado = guardarPestania();

        } catch (Exception e) {

            JsfUtil.msgError("No se puede almacenar el registro.");

        }
        if (funcionarioSeleccionado.getId() != null) {
            activarTab();
        }
    }

    public void guardarContrato() {

        if (valicarCamposContratacion() == false) {
            return;
        }

        boolean repetido = false;
        boolean nuevo = false;

        for (ContratacionDTO conDTO : contrataciones) {
            if (conDTO.getNumeroContrato().equalsIgnoreCase(contratoFuncionario.getNumeroContrato())) {
                if (contratoFuncionario.getId() == null) {
                    repetido = true;
                } else {
                    repetido = false;
                }
                break;
            }
        }

        if (repetido) {
            JsfUtil.msgAdvert("El nmero de contrato est duplicado");
            return;
        } else {
            clienteId = "";
        }

        contratoFuncionario.setCategoria(CategoriaTitularEnum.parse(categoria));
        contratoFuncionario.setActivo(true);
        contratoFuncionario.setRelacionIes(RelacionIESEnum.parse(relacionSeleccionada));

        try {

            if (funcionarioSeleccionado.getId() == null) {
                indiceTab = 1;
                contrataciones.add(contratoFuncionario);
                editarContrato = false;
                guardar();
            } else {
                if (contratoFuncionario.getId() == null) {
                    nuevo = true;
                }
                contratoFuncionario.setFaseIesDTO(faseIesDTO);
                contratoFuncionario = registroServicio.registrarContratacionDTO(contratoFuncionario);

                if (!nuevo) {
                    JsfUtil.msgInfo("Registro actualizado correctamente");
                    RequestContext.getCurrentInstance().execute("dlgwContrato.hide()");
                    nuevoRedirect();

                } else {
                    JsfUtil.msgInfo("Registro almacenado correctamente");
                    RequestContext.getCurrentInstance().execute("dlgwContrato.hide()");
                    personaFuncionario.getContratacionDTO().clear();
                    contrataciones.add(contratoFuncionario);
                    personaFuncionario.getContratacionDTO().addAll(contrataciones);
                }
            }

            editarContrato = false;

        } catch (ServicioException e) {
            JsfUtil.msgError("Ocurri un error al guardar el registro.");
        }

        // resultado = guardarPestania();

    }

    public List<Integer> getAniosTitulo() {
        List<Integer> aniosTitulo = new ArrayList<>();

        Calendar cal = Calendar.getInstance();
        int anio = cal.get(Calendar.YEAR);
        for (int i = 2014; i >= (anio - 60); i--) {
            aniosTitulo.add(new Integer(i));
        }
        return aniosTitulo;
    }

    private FuncionarioDTO guardarPestania() {
        FuncionarioDTO resultado = null;

        try {
            resultado = registroServicio.registrarFuncionario(personaFuncionario, funcionarioSeleccionado,
                    usuarioSistema);
        } catch (ServicioException se) {
            LOG.info(se.getMessage());
            JsfUtil.msgAdvert(se.getMessage());
        } catch (RuntimeException re) {
            LOG.info(re.getMessage());
            JsfUtil.msgAdvert(re.getMessage());
        } catch (Exception e) {
            LOG.info(e.getMessage());
            e.printStackTrace();
        }

        cargarFuncionarios();
        obtenerFuncionario();

        return resultado;
    }

    private void obtenerFuncionario() {
        FuncionarioDTO f = funcionarioSeleccionado;
        for (FuncionarioDTO func : funcionarios) {
            if (func.getId().equals(f.getId())) {
                funcionarioSeleccionado = func;
                break;
            }
        }
    }

    private boolean validarDatosPersonales() {

        if (null == idSedeSeleccionada || idSedeSeleccionada.equals(0L)) {
            JsfUtil.msgError("MATRIZ/EXTENSION es requerido");
            return false;
        }

        if (funcionarioSeleccionado.getTipoIdentificacion().equals("CEDULA")) {
            if (!Util.validarCedula(funcionarioSeleccionado.getIdentificacion())) {
                JsfUtil.msgError("Nmero de cdula es invlido.");
                return false;
            }
        }

        if (funcionarioSeleccionado.getNombres() == null || funcionarioSeleccionado.getNombres().isEmpty()) {
            JsfUtil.msgError("Nombres son requeridos");
            return false;
        }

        if (funcionarioSeleccionado.getApellidoPaterno() == null
                || funcionarioSeleccionado.getApellidoPaterno().isEmpty()) {
            JsfUtil.msgError("Primer apellido es requerido");
            return false;
        }

        if (funcionarioSeleccionado.getIdentificacion() == null
                || funcionarioSeleccionado.getIdentificacion().isEmpty()) {
            JsfUtil.msgError("Cdula es requerida");
            return false;
        }

        // if (funcionarioSeleccionado.getEmailPersonal() != null
        // || !funcionarioSeleccionado.getEmailPersonal().isEmpty()) {
        // if (Util.validarEmail(funcionarioSeleccionado.getEmailPersonal()) ==
        // false) {
        // JsfUtil.msgError("Email Personal incorrecto");
        // return false;
        // }
        // }
        //
        // if (funcionarioSeleccionado.getEmailInstitucional() != null
        // || !funcionarioSeleccionado.getEmailInstitucional().isEmpty()) {
        // if (Util.validarEmail(funcionarioSeleccionado
        // .getEmailInstitucional()) == false) {
        // JsfUtil.msgError("Email Institucional incorrecto");
        // return false;
        // }
        // }

        if (funcionarioSeleccionado.getCargo() == null || funcionarioSeleccionado.getCargo().isEmpty()) {
            JsfUtil.msgError("Cargo es requerido");
            return false;
        }

        if (null == tipoFunc || tipoFunc.equals("")) {
            JsfUtil.msgError("Tipo Funcionario es requerido");
            return false;
        }

        LOG.info("funcionarioSeleccionado.getId()__" + funcionarioSeleccionado.getId());
        // if (funcionarioSeleccionado.getId() != null) {
        FuncionarioDTO funcionarioDTO = new FuncionarioDTO();
        funcionarioDTO.setIdentificacion(funcionarioSeleccionado.getIdentificacion());
        funcionarioDTO.setIdInformacionIes(this.informacionIesDTO.getId());

        try {

            funcionarioDTO = registroServicio.obtenerFuncionarioPorCedula(funcionarioDTO);
            if (funcionarioDTO != null && !(funcionarioDTO.getId().equals(funcionarioSeleccionado.getId()))) {
                JsfUtil.msgError("El nmero de cdula ingresado ya existe.");
                return false;
            }

        } catch (Exception e) {
            e.printStackTrace();
            JsfUtil.msgError("Error al obtener datos de funcionario. Comunquese con el administrador.");
            return false;
        }
        // }

        return true;

    }

    private boolean valicarCamposContratacion() {

        if (contratoFuncionario.getActivo() == null) {
            contratoFuncionario.setActivo(false);
        }

        if (contratoFuncionario.getNumeroContrato() == null || contratoFuncionario.getNumeroContrato().equals("")) {
            JsfUtil.msgAdvert("Numero de contrato es requerido");
            return false;
        }

        if (null == relacionSeleccionada || relacionSeleccionada.equals("")) {
            JsfUtil.msgAdvert("Relacion IES es requerida");
            return false;
        }

        if (contratoFuncionario.getFechaInicio() == null) {
            JsfUtil.msgAdvert("Fecha inicio es requerida");
            return false;
        } else {
            if (contratoFuncionario.getFechaInicio().getTime() > new Date().getTime()) {
                JsfUtil.msgAdvert("Fecha inicio no puede ser mayor que fecha actual");
                return false;
            }
        }

        if (contratoFuncionario.getFechaInicio() != null && contratoFuncionario.getFechaFin() != null) {
            if (contratoFuncionario.getFechaInicio().getTime() > contratoFuncionario.getFechaFin().getTime()) {
                JsfUtil.msgAdvert("Fecha inicio no puede ser mayor que Fecha fin");
                return false;
            }
        }

        return true;
    }

    public void nuevoContrato(ActionEvent event) {
        this.contratoFuncionario = new ContratacionDTO();
        this.contratoFuncionario.getPersonaDTO().setId(this.funcionarioSeleccionado.getId());
        editarContrato = true;

        FacesContext context = FacesContext.getCurrentInstance();
        this.clienteId = event.getComponent().getClientId(context);
    }

    public void editarContrato() {
        relacionSeleccionada = contratoFuncionario.getRelacionIes().getValue();
    }

    public void cancelarContrato() {
        this.contratoFuncionario = new ContratacionDTO();
        this.editarContrato = false;
    }

    public void tomarBotonGuardarDialogos(ActionEvent event) {
        FacesContext context = FacesContext.getCurrentInstance();

        msgAccion = "";
        String idBotonGuardar = null;
        idBotonGuardar = event.getComponent().getClientId(context);

        if (idBotonGuardar.contains("btnBuscar")) {
            msgAccion = "buscando funcionario";
            return;
        } else {
            msgAccion = "";
            return;
        }
    }

    public void seleccionarCategoria(ValueChangeEvent e) {
        if (e != null && e.getNewValue() != null) {
            contratoFuncionario.setCategoria(CategoriaTitularEnum.parse(e.getNewValue().toString()));
        }

    }

    public void seleccionarTiempoDedicacion(ValueChangeEvent e) {
        if (e != null && e.getNewValue() != null) {
            contratoFuncionario.setTiempoDedicacion(TiempoDedicacionEnum.parse(e.getNewValue().toString()));
        }

    }

    public void seleccionarNivelTitulo(ValueChangeEvent e) {
        if (e != null && e.getNewValue() != null) {
            idNivelTitulo = new Long(e.getNewValue().toString());
        }
    }

    public void seleccionarCursandoFormacion(ValueChangeEvent e) {
        if (e != null) {
            if (new Boolean(e.getNewValue().toString())) {
                return;
            }
        }

    }

    public void modificarIndice(ActionEvent event) {
        FacesContext context = FacesContext.getCurrentInstance();
        String botonId = event.getComponent().getClientId(context).toString();
        if (botonId.contains("btnAtras")) {
            if (listaFuncionariosTodos.size() < registros) {
                indiceAtras = indice - funcionarios.size();
            } else {
                indiceAtras = indice - registros;
            }
            indice = indiceAtras;
            indiceAtras = 0;
            habilitarSiguiente = true;
        }

        if (botonId.contains("btnSiguiente")) {
            if (listaFuncionariosTodos.size() < registros) {
                indice = 0;
            } else {
                indiceSiguiente = indice + registros;
                indice = indiceSiguiente;
            }
            indiceSiguiente = 0;
            if ((registros + indice) > numRegistros) {
                numRegistros = numRegistros + registros;
            }
        }

    }

    public void tomarRango(ValueChangeEvent event) {
        FacesContext context = FacesContext.getCurrentInstance();
        registros = ((Integer) event.getNewValue()).intValue();
        // indice = indice - registros;
        indice = 0;
        numRegistros = 0;
        listaFuncionariosTodos.clear();
        cargarFuncionarios();
        if (registros == 0) {
            funcionarios.clear();
            funcionariosFiltros.clear();
        }

        context.renderResponse();
    }

    public void cargarSedeIes() {

        try {
            LOG.info("informacionIesDTO: " + informacionIesDTO.getId());
            this.listaSedeIesDto.clear();
            this.listaSedeIesDto = registroServicio.obtenerSedesIes(this.informacionIesDTO.getId());
            LOG.info("listaSedeIesDto.size: " + listaSedeIesDto.size());
        } catch (Exception e) {
            JsfUtil.msgError("Error al cargar Sede IES");
        }
    }

    public FaseDTO getFaseEvaluacionDTO() {

        return faseEvaluacionDTO;
    }

    public void setFaseEvaluacionDTO(FaseDTO faseEvaluacionDTO) {
        this.faseEvaluacionDTO = faseEvaluacionDTO;
    }

    public InformacionIesDTO getInformacionIesDTO() {

        return informacionIesDTO;
    }

    public void setInformacionIesDTO(InformacionIesDTO informacionIesDTO) {
        this.informacionIesDTO = informacionIesDTO;
    }

    public InformacionCarreraDTO getInformacionCarreraDTO() {
        try {
            // carreraServicio
            // .obtenerInformacionCarreraPorCarrera(carrerasCarrera);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return informacionCarreraDTO;
    }

    public void setInformacionCarreraDTO(InformacionCarreraDTO informacionCarreraDTO) {
        this.informacionCarreraDTO = informacionCarreraDTO;
    }

    public boolean isEditarContrato() {
        return editarContrato;
    }

    public void setEditarContrato(boolean editarContrato) {
        this.editarContrato = editarContrato;
    }

    /**
     * @return the idArea
     */
    public Long getIdArea() {
        return idArea;
    }

    /**
     * @return the areasConocimiento
     */
    public List<AreaConocimientoDTO> getAreasConocimiento() {
        return areasConocimiento;
    }

    /**
     * @param idArea
     *            the idArea to set
     */
    public void setIdArea(Long idArea) {
        this.idArea = idArea;
    }

    /**
     * @param areasConocimiento
     *            the areasConocimiento to set
     */
    public void setAreasConocimiento(List<AreaConocimientoDTO> areasConocimiento) {
        this.areasConocimiento = areasConocimiento;
    }

    /**
     * @return the idSubArea
     */
    public Long getIdSubArea() {
        return idSubArea;
    }

    /**
     * @return the subareas
     */
    public List<SubAreaConocimientoDTO> getSubareas() {
        return subareas;
    }

    /**
     * @param idSubArea
     *            the idSubArea to set
     */
    public void setIdSubArea(Long idSubArea) {
        this.idSubArea = idSubArea;
    }

    /**
     * @param subareas
     *            the subareas to set
     */
    public void setSubareas(List<SubAreaConocimientoDTO> subareas) {
        this.subareas = subareas;
    }

    /**
     * @return the idNivelTitulo
     */
    public Long getIdNivelTitulo() {
        return idNivelTitulo;
    }

    /**
     * @param idNivelTitulo
     *            the idNivelTitulo to set
     */
    public void setIdNivelTitulo(Long idNivelTitulo) {
        this.idNivelTitulo = idNivelTitulo;
    }

    /**
     * @return the categoria
     */
    public String getCategoria() {
        return categoria;
    }

    /**
     * @param categoria
     *            the categoria to set
     */
    public void setCategoria(String categoria) {
        this.categoria = categoria;
    }

    /**
     * @return the carreraSeleccionada
     */
    public CarreraIesDTO getCarreraSeleccionada() {
        ListaIesController controller = (ListaIesController) FacesContext.getCurrentInstance().getExternalContext()
                .getSessionMap().get("listaIesController");
        carreraSeleccionada = controller.getCarrera();

        return carreraSeleccionada;
    }

    /**
     * @param carreraSeleccionada
     *            the carreraSeleccionada to set
     */
    public void setCarreraSeleccionada(CarreraIesDTO carreraSeleccionada) {
        this.carreraSeleccionada = carreraSeleccionada;
    }

    /**
     * @return the relacionesIes
     */
    public List<String> getRelacionesIes() {
        return relacionesIes;
    }

    /**
     * @param relacionesIes
     *            the relacionesIes to set
     */
    public void setRelacionesIes(List<String> relacionesIes) {
        this.relacionesIes = relacionesIes;
    }

    /**
     * @return the tiemposDedicacion
     */
    public List<String> getTiemposDedicacion() {
        return tiemposDedicacion;
    }

    /**
     * @param tiemposDedicacion
     *            the tiemposDedicacion to set
     */
    public void setTiemposDedicacion(List<String> tiemposDedicacion) {
        this.tiemposDedicacion = tiemposDedicacion;
    }

    /**
     * @return the categorias
     */
    public List<String> getCategorias() {
        return categorias;
    }

    /**
     * @param categorias
     *            the categorias to set
     */
    public void setCategorias(List<String> categorias) {
        this.categorias = categorias;
    }

    /**
     * @return the fechaMin
     */
    public Date getFechaMin() {
        Calendar cal = Calendar.getInstance();
        int anio = Calendar.getInstance().get(Calendar.YEAR) - 75;
        cal.set(anio, Calendar.JANUARY, 1);
        fechaMin = new Date(cal.getTimeInMillis());
        return fechaMin;
    }

    /**
     * @param fechaMin
     *            the fechaMin to set
     */
    public void setFechaMin(Date fechaMin) {
        this.fechaMin = fechaMin;
    }

    /**
     * @return the fechaMax
     */

    public Date getFechaMax() {
        Calendar cal = Calendar.getInstance();
        int anio = Calendar.getInstance().get(Calendar.YEAR) - 21;
        cal.set(anio, Calendar.JANUARY, 365);
        fechaMax = new Date(cal.getTimeInMillis());
        return fechaMax;
    }

    /**
     * @param fechaMax
     *            the fechaMax to set
     */
    public void setFechaMax(Date fechaMax) {
        this.fechaMax = fechaMax;
    }

    /**
     * @return the fechaActual
     */
    public Date getFechaActual() {
        Calendar cal = Calendar.getInstance();
        fechaActual = new Date(cal.getTimeInMillis());
        return fechaActual;
    }

    /**
     * @param fechaActual
     *            the fechaActual to set
     */
    public void setFechaActual(Date fechaActual) {
        this.fechaActual = fechaActual;
    }

    /**
     * @return the idPaisFormacion
     */
    public Long getIdPaisFormacion() {
        return idPaisFormacion;
    }

    /**
     * @param idPaisFormacion
     *            the idPaisFormacion to set
     */
    public void setIdPaisFormacion(Long idPaisFormacion) {
        this.idPaisFormacion = idPaisFormacion;
    }

    /**
     * @return the msgAccion
     */
    public String getMsgAccion() {
        return msgAccion;
    }

    /**
     * @param msgAccion
     *            the msgAccion to set
     */
    public void setMsgAccion(String msgAccion) {
        this.msgAccion = msgAccion;
    }

    /**
     * @return the contrataciones
     */
    public List<ContratacionDTO> getContrataciones() {
        return contrataciones;
    }

    /**
     * @param contrataciones
     *            the contrataciones to set
     */
    public void setContrataciones(List<ContratacionDTO> contrataciones) {
        this.contrataciones = contrataciones;
    }

    /**
     * @return the idPais
     */
    public Long getIdPais() {
        return idPais;
    }

    /**
     * @param idPais
     *            the idPais to set
     */
    public void setIdPais(Long idPais) {
        this.idPais = idPais;
    }

    /**
     * @return the paises
     */
    public List<PaisDTO> getPaises() {
        return paises;
    }

    /**
     * @param paises
     *            the paises to set
     */
    public void setPaises(List<PaisDTO> paises) {
        this.paises = paises;
    }

    /**
     * @return the indiceTab
     */
    public int getIndiceTab() {
        return indiceTab;
    }

    /**
     * @param indiceTab
     *            the indiceTab to set
     */
    public void setIndiceTab(int indiceTab) {
        this.indiceTab = indiceTab;
    }

    /**
     * @return the verTabDatosPersonales
     */
    public boolean isVerTabDatosPersonales() {
        return verTabDatosPersonales;
    }

    /**
     * @param verTabDatosPersonales
     *            the verTabDatosPersonales to set
     */
    public void setVerTabDatosPersonales(boolean verTabDatosPersonales) {
        this.verTabDatosPersonales = verTabDatosPersonales;
    }

    /**
     * @return the verTabContratacion
     */
    public boolean isVerTabContratacion() {
        return verTabContratacion;
    }

    /**
     * @param verTabContratacion
     *            the verTabContratacion to set
     */
    public void setVerTabContratacion(boolean verTabContratacion) {
        this.verTabContratacion = verTabContratacion;
    }

    /**
     * @return the clienteId
     */
    public String getClienteId() {
        return clienteId;
    }

    /**
     * @param clienteId
     *            the clienteId to set
     */
    public void setClienteId(String clienteId) {
        this.clienteId = clienteId;
    }

    /**
     * @return the accion
     */
    public String getAccion() {
        return accion;
    }

    /**
     * @param accion
     *            the accion to set
     */
    public void setAccion(String accion) {
        this.accion = accion;
    }

    /**
     * @return the verBtnIesDoc
     */
    public boolean isVerBtnIesDoc() {
        return verBtnIesDoc;
    }

    /**
     * @param verBtnIesDoc
     *            the verBtnIesDoc to set
     */
    public void setVerBtnIesDoc(boolean verBtnIesDoc) {
        this.verBtnIesDoc = verBtnIesDoc;
    }

    /**
     * @return the verBtnIesCon
     */
    public boolean isVerBtnIesCon() {
        return verBtnIesCon;
    }

    /**
     * @param verBtnIesCon
     *            the verBtnIesCon to set
     */
    public void setVerBtnIesCon(boolean verBtnIesCon) {
        this.verBtnIesCon = verBtnIesCon;
    }

    /**
     * @return the verBtnIesFor
     */
    public boolean isVerBtnIesFor() {
        return verBtnIesFor;
    }

    /**
     * @param verBtnIesFor
     *            the verBtnIesFor to set
     */
    public void setVerBtnIesFor(boolean verBtnIesFor) {
        this.verBtnIesFor = verBtnIesFor;
    }

    /**
     * @return the pestania
     */
    public String getPestania() {
        return pestania;
    }

    /**
     * @param pestania
     *            the pestania to set
     */
    public void setPestania(String pestania) {
        this.pestania = pestania;
    }

    /**
     * @return the iesFormacion
     */
    public IesDTO getIesFormacion() {
        return iesFormacion;
    }

    /**
     * @param iesFormacion
     *            the iesFormacion to set
     */
    public void setIesFormacion(IesDTO iesFormacion) {
        this.iesFormacion = iesFormacion;
    }

    /**
     * @return the verTablaIes
     */
    public boolean isVerTablaIes() {
        return verTablaIes;
    }

    /**
     * @param verTablaIes
     *            the verTablaIes to set
     */
    public void setVerTablaIes(boolean verTablaIes) {
        this.verTablaIes = verTablaIes;
    }

    /**
     * @return the genero
     */
    public String getGenero() {
        return genero;
    }

    /**
     * @param genero
     *            the genero to set
     */
    public void setGenero(String genero) {
        this.genero = genero;
    }

    /**
     * @return the generos
     */
    public List<String> getGeneros() {
        return generos;
    }

    /**
     * @param generos
     *            the generos to set
     */
    public void setGeneros(List<String> generos) {
        this.generos = generos;
    }

    /**
     * @return the discapacidad
     */
    public String getDiscapacidad() {
        return discapacidad;
    }

    /**
     * @param discapacidad
     *            the discapacidad to set
     */
    public void setDiscapacidad(String discapacidad) {
        this.discapacidad = discapacidad;
    }

    /**
     * @return the discapacidades
     */
    public List<String> getDiscapacidades() {
        return discapacidades;
    }

    /**
     * @param discapacidades
     *            the discapacidades to set
     */
    public void setDiscapacidades(List<String> discapacidades) {
        this.discapacidades = discapacidades;
    }

    /**
     * @return the iesFiltros
     */
    public List<IesDTO> getIesFiltros() {
        return iesFiltros;
    }

    /**
     * @param iesFiltros
     *            the iesFiltros to set
     */
    public void setIesFiltros(List<IesDTO> iesFiltros) {
        this.iesFiltros = iesFiltros;
    }

    /**
     * @return the listaIes
     */
    public List<IesDTO> getListaIes() {
        iesFiltros.clear();
        return listaIes;
    }

    /**
     * @param listaIes
     *            the listaIes to set
     */
    public void setListaIes(List<IesDTO> listaIes) {
        this.listaIes = listaIes;
    }

    /**
     * @return the funcionarios
     */
    public List<FuncionarioDTO> getFuncionarios() {

        return funcionarios;
    }

    /**
     * Seteo de ies
     * 
     * @param iesSeleccionada
     *            the iesSeleccionada to set
     */
    public void setIesSeleccionada(IesDTO iesSeleccionada) {
        this.iesSeleccionada = iesSeleccionada;
    }

    /**
     * @return the iesSeleccionada
     */
    public IesDTO getIesSeleccionada() {
        ListaIesController controller = (ListaIesController) FacesContext.getCurrentInstance().getExternalContext()
                .getSessionMap().get("listaIesController");
        iesSeleccionada = controller.getIes();
        return iesSeleccionada;
    }

    public String getPerfil() {
        return perfil;
    }

    public void setPerfil(String perfil) {
        this.perfil = perfil;
    }

    public int getIndice() {
        return indice;
    }

    public void setIndice(int indice) {
        this.indice = indice;
    }

    public int getRegistros() {
        return registros;
    }

    public void setRegistros(int registros) {
        this.registros = registros;
    }

    public int getIndiceAtras() {
        return indiceAtras;
    }

    public void setIndiceAtras(int indiceAtras) {
        this.indiceAtras = indiceAtras;
    }

    public int getIndiceSiguiente() {
        return indiceSiguiente;
    }

    public void setIndiceSiguiente(int indiceSiguiente) {
        this.indiceSiguiente = indiceSiguiente;
    }

    public int getNumRegistros() {
        return numRegistros;
    }

    public void setNumRegistros(int numRegistros) {
        this.numRegistros = numRegistros;
    }

    public boolean isBusqueda() {
        return busqueda;
    }

    public void setBusqueda(boolean busqueda) {
        this.busqueda = busqueda;
    }

    public Integer[] getRangos() {
        return rangos;
    }

    public int getContador() {
        return contador;
    }

    public void setContador(int contador) {
        this.contador = contador;
    }

    public void setFuncionarios(List<FuncionarioDTO> funcionarios) {
        this.funcionarios = funcionarios;
    }

    public List<FuncionarioDTO> getFuncionariosFiltros() {
        return funcionariosFiltros;
    }

    public void setFuncionariosFiltros(List<FuncionarioDTO> funcionariosFiltros) {
        this.funcionariosFiltros = funcionariosFiltros;
    }

    public List<FuncionarioDTO> getListaFuncionariosTodos() {
        return listaFuncionariosTodos;
    }

    public void setListaFuncionariosTodos(List<FuncionarioDTO> listaFuncionariosTodos) {
        this.listaFuncionariosTodos = listaFuncionariosTodos;
    }

    public FuncionarioDTO getFuncionarioSeleccionado() {
        return funcionarioSeleccionado;
    }

    public void setFuncionarioSeleccionado(FuncionarioDTO funcionarioSeleccionado) {
        this.funcionarioSeleccionado = funcionarioSeleccionado;
        try {
            this.funcionarioSeleccionado = registroServicio
                    .obtenerFuncionarioPorId(funcionarioSeleccionado.getId());
            this.pestania = "Datos Personales";
            activarTab();
            editarContrato = false;
        } catch (ServicioException e) {
            e.printStackTrace();
            JsfUtil.msgError("Ocurri un error al consultar el funcionario.");
        }
    }

    public PersonaDTO getPersonaFuncionario() {
        return personaFuncionario;
    }

    public void setPersonaFuncionario(PersonaDTO personaFuncionario) {
        this.personaFuncionario = personaFuncionario;
    }

    public ContratacionDTO getContratoFuncionario() {
        return contratoFuncionario;
    }

    public void setContratoFuncionario(ContratacionDTO contratoFuncionario) {
        this.contratoFuncionario = contratoFuncionario;
        this.contratoFuncionario.setPersonaDTO(funcionarioSeleccionado);
    }

    public List<String> getTipoFuncionario() {
        return tipoFuncionario;
    }

    public void setTipoFuncionario(List<String> tipoFuncionario) {
        this.tipoFuncionario = tipoFuncionario;
    }

    public List<SedeIesDTO> getListaSedeIesDto() {
        return listaSedeIesDto;
    }

    public void setListaSedeIesDto(List<SedeIesDTO> listaSedeIesDto) {
        this.listaSedeIesDto = listaSedeIesDto;
    }

    public Long getIdSedeSeleccionada() {
        return idSedeSeleccionada;
    }

    public void setIdSedeSeleccionada(Long idSedeSeleccionada) {
        this.idSedeSeleccionada = idSedeSeleccionada;
    }

    public String getTipoFunc() {
        return tipoFunc;
    }

    public void setTipoFunc(String tipoFunc) {
        this.tipoFunc = tipoFunc;
    }

    public String getCedulaFuncionario() {
        return cedulaFuncionario;
    }

    public void setCedulaFuncionario(String cedulaFuncionario) {
        this.cedulaFuncionario = cedulaFuncionario;
    }

    public FaseIesDTO getFaseIesDTO() {
        return faseIesDTO;
    }

    public void setFaseIesDTO(FaseIesDTO faseIesDTO) {
        this.faseIesDTO = faseIesDTO;
    }

    public String getIdentificacion() {
        return identificacion;
    }

    public void setIdentificacion(String identificacion) {
        this.identificacion = identificacion;
    }

    public Boolean getAlertaEvaluador() {
        return alertaEvaluador;
    }

    public void setAlertaEvaluador(Boolean alertaEvaluador) {
        this.alertaEvaluador = alertaEvaluador;
    }

    public Integer getNumeroFuncionarios() {
        return numeroFuncionarios;
    }

    public void setNumeroFuncionarios(Integer numeroFuncionarios) {
        this.numeroFuncionarios = numeroFuncionarios;
    }

    public String getRelacionSeleccionada() {
        return relacionSeleccionada;
    }

    public void setRelacionSeleccionada(String relacionSeleccionada) {
        this.relacionSeleccionada = relacionSeleccionada;
    }

    public boolean isHabilitarSiguiente() {
        return habilitarSiguiente;
    }

    public void setHabilitarSiguiente(boolean habilitarSiguiente) {
        this.habilitarSiguiente = habilitarSiguiente;
    }

}