void addTareasACola() { DateTime feActual = DateTime.Now; int hh = 0, mm = 0, ss = 00, conteo = 0, tareaId = 0; int cantSgdoRepite = 0, cantSgdoTranscurrido = 0, cantSegundosEnCola = 0; int diaActual = 0, diaIni = 0, diaFin = 0; bool esEjecutado = false; string SSQL = ""; string sHora = "00:00:00"; string codigo = "", nombre = ""; Proceso myProc = new Proceso(); DataTable DTData = null; int valorUnico = 0; DateTime feUltEjecutado = DateTime.Now; bool onlyOnce = true; try { hh = feActual.Hour; mm = feActual.Minute; ss = feActual.Second; diaActual = feActual.Day; sHora = hh.ToString().PadLeft(2, '0') + ":"; sHora += mm.ToString().PadLeft(2, '0') + ":"; sHora += ss.ToString().PadLeft(2, '0'); //Buscamos la fecha de trabajo para agregar el cierre automatico si la fecha actual es mayor a fecha trabajo db.GetFechasOficina(); if (db.DateToInt(feActual) > db.DateToInt(db.FECHA_TRABAJO)) { SSQL = "SELECT COUNT(*) as Conteo FROM TSISTEMA_PROCESOS_LOG WHERE Codigo = 'COPER' and Estatus_Id >= 0 AND Cast(Fecha as Date) = '" + db.DateToInt(db.FECHA_TRABAJO).ToString() + "' "; DTData = db.GetSQL(SSQL); conteo = db.GetAsInt("Conteo", DTData.Rows[0]); if (conteo <= 0) { myProc.addProceso("COPER", "CIERRE OPERACIONES"); } } SSQL = "SELECT * FROM VSISTEMA_PROCESOS_SCHEDULE WHERE EsActivo = 1 And Fecha_Ult_Cola IS NULL"; SSQL += " And '" + sHora + "' between Hora_Inicio and Hora_Fin "; //Filtramos por dia de la semana switch (feActual.DayOfWeek) { case DayOfWeek.Sunday: SSQL += " And EsDomingo = 1 "; break; case DayOfWeek.Monday: SSQL += " And EsLunes = 1 "; break; case DayOfWeek.Tuesday: SSQL += " And EsMartes = 1 "; break; case DayOfWeek.Wednesday: SSQL += " And EsMiercoles = 1 "; break; case DayOfWeek.Thursday: SSQL += " And EsJueves = 1 "; break; case DayOfWeek.Friday: SSQL += " And EsViernes = 1 "; break; case DayOfWeek.Saturday: SSQL += " And EsSabado = 1 "; break; default: break; } //Buscamos la data y la insertamos en cola DTData = db.GetSQL(SSQL); foreach (DataRow item in DTData.Rows) { valorUnico = db.GetAsInt("Unico", item); tareaId = db.GetAsInt("Tarea_Id", item); cantSgdoRepite = db.GetAsInt("CantSegundoRepite", item); cantSgdoTranscurrido = db.GetAsInt("segundosTrascurridos", item); cantSegundosEnCola = db.GetAsInt("CantSegundosEnCola", item); feUltEjecutado = db.GetAsDate("Fecha_Ultima_Ejecusion", item, true); onlyOnce = db.GetAsBoolean("onlyOnce", item); esEjecutado = db.GetAsBoolean("EsEjecutado", item); diaIni = db.GetAsInt("Dia_Inicio", item); diaFin = db.GetAsInt("Dia_Fin", item); if (onlyOnce && db.DateToInt(feUltEjecutado) >= db.DateToInt(feActual)) { continue; } if (cantSgdoRepite > 0 && cantSgdoTranscurrido < cantSgdoRepite && esEjecutado) { continue; } if (diaFin > 0 && diaIni > 0) { if (!(diaActual >= diaIni && diaActual <= diaFin)) { continue; } } //Actulizamos con la fecha en que se coloco en cola SSQL = "UPDATE TSISTEMA_PROCESOS_SCHEDULE SET Fecha_Ult_Cola = GetDate() WHERE Unico = " + valorUnico.ToString(); db.EjecutarSQL(SSQL); codigo = db.GetAsString("codigo", item); nombre = db.GetAsString("Descripcion", item); myProc.addProceso(codigo, nombre, tareaId); } } catch (Exception ex) { mensajeError = ex.Message; } }