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"); } } }
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)"); } } } }