protected void Page_Load(object sender, EventArgs e)
    {
        tools _tools = new tools();
        SecureQueryString QueryStringSeguro;
        QueryStringSeguro = new SecureQueryString(_tools.byteParaQueryStringSeguro(), Request["data"]);

        Decimal id_incapacidad = Convert.ToDecimal(QueryStringSeguro["id_incapacidad"]);

        incapacidad Incapacidad = new incapacidad(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable dataTable = Incapacidad.ObtenerPorIdIncapacidad(id_incapacidad);
        if (dataTable.Rows.Count > 0)
        {
            DataRow dataRow = dataTable.Rows[0];
            Response.Clear();
            Response.AddHeader("content-disposition", string.Format("attachment;filename={0}", "Incapacidad" + dataRow["REGISTRO"].ToString() + dataRow["EXTENSION"].ToString()));

            Response.ContentType = dataRow["TIPO"].ToString().Trim();
            Response.BinaryWrite((byte[])dataRow["ARCHIVO"]);
            Response.End();
        }
    }
    private void Modificar()
    {
        tools _tools = new tools();
        Byte[] archivo = null;
        Int32 archivo_tamaño = 0;
        String archivo_extension = null;
        String archivo_tipo = null;
        DateTime fecha = new DateTime();
        bool actualizado = false;

        incapacidad _incapacidad = new incapacidad(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        Decimal VAL_RECONOCIDO = !String.IsNullOrEmpty(TextBox_VAL_RECONOCIDO.Text) ? Convert.ToDecimal(TextBox_VAL_RECONOCIDO.Text) : 0;

        try
        {
            if (FileUpload_archivo.HasFile == true)
            {
                using (BinaryReader reader = new BinaryReader(FileUpload_archivo.PostedFile.InputStream))
                {
                    archivo = reader.ReadBytes(FileUpload_archivo.PostedFile.ContentLength);
                    archivo_tamaño = FileUpload_archivo.PostedFile.ContentLength;
                    archivo_tipo = FileUpload_archivo.PostedFile.ContentType;
                    archivo_extension = _tools.obtenerExtensionArchivo(FileUpload_archivo.PostedFile.FileName);
                }
            }

            actualizado = _incapacidad.Actualizar(Convert.ToDecimal(TextBox_ID.Text),
                Convert.ToDateTime(TextBox_FECHA.Text),
                DropDownList_TIPO_INCA.SelectedValue,
                DropDownList_CLASE_INCA.SelectedValue,
                DropDownList_PRORROGA.SelectedValue,
                DropDownList_SEVERO.SelectedValue,
                TextBox_OBS_REG.Text, VAL_RECONOCIDO,
                TextBox_NUM_AUTORIZA.Text,
                Convert.ToDateTime(TextBox_FCH_INI_REAL.Text),
                Convert.ToDateTime(TextBox_FCH_TER_REAL.Text),
                DropDownList_DSC_DIAG.SelectedValue,
                Convert.ToInt32(TextBox_DIAS_INCAP.Text),
                DropDownList_INC_CARENCIA.SelectedValue,
                Convert.ToDecimal(DropDownList_ID_CONCEPTO.SelectedValue),
                TextBox_transcripcion_fecha_radicacion.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_transcripcion_fecha_radicacion.Text),
                TextBox_transcripcion_fecha_seguimiento.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_transcripcion_fecha_seguimiento.Text),
                TextBox_transcripcion_numero.Text,
                TextBox_transcripcion_valor.Text == string.Empty ? 0 : Convert.ToDecimal(TextBox_transcripcion_valor.Text),
                TextBox_transcripcion_notas.Text,
                CheckBox_transcripcion_VoBo.Checked,
                TextBox_liquidacion_fecha_radicacion.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_liquidacion_fecha_radicacion.Text),
                TextBox_liquidacion_fecha_seguimiento.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_liquidacion_fecha_seguimiento.Text),
                TextBox_liquidacion_numero.Text,
                TextBox_liquidacion_valor.Text == string.Empty ? 0 : Convert.ToDecimal(TextBox_liquidacion_valor.Text),
                TextBox_liquidacion_notas.Text,
                CheckBox_liquidacion_VoBo.Checked,
                TextBox_reliquidacion_fecha_radicacion.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_reliquidacion_fecha_radicacion.Text),
                TextBox_reliquidacion_fecha_seguimiento.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_reliquidacion_fecha_seguimiento.Text),
                TextBox_reliquidacion_numero.Text,
                TextBox_reliquidacion_valor.Text == string.Empty ? 0 : Convert.ToDecimal(TextBox_reliquidacion_valor.Text),
                TextBox_reliquidacion_notas.Text,
                CheckBox_reliquidacion_VoBo.Checked,
                TextBox_cobro_fecha_radicacion.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_cobro_fecha_radicacion.Text),
                TextBox_cobro_fecha_seguimiento.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_cobro_fecha_seguimiento.Text),
                TextBox_cobro_numero.Text,
                TextBox_cobro_valor.Text == string.Empty ? 0 : Convert.ToDecimal(TextBox_cobro_valor.Text),
                TextBox_cobro_notas.Text,
                CheckBox_cobro_VoBo.Checked,
                TextBox_pago_fecha_radicacion.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_pago_fecha_radicacion.Text),
                TextBox_pago_fecha_seguimiento.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_pago_fecha_seguimiento.Text),
                TextBox_pago_numero.Text,
                TextBox_pago_valor.Text == string.Empty ? 0 : Convert.ToDecimal(TextBox_pago_valor.Text),
                TextBox_pago_notas.Text,
                CheckBox_pago_VoBo.Checked,
                TextBox_objetada_fecha_radicacion.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_objetada_fecha_radicacion.Text),
                TextBox_objetada_fecha_seguimiento.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_objetada_fecha_seguimiento.Text),
                TextBox_objetada_numero.Text,
                TextBox_objetada_valor.Text == string.Empty ? 0 : Convert.ToDecimal(TextBox_objetada_valor.Text),
                TextBox_objetada_notas.Text,
                CheckBox_objetada_VoBo.Checked,
                TextBox_negada_fecha_radicacion.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_negada_fecha_radicacion.Text),
                TextBox_negada_fecha_seguimiento.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_negada_fecha_seguimiento.Text),
                TextBox_negada_numero.Text,
                TextBox_negada_valor.Text == string.Empty ? 0 : Convert.ToDecimal(TextBox_negada_valor.Text),
                TextBox_negada_notas.Text,
                CheckBox_negada_VoBo.Checked,
                DropDownList_estado.SelectedValue,
                DropDownList_estado_tramite.SelectedValue,
                DropDownList_tramitada_por.SelectedValue,
                archivo,
                archivo_tamaño,
                archivo_extension,
                archivo_tipo,
                TextBox_fecha_paga_nomina_desde.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_fecha_paga_nomina_desde.Text),
                TextBox_fecha_paga_nomina_hasta.Text == string.Empty ? fecha : Convert.ToDateTime(TextBox_fecha_paga_nomina_hasta.Text)
                );

            if (actualizado)
            {
                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La incapacidad fue actualizada correctamente. " , Proceso.Correcto);
                TextBox_ID.Text = ID.ToString();
                Ocultar();
                Mostrar(Acciones.Guarda);
                Bloquear(Acciones.Guarda);

            }
            else Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "La incapacidad no fue actualizada. ", Proceso.Error);
        }
        catch (Exception e)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, e.Message, Proceso.Error);
        }
    }
    protected void GridView_RESULTADOS_BUSQUEDA_SelectedIndexChanged(object sender, EventArgs e)
    {
        Ocultar();
        incapacidad _incapacidad = new incapacidad(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        DataTable _dataTable = new DataTable();
        _dataTable = _incapacidad.ObtenerPorIdContrato(Convert.ToDecimal(this.GridView_RESULTADOS_BUSQUEDA.SelectedDataKey["NUM_CONTRATO"].ToString()));

        if (_dataTable.Rows.Count > 0)
        {
            TextBox_total_dias_incapacidad.Text = Totalizar(_dataTable).ToString();
            Alertar(TextBox_total_dias_incapacidad);
            GridView_RESULTADOS_BUSQUEDA_INCAPACIDADES.DataSource = _dataTable;
            GridView_RESULTADOS_BUSQUEDA_INCAPACIDADES.DataBind();
            Cargar(this.GridView_RESULTADOS_BUSQUEDA);
            Mostrar(Acciones.BusquedaEncontroIncapacidades);
        }
        else
        {
            if (!String.IsNullOrEmpty(_incapacidad.MensajeError)) Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "Error: Consulte con el Administrador: " + _incapacidad.MensajeError, Proceso.Error);
            else
            {
                LimpiarDatosINcapacidad();

                Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "El contrato No. " + this.GridView_RESULTADOS_BUSQUEDA.SelectedDataKey["NUM_CONTRATO"].ToString() + ", no cuenta con incapacidades registradas", Proceso.Correcto);
                Cargar(this.GridView_RESULTADOS_BUSQUEDA);
                Mostrar(Acciones.BusquedaNoEncontroIncapacidades);
            }
        }
        _dataTable.Dispose();
    }
    protected void GridView_RESULTADOS_BUSQUEDA_INCAPACIDADES_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (!String.IsNullOrEmpty(this.GridView_RESULTADOS_BUSQUEDA_INCAPACIDADES.SelectedDataKey["REGISTRO"].ToString()))
        {
            incapacidad _incapacidad = new incapacidad(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            Cargar(_incapacidad.ObtenerPorIdIncapacidad(Convert.ToDecimal(this.GridView_RESULTADOS_BUSQUEDA_INCAPACIDADES.SelectedDataKey["REGISTRO"].ToString())));
            incapacidad Incapacidad = new incapacidad(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            GridView_pagos_nomina.DataSource = Incapacidad.ObtenerPagosDeNominaPorIdEmpleado(Convert.ToDecimal(TextBox_ID_EMPLEADO.Text));
            GridView_pagos_nomina.DataBind();
        }

        Ocultar();
        Mostrar(Acciones.Visualiza);
        Bloquear(Acciones.Visualiza);
    }
    private void cargar_incapacidades(Decimal ID_CONTRATO)
    {
        incapacidad _incapacidad = new incapacidad(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaIncapacidades = _incapacidad.ObtenerPorIdContrato(ID_CONTRATO);

        Ocultar(Acciones.incapacidades);

        Mostrar(Acciones.incapacidades);

        if (tablaIncapacidades.Rows.Count <= 0)
        {
            if (_incapacidad.MensajeError == null)
            {
                Informar(Panel_MENSAJE_INCAPACIDADES, Label_MENSAJE_INCAPACIDADES, "No se encontraron incapacidades para este contrato.", Proceso.Error);
            }
            else
            {
                Informar(Panel_MENSAJE_INCAPACIDADES, Label_MENSAJE_INCAPACIDADES, _incapacidad.MensajeError, Proceso.Error);
            }

            GridView_INCAPACIDADES.DataSource = null;
            GridView_INCAPACIDADES.DataBind();
        }
        else
        {
            GridView_INCAPACIDADES.DataSource = tablaIncapacidades;
            GridView_INCAPACIDADES.DataBind();
        }
    }