Exemplo n.º 1
0
        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;
            }
        }