Esempio n. 1
0
        private void timerEjecutaProcesos_Tick(object sender, EventArgs e)
        {
            string   codigo = "";
            int      valorUnico = 0, tareaId = 0;
            DateTime feActual = DateTime.Now;

            try
            {
                if (chkAutoRefresh.Checked)
                {
                    dtpFeDesde.Value = feActual.Date;
                    dtpFeHasta.Value = feActual.Date;
                }

                //Agregamos la tareas a la cola de ejecusion
                addTareasACola();

                //Buscamos las tareas pendientes
                db.LimpiarFiltros();
                db.AddFiltroNoIgualA("Codigo", "PI");
                db.AddFiltroIgualA("Estatus_Id", "0");
                db.AddFiltroIsNull("Fecha_Completado");
                db.AddFiltroIsNull("Fecha_Fin");
                db.AddFiltroOrderBY("Unico");
                DTTareasPendientes = db.GetAll("TSISTEMA_PROCESOS_LOG", -1, db.Filtros);

                stLabelFecha.Text = "FECHA: " + feActual.ToLongDateString().ToUpper() + "     " + feActual.ToLongTimeString().ToUpper();

                foreach (DataRow item in DTTareasPendientes.Rows)
                {
                    valorUnico = db.GetAsInt("Unico", item);
                    tareaId    = db.GetAsInt("Tarea_Id", item);
                    codigo     = db.GetAsString("Codigo", item).ToUpper().Trim();
                    Proceso myProc = new Proceso();
                    myProc.fecha           = db.GetAsDate("Fecha", item);
                    myProc.identificadorId = db.GetAsInt("Identificador_Id", item);
                    myProc.codigo          = codigo;
                    myProc.tareaId         = tareaId;
                    myProc.nombre          = db.GetAsString("Descripcion", item).ToUpper().Trim();
                    myProc.nombreSP        = db.GetAsString("NombreSP", item).Trim();

                    //Marcamos la tarea como en proceso
                    myProc.setEstatus(1, valorUnico);

                    //if (codigo == "COPER") myProc.esReinicioOnError = true;

                    if (codigo == "BK")
                    {
                        myProc.t = new Thread(myProc.realizarBackup);
                    }
                    if (codigo == "COPER")
                    {
                        myProc.t = new Thread(myProc.realizarCierreOPE);
                    }
                    if (codigo == "DEMORA")
                    {
                        myProc.t = new Thread(myProc.generarDemora);
                    }
                    if (codigo == "CONTA")
                    {
                        myProc.t = new Thread(myProc.generarContabilidad);
                    }
                    if (codigo == "LIMPIAR_LOG_DB")
                    {
                        myProc.t = new Thread(myProc.limpiarLogDB);
                    }
                    if (codigo == "DFOLDER_BK")
                    {
                        myProc.t = new Thread(myProc.borrarFilesBK);
                    }
                    if (codigo == "CLS-TBL-TEMP")
                    {
                        myProc.t = new Thread(myProc.limpiarTablasTemporales);
                    }
                    if (codigo == "PGO-GTOS-FIJOS")
                    {
                        myProc.t = new Thread(myProc.GenerarPagoGastosFijos);
                    }
                    if (codigo == "AF-DEPRE")
                    {
                        myProc.t = new Thread(myProc.GenerarAFDepreciacion);
                    }
                    if (codigo == "RB-DB-INDICES")
                    {
                        myProc.t = new Thread(myProc.RebuildDBIndices);
                    }
                    if (codigo == "SP" && myProc.nombreSP != "")
                    {
                        myProc.t = new Thread(myProc.EjecutaSP);
                    }

                    if (myProc.t != null)
                    {
                        myProc.t.Start();
                        procesosList.Add(myProc);
                    }
                }

                for (int i = 0; i < procesosList.Count; i++)
                {
                    if (procesosList[i].estatusId != 0 && procesosList[i].estatusId != 1)
                    {
                        procesosList.Remove(procesosList[i]);
                    }
                }

                lblCantidadActivos.Text = "CANTIDAD PROCESOS ACTIVOS: " + procesosList.Count.ToString("N0");
                ptbProcess.Visible      = procesosList.Count > 0;


                if (chkAutoRefresh.Checked)
                {
                    showHistorial();
                }
            }
            catch (Exception ex)
            {
                mensajeError = ex.Message;
            }
        }