protected void Button_GUARDAR_Click(object sender, EventArgs e)
    {
        Decimal ID_EMPRESA = Convert.ToDecimal(HiddenField_ID_EMPRESA.Value);

        if (GridView_MotivosRotacion.Rows.Count <= 0)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "Debe seleccionar por lo menos un Motivo de Rotación y Retiro.", Proceso.Advertencia);
        }
        else
        {
            List<MotivoRotacionEmpresa> listaMotivosRotacionAsociados = new List<MotivoRotacionEmpresa>();

            for (int i = 0; i < GridView_MotivosRotacion.Rows.Count; i++)
            {
                GridViewRow filaGrilla = GridView_MotivosRotacion.Rows[i];

                CheckBox check = filaGrilla.FindControl("CheckBox_Configurado") as CheckBox;

                if (check.Checked == true)
                {
                    MotivoRotacionEmpresa _motivoParaLista = new MotivoRotacionEmpresa();

                    _motivoParaLista.ACTIVO = true;
                    _motivoParaLista.ID_DETALLE_ROTACION = Convert.ToDecimal(GridView_MotivosRotacion.DataKeys[i].Values["ID_DETALLE_ROTACION"]);
                    _motivoParaLista.ID_EMPRESA = ID_EMPRESA;

                    Decimal ID_ROTACION_EMPRESA = 0;
                    if (GridView_MotivosRotacion.DataKeys[i].Values["ID_ROTACION_EMPRESA"].ToString().Trim() != "")
                    {
                        ID_ROTACION_EMPRESA = Convert.ToDecimal(GridView_MotivosRotacion.DataKeys[i].Values["ID_ROTACION_EMPRESA"]);
                    }
                    _motivoParaLista.ID_ROTACION_EMPRESA = ID_ROTACION_EMPRESA;

                    listaMotivosRotacionAsociados.Add(_motivoParaLista);
                }
            }

            MotivoRotacionRetiro _motivo = new MotivoRotacionRetiro(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

            Boolean verificado = _motivo.ActualizarMotivosRotacionEmpresa(ID_EMPRESA, listaMotivosRotacionAsociados);

            if (verificado == false)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _motivo.MensajeError, Proceso.Error);
            }
            else
            {
                Ocultar(Acciones.Inicio);
                Mostrar(Acciones.Inicio);
                Cargar(Acciones.Inicio);

                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "Los motivos de Rotación y Retiro asociados a la empresa se actualizaron correctamente.", Proceso.Correcto);
            }
        }
    }
    public byte[] GenerarPDFEntrevistaRetiro(Decimal ID_EMPLEADO, Decimal ID_SOLICITUD, Decimal ID_EMPRESA)
    {
        String USULOG_ENTREVISTA = Session["USU_LOG"].ToString();

        tools _tools = new tools();

        // OBTENEMOS INFORMACION DE USUARIO
        usuario _usuario = new usuario(Session["idEmpresa"].ToString());
        DataTable tablaUsuario = _usuario.ObtenerUsuarioPorUsuLog(USULOG_ENTREVISTA); //ACA VA ES EL DE LA ENTREVISTA
        DataRow filaUsuario = tablaUsuario.Rows[0];

        String NOMBRE_DILIGENCIA = "";
        if (filaUsuario["USU_TIPO"].ToString().ToUpper() == "PLANTA")
        {
            NOMBRE_DILIGENCIA = filaUsuario["NOMBRES"].ToString().Trim() + " " + filaUsuario["APELLIDOS"].ToString().Trim();
        }
        else
        {
            NOMBRE_DILIGENCIA = filaUsuario["NOMBRES_EXTERNO"].ToString().Trim() + " " + filaUsuario["APELLIDOS_EXTERNO"].ToString().Trim();
        }

        //OBTENEMOS LA INFORMACION DEL CLIENTE
        cliente _cliente = new cliente(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaCliente = _cliente.ObtenerEmpresaConIdEmpresa(ID_EMPRESA);
        DataRow filaCliente = tablaCliente.Rows[0];

        String RAZ_SOCIAL = filaCliente["RAZ_SOCIAL"].ToString().Trim();
        String NIT_EMPRESA = filaCliente["NIT_EMPRESA"].ToString().Trim() + "-" + filaCliente["DIG_VER"].ToString().Trim();
        String DIR_EMPRESA = filaCliente["DIR_EMP"].ToString().Trim() + " " + filaCliente["ID_CIUDAD_EMPRESA"].ToString().Trim();

        //OBTENEMOS LA INFORMACION DE LA SOLICITUD DE INGRESO
        radicacionHojasDeVida _radicacionHojasDeVida = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaSolicitud = _radicacionHojasDeVida.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(ID_SOLICITUD));
        DataRow filaSolicitud = tablaSolicitud.Rows[0];

        String NOMBRE_ASPIRANTE = filaSolicitud["NOMBRES"].ToString().Trim() + " " + filaSolicitud["APELLIDOS"].ToString().Trim();
        String DOC_IDENTIDAD_ASPIRANTE = filaSolicitud["TIP_DOC_IDENTIDAD"].ToString().Trim() + " " + filaSolicitud["NUM_DOC_IDENTIDAD"].ToString().Trim();
        int EDAD_ASPIRANTE = 0;
        if (DBNull.Value.Equals(filaSolicitud["FCH_NACIMIENTO"]) == false)
        {
            try
            {
                EDAD_ASPIRANTE = _tools.ObtenerEdadDesdeFechaNacimiento(Convert.ToDateTime(filaSolicitud["FCH_NACIMIENTO"]));
            }
            catch
            {
                EDAD_ASPIRANTE = 0;
            }
        }
        String DIRECCION_ASPIRANTE = filaSolicitud["DIR_ASPIRANTE"].ToString().Trim();
        String CIUDAD_ASPIRANTE = filaSolicitud["NOMBRE_CIUDAD"].ToString().Trim();
        String SECTOR_ASPIRANTE = filaSolicitud["SECTOR"].ToString();
        String TELEFONOS_ASPIRANTE = filaSolicitud["TEL_ASPIRANTE"].ToString();
        String EMAIL_ASPIRANTE = filaSolicitud["E_MAIL"].ToString().Trim();

        //DATOS DEL MOTIVO DE RETIRO
        MotivoRotacionRetiro _motivo = new MotivoRotacionRetiro(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaResultadosEntrevista = _motivo.ObtenerResultadosEntrevistaDeRetiroParaEmpleado(ID_EMPLEADO);

        //CREAMOS LA TABLA DE MOTIVOS DE RETIRO
        Boolean yaSeTieneObservaciones = false;
        String OBSERVACIONES = null;

        String html_tabla_motivos = "<table border=\"1\" cellpadding=\"1\" cellspacing=\"0\" width=\"95%\" align=\"center\" style=\"font-size:8px; line-height:9px;\">";
        html_tabla_motivos += "<tr>";
        html_tabla_motivos += "<td width=\"50%\" style=\"text-align:center;\">";
        html_tabla_motivos += "CATEGORÍA";
        html_tabla_motivos += "</td>";
        html_tabla_motivos += "<td width=\"50%\" style=\"text-align:center;\">";
        html_tabla_motivos += "MOTIVO";
        html_tabla_motivos += "</td>";
        html_tabla_motivos += "</tr>";
        foreach (DataRow filaMotivo in tablaResultadosEntrevista.Rows)
        {
            if (yaSeTieneObservaciones == false)
            {
                //SOLO UNA VEZ
                OBSERVACIONES = filaMotivo["OBSERVACIONES"].ToString().Trim();
                yaSeTieneObservaciones = true;
            }

            Decimal ID_DETALLE_ROTACION_EMPLEADO = Convert.ToDecimal(filaMotivo["ID_DETALLE_ROTACION_EMPLEADO"]);
            Decimal ID_MAESTRA_ROTACION_EMPLEADO = Convert.ToDecimal(filaMotivo["ID_MAESTRA_ROTACION_EMPLEADO"]);
            Decimal ID_ROTACION_EMPRESA = Convert.ToDecimal(filaMotivo["ID_ROTACION_EMPRESA"]);

            //OBTENEMOS DATOS COMPLEMENTARIOS POR MEDIO DE ID_ROTACION_EMPRESA
            DataTable tablaInfoComplementaria = _motivo.ObtenerMotivoEmpresaPorId(ID_ROTACION_EMPRESA);
            DataRow filaInfoComplementaria = tablaInfoComplementaria.Rows[0];

            html_tabla_motivos += "<tr>";
            html_tabla_motivos += "<td width=\"50%\" style=\"text-align:justify;\">";
            html_tabla_motivos += filaInfoComplementaria["TITULO_MAESTRA_ROTACION"];
            html_tabla_motivos += "</td>";
            html_tabla_motivos += "<td width=\"50%\" style=\"text-align:justify;\">";
            html_tabla_motivos += filaInfoComplementaria["TITULO"];
            html_tabla_motivos += "</td>";
            html_tabla_motivos += "</tr>";
        }
        html_tabla_motivos += "</table>";

        /*
         * Generación del archi de informe de entrevista de retiro
         * Stream con el contenido del pdf.
        */
        String html_encabezado = "<html>";
        html_encabezado += "<head>";
        html_encabezado += "</head>";
        html_encabezado += "<body>";

        String html_pie = "</body>";
        html_pie += "</html>";

        //En esta variable cargamos el documento plantilla
        StreamReader archivo_original = new StreamReader(Server.MapPath(@"~\plantillas_reportes\entrevista_retiro.htm"));

        String html_formato_entrevista = html_encabezado + archivo_original.ReadToEnd();

        archivo_original.Dispose();
        archivo_original.Close();

        html_formato_entrevista = html_formato_entrevista.Replace("[RAZ_SOCIAL]", RAZ_SOCIAL);
        html_formato_entrevista = html_formato_entrevista.Replace("[NIT_EMPRESA]", NIT_EMPRESA);
        html_formato_entrevista = html_formato_entrevista.Replace("[DIR_EMPRESA]", DIR_EMPRESA);

        html_formato_entrevista = html_formato_entrevista.Replace("[NOMBRE_ASPIRANTE]", NOMBRE_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[DOC_IDENTIDAD_ASPIRANTE]", DOC_IDENTIDAD_ASPIRANTE);
        if (EDAD_ASPIRANTE > 0)
        {
            html_formato_entrevista = html_formato_entrevista.Replace("[EDAD_ASPIRANTE]", EDAD_ASPIRANTE.ToString() + " Años.");
        }
        else
        {
            html_formato_entrevista = html_formato_entrevista.Replace("[EDAD_ASPIRANTE]", "Desconocida.");
        }
        html_formato_entrevista = html_formato_entrevista.Replace("[DIRECCION_ASPIRANTE]", DIRECCION_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[CIUDAD_ASPIRANTE]", CIUDAD_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[SECTOR_ASPIRANTE]", SECTOR_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[TELEFONOS_ASPIRANTE]", TELEFONOS_ASPIRANTE);
        html_formato_entrevista = html_formato_entrevista.Replace("[EMAIL_ASPIRANTE]", EMAIL_ASPIRANTE);

        html_formato_entrevista = html_formato_entrevista.Replace("[TABLA_MOTIVOS_RETIRO]", html_tabla_motivos);

        html_formato_entrevista = html_formato_entrevista.Replace("[OBSERVACIONES]", OBSERVACIONES);

        html_formato_entrevista = html_formato_entrevista.Replace("[NOMBRE_DILIGENCIA]", NOMBRE_DILIGENCIA);

        html_formato_entrevista += html_pie;

        //creamos un configuramos el documento de pdf
        //(tamaño de la hoja,margen izq, margen der, margin arriba margen abajo)
        iTextSharp.text.Document document = new iTextSharp.text.Document(new Rectangle(595, 842), 50, 50, 80, 45);

        using (MemoryStream streamArchivo = new MemoryStream())
        {
            iTextSharp.text.pdf.PdfWriter writer = PdfWriter.GetInstance(document, streamArchivo);

            // Our custom Header and Footer is done using Event Handler
            pdfEvents PageEventHandler = new pdfEvents();
            writer.PageEvent = PageEventHandler;

            // Define the page header
            // Define the page header
            if (Session["idEmpresa"].ToString() == "1")
            {
                PageEventHandler.dirImagenHeader = Server.MapPath("~/imagenes/reportes/logo_sertempo.png");
            }
            else
            {
                PageEventHandler.dirImagenHeader = Server.MapPath("~/imagenes/reportes/logo_eficiencia.png");
            }

            PageEventHandler.fechaImpresion = DateTime.Now;
            PageEventHandler.tipoDocumento = "entrevista_retiro";

            document.Open();

            //capturamos el archivo temporal del response
            String tempFile = Path.GetTempFileName();

            //y lo llenamos con el html de la plantilla
            using (StreamWriter tempwriter = new StreamWriter(tempFile, false))
            {
                tempwriter.Write(html_formato_entrevista);
            }

            //leeemos el archivo temporal y lo colocamos en el documento de pdf
            List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StreamReader(tempFile), new StyleSheet());

            foreach (IElement element in htmlarraylist)
            {
                if (element.Chunks.Count > 0)
                {
                    if (element.Chunks[0].Content == "linea para paginacion de pdf")
                    {
                        document.NewPage();
                    }
                    else
                    {
                        document.Add(element);
                    }
                }
                else
                {
                    document.Add(element);
                }
            }

            //limpiamos todo
            document.Close();

            writer.Close();

            return streamArchivo.ToArray();
        }
    }
    private void Cargar(Decimal ID_SOLICITUD, Decimal ID_EMPLEADO, Decimal ID_EMPRESA, Decimal REGISTRO_CONTRATO)
    {
        HiddenField_ID_SOLICITUD.Value = ID_SOLICITUD.ToString();
        HiddenField_ID_EMPLEADO.Value = ID_EMPLEADO.ToString();
        HiddenField_ID_EMPRESA.Value = ID_EMPRESA.ToString();
        HiddenField_REGISTRO_CONTRATO.Value = REGISTRO_CONTRATO.ToString();

        radicacionHojasDeVida _radicacionHojasDeVida = new radicacionHojasDeVida(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoTrabajador = _radicacionHojasDeVida.ObtenerRegSolicitudesingresoPorIdSolicitud(Convert.ToInt32(ID_SOLICITUD));

        cliente _cliente = new cliente(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaCliente = _cliente.ObtenerEmpresaConIdEmpresa(ID_EMPRESA);

        if (tablaInfoTrabajador.Rows.Count <= 0)
        {
            if (_radicacionHojasDeVida.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _radicacionHojasDeVida.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información del Trabajador Seleciconado.", Proceso.Advertencia);
            }
        }
        else
        {
            if (tablaCliente.Rows.Count <= 0)
            {
                if (_cliente.MensajeError != null)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _cliente.MensajeError, Proceso.Error);
                }
                else
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información de la Empresa asociada al trabajador.", Proceso.Advertencia);
                }
            }
            else
            {
                DataRow filainfoCliente = tablaCliente.Rows[0];

                cargarInfoTrabajador(tablaInfoTrabajador.Rows[0], filainfoCliente);

                MotivoRotacionRetiro _motivo = new MotivoRotacionRetiro(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
                DataTable tablaMotivosAsociadosAEmpresa = _motivo.ObtenerMotivosActivosEmpresa(ID_EMPRESA);

                if (tablaMotivosAsociadosAEmpresa.Rows.Count <= 0)
                {
                    if (_motivo.MensajeError != null)
                    {
                        Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _motivo.MensajeError, Proceso.Error);
                    }
                    else
                    {
                        Ocultar(Acciones.Inicio);
                        Desactivar(Acciones.Inicio);
                        Mostrar(Acciones.Inicio);
                        Cargar(Acciones.Inicio);

                        Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La empresa no tiene Motivos de Rotación y Retiros asociados.", Proceso.Advertencia);
                    }
                }
                else
                {
                    _motivo.MensajeError = null;

                    Boolean correcto = true;

                    DataTable tablaResultadosEntrevistaRetiro = _motivo.ObtenerResultadosEntrevistaDeRetiroParaEmpleado(ID_EMPLEADO);

                    if (tablaResultadosEntrevistaRetiro.Rows.Count <= 0)
                    {
                        if (_motivo.MensajeError != null)
                        {
                            if (_motivo.MensajeError != null)
                            {
                                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _motivo.MensajeError, Proceso.Error);
                                correcto = false;
                            }
                        }
                    }

                    if (correcto == true)
                    {
                        DataTable tablaparaGrilla = configurarTablaParaGrillaMotivos();

                        Boolean idEncontrado = false;

                        Int32 contadorResultados = 0;

                        for (int i = 0; i < tablaMotivosAsociadosAEmpresa.Rows.Count; i++)
                        {
                            idEncontrado = false;

                            DataRow filaMotivo = tablaMotivosAsociadosAEmpresa.Rows[i];
                            DataRow filaParaGrilla = tablaparaGrilla.NewRow();

                            filaParaGrilla["ID_MAESTRA_ROTACION"] = filaMotivo["ID_MAESTRA_ROTACION"];
                            filaParaGrilla["ID_DETALLE_ROTACION"] = filaMotivo["ID_DETALLE_ROTACION"];
                            filaParaGrilla["ID_ROTACION_EMPRESA"] = filaMotivo["ID_ROTACION_EMPRESA"];

                            filaParaGrilla["TITULO"] = filaMotivo["TITULO"];
                            filaParaGrilla["TITULO_MAESTRA_ROTACION"] = filaMotivo["TITULO_MAESTRA_ROTACION"];

                            Decimal ID_ROTACION_EMPRESA_1 = Convert.ToDecimal(filaMotivo["ID_ROTACION_EMPRESA"]);

                            Decimal ID_DETALLE_ROTACION_EMPLEADO = 0;

                            for(int j = 0; j < tablaResultadosEntrevistaRetiro.Rows.Count; j++)
                            {
                                DataRow filaResultado = tablaResultadosEntrevistaRetiro.Rows[j];

                                Decimal ID_ROTACION_EMPRESA_2 = Convert.ToDecimal(filaResultado["ID_ROTACION_EMPRESA"]);

                                if(ID_ROTACION_EMPRESA_1 == ID_ROTACION_EMPRESA_2)
                                {
                                    contadorResultados += 1;

                                    ID_DETALLE_ROTACION_EMPLEADO = Convert.ToDecimal(filaResultado["ID_DETALLE_ROTACION_EMPLEADO"]);
                                    idEncontrado = true;

                                    if (contadorResultados == 1)
                                    {
                                        HiddenField_ID_MAESTRA_ENTREVISTA_EMPLEADO.Value = filaResultado["ID_MAESTRA_ROTACION_EMPLEADO"].ToString().Trim();

                                        TextBox_Observaciones.Text = filaResultado["OBSERVACIONES"].ToString().Trim();
                                    }
                                    break;
                                }
                            }

                            if(idEncontrado == true)
                            {
                                filaParaGrilla["ID_DETALLE_ROTACION_EMPLEADO"] = ID_DETALLE_ROTACION_EMPLEADO;
                            }
                            else
                            {
                                filaParaGrilla["ID_DETALLE_ROTACION_EMPLEADO"] = 0;
                            }

                            tablaparaGrilla.Rows.Add(filaParaGrilla);
                        }

                        CargarGrillaMotivosRotacionDesdeTabla(tablaparaGrilla);

                        Ocultar(Acciones.Inicio);

                        if (contadorResultados <= 0)
                        {
                            Mostrar(Acciones.Nuevo);
                            Activar(Acciones.Nuevo);
                            Limpiar(Acciones.Nuevo);

                            habilitarFilasGrilla(GridView_MotivosRotacion, 0);
                        }
                        else
                        {
                            Mostrar(Acciones.Cargar);
                            Desactivar(Acciones.Cargar);

                            inhabilitarFilasGrilla(GridView_MotivosRotacion, 0);
                        }
                    }
                }
            }
        }
    }
    private void cargar_GridView_MotivosRotacion()
    {
        Decimal ID_EMPRESA = Convert.ToDecimal(HiddenField_ID_EMPRESA.Value);

        MotivoRotacionRetiro _motivo = new MotivoRotacionRetiro(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaCat = _motivo.ObtenerAsociacionMotivosEmpresa(ID_EMPRESA);

        if (tablaCat.Rows.Count <= 0)
        {
            if (_motivo.MensajeError == null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se han configurado las categorías y motivos de rotación y retiro.", Proceso.Advertencia);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _motivo.MensajeError, Proceso.Error);
            }

            GridView_MotivosRotacion.DataSource = null;
            GridView_MotivosRotacion.DataBind();
        }
        else
        {
            CargarGrillaMotivosRotacionDesdeTabla(tablaCat);

            inhabilitarFilasGrilla(GridView_MotivosRotacion, 0);
        }
    }
    private void Actualizar()
    {
        Decimal ID_MAESTRA_ROTACION_EMPLEADO = 0;
        Decimal ID_EMPLEADO = Convert.ToDecimal(HiddenField_ID_EMPLEADO.Value);
        Decimal REGISTRO_CONTRATO = Convert.ToDecimal(HiddenField_REGISTRO_CONTRATO.Value);
        Decimal ID_SOLICITUD = Convert.ToDecimal(HiddenField_ID_SOLICITUD.Value);
        Decimal ID_EMPRESA = Convert.ToDecimal(HiddenField_ID_EMPRESA.Value);

        String OBSERVACIONES = TextBox_Observaciones.Text.Trim();

        if (String.IsNullOrEmpty(HiddenField_ID_MAESTRA_ENTREVISTA_EMPLEADO.Value) == false)
        {
            ID_MAESTRA_ROTACION_EMPLEADO = Convert.ToDecimal(HiddenField_ID_MAESTRA_ENTREVISTA_EMPLEADO.Value);
        }

        List<EntrevistaRotacionEmpleado> listaMotivosResultados = new List<EntrevistaRotacionEmpleado>();

        for (int i = 0; i < GridView_MotivosRotacion.Rows.Count; i++)
        {
            GridViewRow filaGrilla = GridView_MotivosRotacion.Rows[i];

            CheckBox check = filaGrilla.FindControl("CheckBox_Configurado") as CheckBox;

            if (check.Checked == true)
            {
                EntrevistaRotacionEmpleado _rotacionParaLista = new EntrevistaRotacionEmpleado();

                _rotacionParaLista.ACTIVO = true;
                _rotacionParaLista.ID_DETALLE_ROTACION_EMPLEADO = Convert.ToDecimal(GridView_MotivosRotacion.DataKeys[i].Values["ID_DETALLE_ROTACION_EMPLEADO"]);
                _rotacionParaLista.ID_MAESTRA_ROTACION_EMPLEADO = ID_MAESTRA_ROTACION_EMPLEADO;
                _rotacionParaLista.ID_ROTACION_EMPRESA = Convert.ToDecimal(GridView_MotivosRotacion.DataKeys[i].Values["ID_ROTACION_EMPRESA"]);

                listaMotivosResultados.Add(_rotacionParaLista);
            }
        }

        MotivoRotacionRetiro _motivo = new MotivoRotacionRetiro(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        ID_MAESTRA_ROTACION_EMPLEADO = _motivo.ActualizarResultadosEntrevistaRetiroDeEmpleado(ID_MAESTRA_ROTACION_EMPLEADO, ID_EMPLEADO, OBSERVACIONES,listaMotivosResultados);

        if (ID_MAESTRA_ROTACION_EMPLEADO <= 0)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _motivo.MensajeError, Proceso.Error);
        }
        else
        {

            Ocultar(Acciones.Inicio);
            Mostrar(Acciones.Cargar);

            Cargar(ID_SOLICITUD, ID_EMPLEADO, ID_EMPRESA, REGISTRO_CONTRATO);

            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La entrevista de Rotación y Retiro fue actualizada correctamente.", Proceso.Correcto);
        }
    }
    private void Guardar()
    {
        String TITULO = TextBox_TituloCategoria.Text.Trim();

        List<MotivoRotacionRetiro> listaMotivos = new List<MotivoRotacionRetiro>();

        for (int i = 0; i < GridView_MotivosRetiro.Rows.Count; i++)
        {
            MotivoRotacionRetiro _motivoParaLista = new MotivoRotacionRetiro();

            _motivoParaLista.ACTIVO = true;
            _motivoParaLista.ID_DETALLE_ROTACION = Convert.ToDecimal(GridView_MotivosRetiro.DataKeys[i].Values["ID_DETALLE_ROTACION"]);

            TextBox textoTitutlo = GridView_MotivosRetiro.Rows[i].FindControl("TextBox_TituloMotivo") as TextBox;
            _motivoParaLista.TITULO = textoTitutlo.Text;

            _motivoParaLista.ID_MAESTRA_ROTACION = 0;

            listaMotivos.Add(_motivoParaLista);
        }

        MotivoRotacionRetiro _motivo = new MotivoRotacionRetiro(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        Decimal ID_MAESTRA_ROTACION = _motivo.GuardarCategoriaYSusMotivos(TITULO, listaMotivos);

        if (ID_MAESTRA_ROTACION <= 0)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _motivo.MensajeError, Proceso.Error);
        }
        else
        {
            Ocultar(Acciones.Inicio);
            Desactivar(Acciones.Inicio);
            Mostrar(Acciones.Cargar);

            Cargar(ID_MAESTRA_ROTACION);

            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La Categoría de Motivos de Rotación y Retiros fue creada correctamente.", Proceso.Correcto);
        }
    }
    private void cargar_GridView_RESULTADOS_BUSQUEDA()
    {
        MotivoRotacionRetiro _motivo = new MotivoRotacionRetiro(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaCat = _motivo.ObtenerCategoriasRotacionRetiroTodas();

        if (tablaCat.Rows.Count <= 0)
        {
            if (_motivo.MensajeError == null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontraron registros de Rotación y Retiro.", Proceso.Advertencia);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _motivo.MensajeError, Proceso.Error);
            }

            Panel_RESULTADOS_GRID.Visible = false;
        }
        else
        {
            GridView_RESULTADOS_BUSQUEDA.DataSource = tablaCat;
            GridView_RESULTADOS_BUSQUEDA.DataBind();
        }
    }
    private void Cargar(Decimal ID_MAESTRA_ROTACION)
    {
        HiddenField_ID_MAESTRA_ROTACION.Value = ID_MAESTRA_ROTACION.ToString();

        MotivoRotacionRetiro _motivo = new MotivoRotacionRetiro(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable tablaCategoria = _motivo.ObtenerCategoriaPorId(ID_MAESTRA_ROTACION);

        if (tablaCategoria.Rows.Count <= 0)
        {
            if (_motivo.MensajeError != null)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _motivo.MensajeError, Proceso.Error);
            }
            else
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontró información de la catagoría seleccionada.", Proceso.Advertencia);
            }
        }
        else
        {
            DataRow filaCategoria = tablaCategoria.Rows[0];

            CargarControlRegistro(filaCategoria);

            TextBox_TituloCategoria.Text = filaCategoria["TITULO"].ToString().Trim();
            Cargar(Listas.EstadosCategoria, DropDownList_EstadoCategoria);
            DropDownList_EstadoCategoria.SelectedValue = filaCategoria["ACTIVO"].ToString().Trim();

            _motivo.MensajeError = null;

            DataTable tablaMotivos = _motivo.ObtenerMotivosActivosDeCategoria(ID_MAESTRA_ROTACION);

            if (tablaMotivos.Rows.Count <= 0)
            {
                if (_motivo.MensajeError != null)
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _motivo.MensajeError, Proceso.Error);
                }
                else
                {
                    Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "No se encontraron Motivos de Rotacion y Retiro asociados a la categoría actual.", Proceso.Advertencia);
                }
                GridView_MotivosRetiro.DataSource = null;
                GridView_MotivosRetiro.DataBind();
            }
            else
            {
                cargarGridView_MotivosRetiroDesdeTabla(tablaMotivos);

                inhabilitarFilasGrilla(GridView_MotivosRetiro, 2);
            }
        }
    }
    private void Actualizar()
    {
        Decimal ID_MAESTRA_ROTACION = Convert.ToDecimal(HiddenField_ID_MAESTRA_ROTACION.Value);

        String TITULO_CATEGORIA = TextBox_TituloCategoria.Text;
        Boolean ACTIVO_CATEGORIA = false;
        if (DropDownList_EstadoCategoria.SelectedValue.ToUpper() == "TRUE")
        {
            ACTIVO_CATEGORIA = true;
        }

        List<MotivoRotacionRetiro> listaMotivos = new List<MotivoRotacionRetiro>();

        for (int i = 0; i < GridView_MotivosRetiro.Rows.Count; i++)
        {
            MotivoRotacionRetiro _motivoParaLista = new MotivoRotacionRetiro();

            _motivoParaLista.ACTIVO = true;
            _motivoParaLista.ID_DETALLE_ROTACION = Convert.ToDecimal(GridView_MotivosRetiro.DataKeys[i].Values["ID_DETALLE_ROTACION"]);

            TextBox textoTitutlo = GridView_MotivosRetiro.Rows[i].FindControl("TextBox_TituloMotivo") as TextBox;
            _motivoParaLista.TITULO = textoTitutlo.Text;

            _motivoParaLista.ID_MAESTRA_ROTACION = 0;

            listaMotivos.Add(_motivoParaLista);
        }

        MotivoRotacionRetiro _motivo = new MotivoRotacionRetiro(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        Boolean verificado = _motivo.ActualizarCategoriaYSusMotivos(ID_MAESTRA_ROTACION, TITULO_CATEGORIA, ACTIVO_CATEGORIA, listaMotivos);

        if (verificado == false)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _motivo.MensajeError, Proceso.Error);
        }
        else
        {
            Ocultar(Acciones.Inicio);
            Desactivar(Acciones.Inicio);
            Mostrar(Acciones.Cargar);

            Cargar(ID_MAESTRA_ROTACION);

            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La Categoría de Motivos de Rotación y Retiros fue modificada correctamente.", Proceso.Correcto);
        }
    }