protected void Page_Load(object sender, EventArgs e)
        {
            String vToken = Request.QueryString["id"];

            if (vToken != null)
            {
                try{
                    String    vQuery = "[RSP_Documentacion] 12,'" + vToken + "'";
                    DataTable vDatos = vConexion.obtenerDataTable(vQuery);
                    if (vDatos.Rows.Count > 0)
                    {
                        tokenClass vTokenClass = new tokenClass();
                        CryptoToken.CryptoToken vTokenCrypto = new CryptoToken.CryptoToken();
                        vTokenClass = JsonConvert.DeserializeObject <tokenClass>(vTokenCrypto.Decrypt(vToken, ConfigurationManager.AppSettings["TOKEN_DOC"].ToString()));
                        Session["DOCUMENTOS_ARCHIVO_ID"] = Request.QueryString["d"];

                        //vTokenClass.usuario

                        Session["AUTHCLASS"] = vDatos;
                        Session["USUARIO"]   = vDatos.Rows[0]["idEmpleado"].ToString();
                        Session["AUTH"]      = true;
                        Session["CODIGOSAP"] = vDatos.Rows[0]["codigoSAP"].ToString();
                        vQuery = "[RSP_Documentacion] 13,'" + vToken + "'";
                        vConexion.ejecutarSql(vQuery);
                        Response.Redirect("archivo.aspx", false);
                    }
                    else
                    {
                        throw new Exception();
                    }
                }catch (Exception ex) {
                    Session["AUTH"] = false;
                    Response.Redirect("/login.aspx");
                }
            }

            if (!Page.IsPostBack)
            {
                if (Convert.ToBoolean(Session["AUTH"]))
                {
                    string vId    = Session["DOCUMENTOS_ARCHIVO_ID"].ToString();
                    String vQuery = "[RSP_Documentacion] 5" +
                                    "," + Session["DOCUMENTOS_ARCHIVO_ID"].ToString();
                    DataTable vData = vConexion.obtenerDataTable(vQuery);
                    LbTitulo.Text = vData.Rows[0]["nombre"].ToString();

                    DataTable vDatos = (DataTable)Session["AUTHCLASS"];
                    cargarDatos(vId);

                    vQuery = "[RSP_Documentacion] 10" +
                             ",'" + Session["USUARIO"].ToString() + "'" +
                             ",null," + Session["DOCUMENTOS_ARCHIVO_ID"].ToString();
                    vData = vConexion.obtenerDataTable(vQuery);
                    if (vData.Rows.Count > 0)
                    {
                        LbMensajeFirma.Text = "Documento firmado!";
                        BtnLeido.Enabled    = false;
                        BtnLeido.CssClass   = "btn btn-dark";
                    }

                    //Response.Redirect("tipoDocumentos.aspx");
                }
            }
        }
Example #2
0
        private void ValidacionesPermisos(String vEmpleado, DateTime vFechaInicio, DateTime vFechaRegreso, String vTipo, TimeSpan tsHorario)
        {
            Decimal vDiasDisponibles = Convert.ToDecimal((LbNumeroVaciones.Text == String.Empty ? "0" : LbNumeroVaciones.Text));

            //GENERALES
            if (vEmpleado.Equals("0"))
            {
                throw new Exception("Seleccione un empleado valido para el permiso.");
            }
            if (DDLJefe.SelectedValue.Equals("0"))
            {
                throw new Exception("Seleccione un jefe valido para el permiso.");
            }
            if (vTipo.Equals("0"))
            {
                throw new Exception("Seleccione un tipo de permiso valido");
            }
            if (TxFechaInicio.Text.Equals(""))
            {
                throw new Exception("Ingrese una fecha de inicio valida");
            }
            if (TxFechaRegreso.Text.Equals(""))
            {
                throw new Exception("Ingrese una fecha de regreso valida");
            }
            if (vFechaRegreso < vFechaInicio)
            {
                throw new Exception("Las fechas ingresadas son incorrectas, el regreso es menor que el inicio");
            }

            Decimal vDiasHoras = Calculo(null, -1);

            //ESPECIFICAS
            if (vTipo != "1002" || vTipo != "1004" || vTipo != "1012" || vTipo != "1013" || vTipo != "1018" || vTipo != "1022")
            {
                if ((tsHorario.Days >= 1 && tsHorario.Hours > 0) || (tsHorario.Days >= 1 && tsHorario.Minutes > 0))
                {
                    throw new Exception("Debe solicitar permisos por día y hora individualmente");
                }

                if (vFechaInicio.Day != vFechaRegreso.Day)
                {
                    if (vFechaInicio.Hour != 0 || vFechaInicio.Minute != 0 || vFechaRegreso.Hour != 0 || vFechaRegreso.Minute != 0)
                    {
                        throw new Exception("Debe solicitar permisos por día y hora individualmente");
                    }
                }
            }

            if (vTipo == "1004" || vTipo == "1007")
            {
                if (vDiasHoras > vDiasDisponibles)
                {
                    throw new Exception("Usted no cuenta con suficientes vacaciones disponibles.");
                }
                if (vDiasDisponibles <= 0)
                {
                    throw new Exception("Usted no cuenta con vacaciones disponibles.");
                }

                String    vQuerySIM   = "RSP_ObtenerGenerales 15, " + vEmpleado;
                DataTable vDatosSIM   = vConexion.obtenerDataTable(vQuerySIM);
                Decimal   vDiasHoras2 = 0;

                if (vDatosSIM.Rows.Count > 0)
                {
                    for (int i = 0; i < vDatosSIM.Rows.Count; i++)
                    {
                        vDiasHoras2 += Calculo(vDatosSIM, i);
                    }
                }

                Decimal vDias = Convert.ToDecimal(LbNumeroVaciones.Text) - vDiasHoras2 - vDiasHoras;
                if (vDias < 0)
                {
                    throw new Exception("La cantidad de días solicitados sobrepasa los disponibles. " +
                                        "Para consultar los permisos pendientes comuníquese con Recursos Humanos.");
                }
            }

            if ((vTipo == "1001" || vTipo == "1010" || vTipo == "1018" || vTipo == "1026") && !Convert.ToBoolean(Session["PERMISOSCGS"]))
            {
                throw new Exception("Debe solicitar acceso a RRHH para ingresar este permiso.");
            }

            if (vTipo == "1006")
            {
                String vAnual = DateTime.Now.Year.ToString();
                String vMes   = DateTime.Now.Month.ToString().Length > 1 ? DateTime.Now.Month.ToString() : "0" + DateTime.Now.Month.ToString();

                String    vQuery = "RSP_ValidacionesPermisos 2," + vEmpleado + ",'" + vAnual + "',0";
                DataTable vDatos = vConexion.obtenerDataTable(vQuery);

                if (Convert.ToInt32(vDatos.Rows[0][0].ToString()) > 15)
                {
                    throw new Exception("Ya ha realizado los 15 permisos de calamidad domestica este año.");
                }

                vQuery = "RSP_ValidacionesPermisos 3," + vEmpleado + ",'" + vMes + "',0";
                vDatos = vConexion.obtenerDataTable(vQuery);

                if (Convert.ToInt32(vDatos.Rows[0][0].ToString()) > 2)
                {
                    throw new Exception("Ya ha realizado los 2 permisos de calamidad domestica este mes.");
                }
            }

            if (tsHorario.Hours < 4 && tsHorario.Days < 1 && vFechaInicio != vFechaRegreso && (vTipo == "1001" || vTipo == "1002" || vTipo == "1006" || vTipo == "1007" || vTipo == "1008" || vTipo == "1010" || vTipo == "1018" || vTipo == "1019" || vTipo == "1020" || vTipo == "1021"))
            {
                throw new Exception("No se pueden agregar permisos menores a 4 horas.");
            }

            // VALIDACION COMPENSATORIO
            if (vTipo == "1011")
            {
                int days = Convert.ToInt32(vDiasHoras);
                days = days != 0 ? days * 8 : days;

                Decimal vTotal = days + tsHorario.Hours + (Convert.ToDecimal(tsHorario.Minutes) / 60);
                if (Convert.ToDecimal(vTotal) > Convert.ToDecimal(LbCompensatorio.Text))
                {
                    throw new Exception("No tiene suficientes horas de tiempo compensatorio.");
                }
                Session["HORAS_COMPENSATORIO"] = vTotal;
            }

            //EMERGENCIAS
            if (CbEmergencias.Checked)
            {
                if (vTipo == "1004" || vTipo == "1007" || vTipo == "1011")
                {
                    if (TxToken.Text != "" || TxToken.Text != string.Empty)
                    {
                        CryptoToken.CryptoToken vDec = new CryptoToken.CryptoToken();
                        String    vWord              = ConfigurationManager.AppSettings["TokenWord"].ToString();
                        String    vPass              = ConfigurationManager.AppSettings["TokenPass"].ToString();
                        String    vTok               = vDec.Decrypt(TxToken.Text, vPass);
                        String    vQuery2            = "RSP_ObtenerGenerales 17," + vEmpleado;
                        DataTable vDatosVerificacion = vConexion.obtenerDataTable(vQuery2);
                        if (vDatosVerificacion.Rows.Count > 0)
                        {
                            Session["IDTOKEN"] = vDatosVerificacion.Rows[0]["id"].ToString();
                            DateTime vFecVence = Convert.ToDateTime(vDatosVerificacion.Rows[0]["fechaVencimiento"].ToString());
                            if (vFecVence > DateTime.Now)
                            {
                                if (vTok == vWord && TxToken.Text == vDatosVerificacion.Rows[0]["idToken"].ToString())
                                {
                                    TimeSpan ts = Convert.ToDateTime(TxFechaInicio.Text) - DateTime.Now;
                                    if (ts.Days < -15)
                                    {
                                        throw new Exception("No se pueden agregar permisos por incumplimiento de politica (15 dias maximo para ingresar permisos pasados)");
                                    }
                                }
                                else
                                {
                                    throw new Exception("El Token ingresado no es válido.");
                                }
                            }
                            else
                            {
                                throw new Exception("Token vencido.");
                            }
                        }
                        else
                        {
                            throw new Exception("No tiene token asignado, comuníquese con Recursos Humanos para generar uno nuevo.");
                        }
                    }
                    else
                    {
                        throw new Exception("Debe ingresar un token. Solicítelo a Recursos Humanos");
                    }
                }
            }
            else
            {
                String vFormato = "MM/dd/yyyy HH:mm:ss"; //"dd/MM/yyyy HH:mm:ss"
                String vIni     = Convert.ToDateTime(vFechaInicio).ToString(vFormato);
                String vFin     = Convert.ToDateTime(vFechaRegreso).ToString(vFormato);

                String    vQuery             = "RSP_ValidacionesPermisos 1," + vEmpleado + ",'" + vIni + "','" + vFin + "'";
                DataTable vDatosVerificacion = vConexion.obtenerDataTable(vQuery);

                if (vDatosVerificacion.Rows.Count > 0)
                {
                    if (vDatosVerificacion.Rows[0][0].ToString().Equals("1"))
                    {
                        throw new Exception("Ya existe un permiso en el tiempo seleccionado");
                    }
                }

                if (Convert.ToInt32(vTipo) < 2000 && vTipo != "1003" && vTipo != "1005" && vTipo != "1011" && vTipo != "1023" && vTipo != "1024" && vTipo != "1025")
                {
                    TimeSpan ts = Convert.ToDateTime(TxFechaInicio.Text) - DateTime.Now;
                    if (ts.Days < -15)
                    {
                        throw new Exception("No se pueden agregar permisos por incumplimiento de politica (15 dias maximo para ingresar permisos pasados)");
                    }
                    if (ts.Days < 2)
                    {
                        throw new Exception("No se pueden agregar permisos por incumplimiento de politica (48 Horas antes)");
                    }
                    if (ts.Days > 15)
                    {
                        throw new Exception("No se pueden agregar permisos por incumplimiento de politica (15 dias maximo de anticipación)");
                    }
                }
            }
        }