예제 #1
0
        /// <summary>
        /// Establece las cosas a trabajar
        /// </summary>
        protected override void OnStart(string[] args)
        {
            eventLog1.WriteEntry("ServiciosSiapSK Service OnStart");
            try
            {
                var configuracionAccionesPL = new ConfiguracionAccionesPL();
                tareas = configuracionAccionesPL.ObtenerTodos();
            }
            catch (Exception ex)
            {
                var srvcController = new ServiceController(ServiceName);
                eventLog1.WriteEntry("ServiciosSiapSK OnStart Exception: " + ex);
                srvcController.Stop();
            }

            //Tiempo de ejecucion intervalo para la ejecucion de tareas
            timer.Interval = 60000; //TODO: Obtener de la base de datos de parametros
            timer.Elapsed += new ElapsedEventHandler(TimeElapsed);
            timer.Start();

            //Tiempo de ejecucion intervalo para la ejecucion de tareas
            timerUpdate.Interval = 100000; //TODO: Obtener de la base de datos de parametros
            timerUpdate.Elapsed += new ElapsedEventHandler(TimeUpdateElapsed);
            timerUpdate.Start();
        }
예제 #2
0
 /// <summary>
 /// Actualizar ejecucion de tarea
 /// </summary>
 /// <param name="tarea"></param>
 private void UpdateTarea(ConfiguracionAccionesInfo tarea)
 {
     try
     {
         var pl = new ConfiguracionAccionesPL();
         pl.ActualizarEjecucionTarea(tarea);
     }
     catch (Exception ex)
     {
         eventLog1.WriteEntry("ServiciosSiapSK UpdateTarea Exception: " + ex);
     }
 }
예제 #3
0
 /// <summary>
 /// Actualiza la base de datos
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 private void TimeUpdateElapsed(object sender, ElapsedEventArgs args)
 {
     try
     {
         var configuracionAccionesPL = new ConfiguracionAccionesPL();
         tareas = configuracionAccionesPL.ObtenerTodos();
     }
     catch (Exception ex)
     {
         eventLog1.WriteEntry("ServiciosSiapSK TimeUpdateElapsed Exception: " + ex);
     }
 }
예제 #4
0
 /// <summary>
 /// Actualiza fecha de ejecucion
 /// </summary>
 /// <param name="tarea"></param>
 /// <returns></returns>
 private void ActualizarFechaEjecucion(ConfiguracionAccionesInfo tarea)
 {
     try
     {
         var fechaEjecucion = DateTime.Now;
         tarea.FechaEjecucion = fechaEjecucion.AddHours(1);
         var pl = new ConfiguracionAccionesPL();
         pl.ActualizarFechaEjecucion(tarea);
     }
     catch (Exception ex)
     {
         eventLog1.WriteEntry("ServiciosSiapSK UpdateTareaFechaEjecucion Exception: " + ex);
     }
 }
예제 #5
0
        /// <summary>
        /// Timer handler
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        void TimeElapsed(object sender, ElapsedEventArgs args)
        {
            var configuracionPL = new ConfiguracionAccionesPL();

            tareas = configuracionPL.ObtenerTodos();

            foreach (var tarea in tareas)
            {
                DateTime  currTime = DateTime.Now;
                DayOfWeek day      = currTime.DayOfWeek;
                DateTime  runTime  = tarea.FechaEjecucion;

                //Para saber si ya se ejecuto en el mismo dia
                DateTime ultimafecha = new DateTime(tarea.FechaUltimaEjecucion.Year, tarea.FechaUltimaEjecucion.Month, tarea.FechaUltimaEjecucion.Day);

                if ((tarea.Repetir && ultimafecha.Date < currTime.Date && ((currTime.Hour > runTime.Hour) || (currTime.Hour == runTime.Hour && currTime.Minute >= runTime.Minute))) ||
                    (!tarea.Repetir && runTime.Date > ultimafecha.Date) && tarea.Codigo != AccionesSIAPEnum.SerAlerta.ToString())
                {
                    bool ejecutar = false;

                    if (tarea.Lunes && day == DayOfWeek.Monday)
                    {
                        ejecutar = true;
                    }
                    else if (tarea.Martes && day == DayOfWeek.Tuesday)
                    {
                        ejecutar = true;
                    }
                    else if (tarea.Miercoles && day == DayOfWeek.Wednesday)
                    {
                        ejecutar = true;
                    }
                    else if (tarea.Jueves && day == DayOfWeek.Thursday)
                    {
                        ejecutar = true;
                    }
                    else if (tarea.Viernes && day == DayOfWeek.Friday)
                    {
                        ejecutar = true;
                    }
                    else if (tarea.Sabado && day == DayOfWeek.Saturday)
                    {
                        ejecutar = true;
                    }
                    else if (tarea.Domingo && day == DayOfWeek.Sunday)
                    {
                        ejecutar = true;
                    }

                    if (ejecutar)
                    {
                        eventLog1.WriteEntry("ServiciosSiapSK AppLauncher Ejecutar tarea.");
                        var launcher = new AppLauncher(tarea);
                        new Thread(new ThreadStart(launcher.RunApp)).Start();

                        tarea.FechaUltimaEjecucion = DateTime.Now;
                        UpdateTarea(tarea);
                    }
                }
                if (tarea.Repetir && tarea.Codigo == AccionesSIAPEnum.SerAlerta.ToString() &&
                    (((currTime.Hour > runTime.Hour) || (currTime.Hour == runTime.Hour && currTime.Minute >= runTime.Minute)) || currTime.Date > runTime.Date || currTime >= runTime.AddHours(1)))
                {
                    bool ejecutar = false;

                    if (tarea.Lunes && day == DayOfWeek.Monday)
                    {
                        ejecutar = true;
                    }
                    else if (tarea.Martes && day == DayOfWeek.Tuesday)
                    {
                        ejecutar = true;
                    }
                    else if (tarea.Miercoles && day == DayOfWeek.Wednesday)
                    {
                        ejecutar = true;
                    }
                    else if (tarea.Jueves && day == DayOfWeek.Thursday)
                    {
                        ejecutar = true;
                    }
                    else if (tarea.Viernes && day == DayOfWeek.Friday)
                    {
                        ejecutar = true;
                    }
                    else if (tarea.Sabado && day == DayOfWeek.Saturday)
                    {
                        ejecutar = true;
                    }
                    else if (tarea.Domingo && day == DayOfWeek.Sunday)
                    {
                        ejecutar = true;
                    }

                    if (ejecutar)
                    {
                        ActualizarFechaEjecucion(tarea);
                        eventLog1.WriteEntry("ServiciosSiapSK AppLauncher Ejecutar tarea.");
                        var launcher = new AppLauncher(tarea);
                        new Thread(new ThreadStart(launcher.RunApp)).Start();
                        tarea.FechaUltimaEjecucion = DateTime.Now;
                        UpdateTarea(tarea);
                    }
                }
            }
        }