Esempio n. 1
0
        public string ActualizarAlertaMovilizacion(MovilizacionContact contacto, string mensaje)
        {
            var db = new edayRoomEntities();
            var user = db.users.Single(u => u.username == User.Identity.Name);
            MovilizacionAlerta alerta = (from a in db.MovilizacionAlertas
                                         where a.id == contacto.BlockingAlert.Id
                                         select a).Single();

            if (!string.IsNullOrWhiteSpace(mensaje))
            {
                var alertMessage = new MovilizacionAlertaMessage { fecha = DateTime.Now, mensaje = mensaje, id_usuario = user.id};
                alerta.MovilizacionAlertaMessages.Add(alertMessage);
            }

            db.SaveChanges();
            IQueryable<MovilizacionContactAlertMessage> mensajesAlerta = (from a in alerta.MovilizacionAlertaMessages
                                                                          orderby a.fecha descending
                                                                          select new MovilizacionContactAlertMessage
                                                                                     {
                                                                                         Id = a.id,
                                                                                         Fecha = a.fecha,
                                                                                         Message = a.mensaje
                                                                                     }).AsQueryable();
            return new JavaScriptSerializer().Serialize("");
        }
Esempio n. 2
0
        public ActionResult AdminCentro(int idCentro)
        {
            var db = new edayRoomEntities();
            var centro = (from c in db.Centroes
                          where c.id == idCentro
                          select c).Single();
            var movilizacion = from p in centro.Movilizacions
                               orderby p.fecha descending
                               select p;

            MovilizacionTimeline timelineMovilizacion = (from tp in db.MovilizacionTimelines
                                                           where tp.activa &&
                                                                 tp.id_centro== idCentro
                                                           select tp).Single();

            Movilizacion lastMovilizacion= movilizacion.FirstOrDefault();

            Debug.Assert(lastMovilizacion != null, "lastMovilizacion != null");
            var contact = new MovilizacionContact
            {
                Centro = centro.Nombre,
                IdCentro= centro.id,
                IdTestigo = centro.Movilizadors.First(t => t.activo).id,
                NombreTestigo = centro.Movilizadors.First(t => t.activo).nombre,
                Numero = centro.Movilizadors.First(t => t.activo).numero,
                Votantes = centro.votantes??0,
                LastUpdate = lastMovilizacion.fecha,
                LastValue = lastMovilizacion.conteo,
                LastMovilizacionId = lastMovilizacion.id,
                MovilizacionTimelineId = timelineMovilizacion.id
            };
            ViewData["centro"] = centro;
            ViewData["movilizacion"] = movilizacion.ToList();
            ViewData["contact"] = contact;
            return View("AdminCentro");
        }
Esempio n. 3
0
        public string AlertaMovilizacion(MovilizacionContact contacto, int valor, string mensaje)
        {
            var db = new edayRoomEntities();
            var centro = db.Centroes.Single(c => c.id == contacto.IdCentro);
            var user = db.users.Single(u => u.username == User.Identity.Name);
            #region Registro la alerta

            var alerta = new MovilizacionAlerta
                             {
                                 activa = true,
                                 fecha = DateTime.Now,
                                 id_centro = contacto.IdCentro,
                                 id_movilizador = contacto.IdTestigo,
                                 id_alerta = valor,
                                 id_usuario = user.id
                             };
            db.MovilizacionAlertas.AddObject(alerta);

            var messages = new List<MovilizacionAlertaMessage>();
            if (!string.IsNullOrWhiteSpace(mensaje))
            {
                var alertMessage = new MovilizacionAlertaMessage { fecha = DateTime.Now, mensaje = mensaje, id_usuario = user.id };
                alerta.MovilizacionAlertaMessages.Add(alertMessage);
                messages.Add(alertMessage);
            }

            #endregion

            #region  Retraso de Timeline

            Alerta objetoAlerta = db.Alertas.Single(a => a.id == valor);
            if (objetoAlerta.blocking){
                centro.alertBlocked = true;
                centro.blockingAlertId = objetoAlerta.id;
            }
            if (objetoAlerta.regresivo)
            {

                //MovilizacionTimeline oldTimeline =
                //    (from pt in db.MovilizacionTimelines where
                //         pt.id == contacto.MovilizacionTimelineId select pt).
                //        Single();

                //oldTimeline.activa = false;

                //Cancelo todos los timelines activos y resolvemos este peo
                var oldTimelines =
                    (from pt in db.MovilizacionTimelines
                     where
                         pt.activa && pt.id_centro == contacto.IdCentro
                         //pt.id == contacto.MovilizacionTimelineId
                     select pt);
                foreach (var oldTimeline in oldTimelines)
                {
                    oldTimeline.activa = false;
                }

                DateTime newDate = DateTime.Now.AddMinutes(objetoAlerta.tiempo);
                var newTimeline = new MovilizacionTimeline { id_centro = contacto.IdCentro, fecha = newDate, activa = true };
                db.MovilizacionTimelines.AddObject(newTimeline);
            }

            #endregion

            db.SaveChanges();

            // VERIFICAR SI HAY QUE HACER TRIGGER DE ALGUNA ALERTA
            IQueryable<MovilizacionAlerta> existingAlerts = from a in db.MovilizacionAlertas
                                                            where a.id_centro == contacto.IdCentro &&
                                                                  a.id_alerta == valor && a.activa
                                                            select a;
            var alertCount = existingAlerts.Count();
            var maxRepeats = existingAlerts.First().Alerta.maxRepeats ?? 0;
            if (maxRepeats != 0)
            {
                if (alertCount == maxRepeats)
                {
                    //LLEGUE AL LIMITE, hago el trigger de la alerta
                    var newAlerta = existingAlerts.First().Alerta.AlertaAsociada;

                    var alertaAuto = new MovilizacionAlerta
                                         {
                                             activa = true,
                                             fecha = DateTime.Now,
                                             id_centro = contacto.IdCentro,
                                             id_movilizador = contacto.IdTestigo,
                                             id_alerta = newAlerta.id,
                                             id_usuario = user.id
                                         };
                    db.MovilizacionAlertas.AddObject(alertaAuto);

                    if (newAlerta.blocking){
                        centro.alertBlocked = true;
                        centro.blockingAlertId = newAlerta.id;
                    }

                    var alertMessage = new MovilizacionAlertaMessage { fecha = DateTime.Now, mensaje = "Alerta generada por sistema", id_usuario=user.id };
                    alertaAuto.MovilizacionAlertaMessages.Add(alertMessage);
                }
            }
            db.SaveChanges();
            return new JavaScriptSerializer().Serialize("");
        }
Esempio n. 4
0
        public string UpdateMovilizacion(MovilizacionContact contacto, int valor, int cola = 0)
        {
            var db = new edayRoomEntities();
            var user = db.users.Single(u => u.username == User.Identity.Name);
            //Reseteo los timelines activos
            var oldTimelines =
                    (from pt in db.MovilizacionTimelines
                     where
                         pt.activa && pt.id_centro == contacto.IdCentro
                     select pt);
            foreach (var oldTimeline in oldTimelines)
            {
                oldTimeline.activa = false;
            }

            var newDate = contacto.QuickCountActive ? DateTime.Now.AddMinutes(45) : DateTime.Now.AddMinutes(60);

            //Actualizo los timelines
            var newTimeline = new MovilizacionTimeline { id_centro = contacto.IdCentro, fecha = newDate, activa = true };
            db.MovilizacionTimelines.AddObject(newTimeline);
            var newMovilizacion = new Movilizacion
                                      {
                                          fecha = DateTime.Now,
                                          hora = DateTime.Now.Hour,
                                          min10 = DateTime.Now.Minute / 10,
                                          min30 = DateTime.Now.Minute / 30,

                                          conteo = valor,
                                          id_centro = contacto.IdCentro,
                                          id_movilizador = contacto.IdTestigo,
                                          active = true,
                                          id_parent = contacto.LastMovilizacionId,
                                          id_user = user.id
                                      };

            //Actualizo los datos a nivel de centro
            var centro = db.Centroes.Single(c => c.id == contacto.IdCentro);
            centro.movilizacionCount = valor;
            centro.lastMovilizacionContact = DateTime.Now;
            centro.nextMovilizacionContact = newDate;

            Movilizacion oldMovilizacion = db.Movilizacions.Single(p => p.id == contacto.LastMovilizacionId);
            oldMovilizacion.active = false;

            db.Movilizacions.AddObject(newMovilizacion);

            //Desactivo las alertas que esten pendientes en el centro
            var alertas = from a in db.MovilizacionAlertas
                                                     where a.activa && !a.Alerta.blocking
                                                           && a.id_centro == contacto.IdCentro
                                                     select a;

            foreach (var a in alertas)
            {
                a.activa = false;
            }

            db.SaveChanges();
            return new JavaScriptSerializer().Serialize("");
        }
Esempio n. 5
0
        public string UpdateLastMovilizacion(MovilizacionContact contacto, int valor, int cola = 0)
        {
            var db = new edayRoomEntities();
            Movilizacion oldMovilizacion = (from pt in db.Movilizacions
                                            where pt.id == contacto.LastMovilizacionId
                                            select pt).SingleOrDefault();
            if (oldMovilizacion != null)
            {
                oldMovilizacion.conteo = valor;
                db.SaveChanges();
            }

            return new JavaScriptSerializer().Serialize("");
        }
Esempio n. 6
0
        public string CancelarAlertaMovilizacion(MovilizacionContact contacto, string mensaje)
        {
            var db = new edayRoomEntities();
            var centro = db.Centroes.Single(c=> c.id == contacto.IdCentro);
            var alerta = (from a in db.MovilizacionAlertas
                                         where a.id == contacto.BlockingAlert.Id
                                         select a).Single();
            centro.alertBlocked = false;
            centro.blockingAlertId = null;
            alerta.activa = false;
            db.SaveChanges();

            return new JavaScriptSerializer().Serialize("");
        }