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

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

        examenesEmpleado _examen = new examenesEmpleado(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaInfoExamen = _examen.ObtenerConRegExamenesEmpleadoPorRegistro(Convert.ToInt32(REGISTRO));

        DataRow filaInfoExamen = tablaInfoExamen.Rows[0];

        Response.Clear();
        Response.AddHeader("content-disposition", string.Format("attachment;filename={0}", "RESULTADOS_EXAMEN_" + filaInfoExamen["REGISTRO"].ToString() + filaInfoExamen["ARCHIVO_EXTENSION"].ToString()));

        Response.ContentType = filaInfoExamen["ARCHIVO_TYPE"].ToString().Trim();

        Response.BinaryWrite((byte[])filaInfoExamen["ARCHIVO_EXAMEN"]);

        Response.End();
    }
    private void GuardarPaso2_ResultadosExamenes()
    {
        tools _tools = new tools();

        Int32 ID_REQUERIMIENTO = Convert.ToInt32(HiddenField_ID_REQUERIMIENTO.Value);
        Int32 ID_SOLICITUD = Convert.ToInt32(HiddenField_ID_SOLICITUD.Value);
        Decimal ID_EMPRESA = Convert.ToDecimal(HiddenField_ID_EMPRESA.Value);
        Decimal ID_OCUPACION = Convert.ToDecimal(HiddenField_ID_OCUPACION.Value);

        String FORMA_PAGO = DropDownList_forma_pago.SelectedValue;
        Decimal ID_ENTIDAD = 0;
        String TIPO_CUENTA = null;
        String NUM_CUENTA = null;
        if ((DropDownList_forma_pago.SelectedValue == "CONSIGNACIÓN BANCARIA") || (DropDownList_forma_pago.SelectedValue == "DISPERSION") || (DropDownList_forma_pago.SelectedValue == "ACH"))
        {
            ID_ENTIDAD = Convert.ToDecimal(DropDownList_entidad_bancaria.SelectedValue);
            TIPO_CUENTA = DropDownList_TIPO_CUENTAS.SelectedValue;

            if (CheckBox_TIENE_CUENTA.Checked == true)
            {
                NUM_CUENTA = TextBox_Numero_CuentaS.Text.Trim();
            }

            NUM_CUENTA = TextBox_Numero_CuentaS.Text;
        }

        ordenExamenes _ordenes = new ordenExamenes(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable tablaOrdenes = _ordenes.ObtenerConRegOrdenExamenPorSolicitud(ID_REQUERIMIENTO, ID_SOLICITUD);
        examenesEmpleado _REGISTRO = new examenesEmpleado(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        List<examenesEmpleado> listaExamenesActualizar = new List<examenesEmpleado>();

        for (int i = 0; i < GridView_EXAMENES_REALIZADOS.Rows.Count; i++)
        {
            DataRow filaInfoOrdenExamen = tablaOrdenes.Rows[i];

            Int32 registro = Convert.ToInt32(GridView_EXAMENES_REALIZADOS.DataKeys[i].Values["REGISTRO"]);
            Int32 orden = Convert.ToInt32(GridView_EXAMENES_REALIZADOS.DataKeys[i].Values["ID_ORDEN"]);
            Int32 producto = Convert.ToInt32(GridView_EXAMENES_REALIZADOS.DataKeys[i].Values["ID_PRODUCTO"]);
            CheckBox validar = GridView_EXAMENES_REALIZADOS.Rows[i].FindControl("CheckBox_EXAMENES_ENTREGADOS") as CheckBox;

            Int32 proveedor;
            DataTable tabla = _REGISTRO.ObtenerConRegExamenesEmpleadoPorRegistro(registro);
            DataRow fila = tabla.Rows[0];
            proveedor = Convert.ToInt32(fila["REGISTRO_PRODUCTOS_PROVEEDOR"]);

            if (filaInfoOrdenExamen["VALIDADO"].ToString().Trim() == "N")
            {
                if (validar.Checked == true)
                {
                    DateTime fecha = System.DateTime.Today;

                    TextBox autos = GridView_EXAMENES_REALIZADOS.Rows[i].FindControl("TextBox_Autos_Recomendacion") as TextBox;

                    FileUpload archivoCargado = GridView_EXAMENES_REALIZADOS.Rows[i].FindControl("FileUpload_ARCHIVO") as FileUpload;

                    Byte[] ARCHIVO_EXAMEN = null;
                    Int32 ARCHIVO_TAMANO = 0;
                    String ARCHIVO_EXTENSION = null;
                    String ARCHIVO_TYPE = null;
                    if (archivoCargado.HasFile == true)
                    {
                        using (BinaryReader reader = new BinaryReader(archivoCargado.PostedFile.InputStream))
                        {
                            ARCHIVO_EXAMEN = reader.ReadBytes(archivoCargado.PostedFile.ContentLength);
                            ARCHIVO_TAMANO = archivoCargado.PostedFile.ContentLength;
                            ARCHIVO_TYPE = archivoCargado.PostedFile.ContentType;
                            ARCHIVO_EXTENSION = _tools.obtenerExtensionArchivo(archivoCargado.PostedFile.FileName);
                        }
                    }

                    examenesEmpleado _ex = new examenesEmpleado();

                    _ex.AutoRecomendacion = autos.Text.Trim();
                    _ex.registro = registro;
                    _ex.IdOrden = orden;
                    _ex.ARCHIVO_EXAMEN = ARCHIVO_EXAMEN;
                    _ex.ARCHIVO_EXTENSION = ARCHIVO_EXTENSION;
                    _ex.ARCHIVO_TAMANO = ARCHIVO_TAMANO;
                    _ex.ARCHIVO_TYPE = ARCHIVO_TYPE;
                    _ex.Fecha = fecha;
                    _ex.IdExamen = producto;
                    _ex.IdLab = proveedor;
                    _ex.IdRequerimientos = ID_REQUERIMIENTO;
                    _ex.IdSolIngreso = ID_SOLICITUD;
                    _ex.RegistroAlmacen = registro;
                    _ex.Valida = true;

                    listaExamenesActualizar.Add(_ex);
                }
            }
        }

        examenesEmpleado _examenes = new examenesEmpleado(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        Boolean resultado = _examenes.actualizarExamenesYFormaPago(listaExamenesActualizar, ID_SOLICITUD, ID_ENTIDAD, NUM_CUENTA, FORMA_PAGO, TIPO_CUENTA);

        if (resultado == false)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, _examenes.MensajeError, Proceso.Error);
        }
        else
        {
            Cargar(ID_REQUERIMIENTO, ID_SOLICITUD, ID_EMPRESA, ID_OCUPACION);

            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "Los Resultados de los examenes y la configuración de forma de pago fue realizada correctamente.", Proceso.Correcto);
        }
    }
    private void GuardarPaso1_ConfiguracionExamenes()
    {
        Decimal ID_REQUERIMIENTO = Convert.ToDecimal(HiddenField_ID_REQUERIMIENTO.Value);
        Decimal ID_SOLICITUD = Convert.ToDecimal(HiddenField_ID_SOLICITUD.Value);
        Decimal ID_EMPRESA = Convert.ToDecimal(HiddenField_ID_EMPRESA.Value);
        Decimal ID_OCUPACION = Convert.ToDecimal(HiddenField_ID_OCUPACION.Value);

        String ID_CIUDAD_SELECCIONADA = null;
        Decimal ID_CENTRO_C_SELECCIONADO = 0;
        Decimal ID_SUB_C_SELECCIONADO = 0;
        if (HiddenField_ID_SUB_C_SELECCIONADO.Value != "0")
        {
            ID_SUB_C_SELECCIONADO = Convert.ToDecimal(HiddenField_ID_SUB_C_SELECCIONADO.Value);
        }
        else
        {
            if (HiddenField_ID_CENTRO_C_SELECCIONADO.Value != "0")
            {
                ID_CENTRO_C_SELECCIONADO = Convert.ToDecimal(HiddenField_ID_CENTRO_C_SELECCIONADO.Value);
            }
            else
            {
                ID_CIUDAD_SELECCIONADA = HiddenField_ID_CIUDAD_SELECCIONADA.Value;
            }
        }

        String FORMA_PAGO = DropDownList_forma_pago.SelectedValue;
        Decimal ID_ENTIDAD = 0;
        String TIPO_CUENTA = null;
        String NUM_CUENTA = null;
        Boolean TIENE_CUENTA = false;

        if ((DropDownList_forma_pago.SelectedValue == "CONSIGNACIÓN BANCARIA") || (DropDownList_forma_pago.SelectedValue == "DISPERSION") || (DropDownList_forma_pago.SelectedValue == "ACH"))
        {
            ID_ENTIDAD = Convert.ToDecimal(DropDownList_entidad_bancaria.SelectedValue);
            TIPO_CUENTA = DropDownList_TIPO_CUENTAS.SelectedValue;

            if (CheckBox_TIENE_CUENTA.Checked == true)
            {
                TIENE_CUENTA = true;
                NUM_CUENTA = TextBox_Numero_CuentaS.Text.Trim();
            }
        }

        examenesEmpleado _REGISTRO = new examenesEmpleado(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        List<examenesEmpleado> listaExamenes = new List<examenesEmpleado>();

        for (int i = 0; i < GridView_Examenes_Configurados.Rows.Count; i++)
        {
            DropDownList dropLab = GridView_Examenes_Configurados.Rows[i].FindControl("DropDownList_Proveedor") as DropDownList;

            Int32 lab = Convert.ToInt32(dropLab.SelectedValue.ToString());
            Int32 id_Examen = Convert.ToInt32(GridView_Examenes_Configurados.DataKeys[i].Values["ID_PRODUCTO"]);
            Decimal registro = _REGISTRO.ObtenerAlmRegProductosProveedorPorProductoProveedor(id_Examen, lab);
            DateTime fecha = System.DateTime.Today;

            examenesEmpleado ex = new examenesEmpleado(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
            ex.IdLab = lab;
            ex.IdExamen = id_Examen;
            ex.Fecha = fecha;
            ex.IdRequerimientos = Convert.ToInt32(ID_REQUERIMIENTO);
            ex.IdSolIngreso = Convert.ToInt32(ID_SOLICITUD);
            ex.RegistroAlmacen = Convert.ToInt32(registro);
            ex.Valida = false;
            listaExamenes.Add(ex);
        }

        examenesEmpleado ex1 = new examenesEmpleado(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());

        Boolean resultado = ex1.adicionarOrdenesExamenes(listaExamenes, ID_SOLICITUD, ID_ENTIDAD, NUM_CUENTA, FORMA_PAGO, TIPO_CUENTA, ID_REQUERIMIENTO, ID_CIUDAD_SELECCIONADA, ID_CENTRO_C_SELECCIONADO, ID_SUB_C_SELECCIONADO, 0, ID_EMPRESA, TIENE_CUENTA);

        if (resultado == false)
        {
            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, ex1.MensajeError, Proceso.Error);
        }
        else
        {
            Cargar(ID_REQUERIMIENTO, ID_SOLICITUD, ID_EMPRESA, ID_OCUPACION);

            Informar(Panel_FONDO_MENSAJE, Image_MENSAJE_POPUP, Panel_MENSAJES, Label_MENSAJE, "Las ordenes de Examenes y la configuración fue realizada correctamente.<br>A continuación imprima la orden de examenes y/o la carta de apertura de cuenta.", Proceso.Correcto);
        }
    }
    private void Cargar_DropDownList_Proveedor(Decimal ID_PRODUCTO, String ID_CIUDAD, DropDownList drop)
    {
        drop.Items.Clear();

        drop.Items.Add(new System.Web.UI.WebControls.ListItem("Seleccione...", ""));

        examenesEmpleado _proveedores = new examenesEmpleado(Session["idEmpresa"].ToString(), Session["USU_LOG"].ToString());
        DataTable listaProveedores = _proveedores.ObtenerAlmRegProductosProveedorPorProductoRegional(Convert.ToInt32(ID_PRODUCTO), ID_CIUDAD);

        foreach (DataRow proveedor in listaProveedores.Rows)
        {
            if (DBNull.Value.Equals(proveedor["UBI_SECTOR"]) == false)
            {
                drop.Items.Add(new System.Web.UI.WebControls.ListItem(proveedor["NOM_PROVEEDOR"].ToString().Trim() + " (" + proveedor["NOMBRE_CIUDAD"].ToString().Trim() + " - " + proveedor["UBI_SECTOR"].ToString().Trim() + ")", proveedor["REGISTRO"].ToString().Trim()));
            }
            else
            {
                drop.Items.Add(new System.Web.UI.WebControls.ListItem(proveedor["NOM_PROVEEDOR"].ToString().Trim() + " (" + proveedor["NOMBRE_CIUDAD"].ToString().Trim() + ")", proveedor["REGISTRO"].ToString().Trim()));
            }
        }

        drop.DataBind();
    }