示例#1
0
        public string ActualizarAlertaParticipacion(ParticipacionContact contacto, string mensaje)
        {
            var db = new edayRoomEntities();
            var user = db.users.Single(u => u.username == User.Identity.Name);
            ParticipacionAlerta alerta = (from a in db.ParticipacionAlertas
                                          where a.id == contacto.BlockingAlert.Id
                                          select a).Single();

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

            db.SaveChanges();

            return new JavaScriptSerializer().Serialize("success");
        }
示例#2
0
        public ActionResult AdminMesa(int idMesa)
        {
            var db = new edayRoomEntities();
            Mesa mesa = (from m in db.Mesas
                         where m.id == idMesa
                         select m).Single();
            IOrderedEnumerable<Participacion> participacion = from p in mesa.Participacions
                                                              where p.id_testigo != null
                                                              orderby p.fecha descending
                                                              select p;

            Participacion lastParticipacion = participacion.FirstOrDefault();

            Debug.Assert(lastParticipacion != null, "lastParticipacion != null");
            var contact = new ParticipacionContact
                              {
                                  Centro = mesa.Centro.Nombre,
                                  IdMesa = mesa.id,
                                  IdTestigo = mesa.Testigoes.First(t => t.activo).id,
                                  Mesa = mesa.numero,
                                  NombreTestigo = mesa.Testigoes.First(t => t.activo).nombre,
                                  Numero = mesa.Testigoes.First(t => t.activo).numero,
                                  Votantes = mesa.votantes,
                                  LastUpdate = mesa.lastContact,
                                  LastValue = mesa.participacion
                              };
            ViewData["mesa"] = mesa;
            ViewData["participacion"] = participacion.ToList();
            ViewData["contact"] = contact;
            return View("AdminMesa");
        }
示例#3
0
        public string UpdateParticipacion(ParticipacionContact contacto, int valor, int cola = 0)
        {
            var db = new edayRoomEntities();
            var user = db.users.Single(u => u.username == User.Identity.Name);

            //Reseteo los timelines
            var oldTimelines =
                    (from pt in db.ParticipacionTimelines
                     where
                         pt.activa && pt.id_mesa == contacto.IdMesa
                     select pt);
            foreach (var oldTimeline in oldTimelines)
            {
                oldTimeline.activa = false;
            }

            //Guardar valor en timeline
            var newDate = contacto.QuickCountActive ? DateTime.Now.AddMinutes(45) : DateTime.Now.AddMinutes(60);
            var newTimeline = new ParticipacionTimeline { id_mesa = contacto.IdMesa, fecha = newDate, activa = true };
            db.ParticipacionTimelines.AddObject(newTimeline);
            var newParticipacion = new Participacion
            {
                fecha = DateTime.Now,
                hora = DateTime.Now.Hour,
                min10 = DateTime.Now.Minute/10,
                min30 = DateTime.Now.Minute/30,
                conteo = valor,
                id_mesa = contacto.IdMesa,
                id_testigo = contacto.IdTestigo,
                cola = cola,
                active = true,
                id_parent = null,
                id_user = user.id
            };

            //Guardo los datos a nivel de mesa
            var mesa = db.Mesas.Single(m => m.id == contacto.IdMesa);
            mesa.participacion = valor;
            mesa.lastContact = DateTime.Now;
            mesa.nextContact = newDate;
            mesa.abierta = true;

            //Proyeccion de resutados a centro
            var centro = mesa.Centro;
            var mesasActivas = centro.Mesas1.Where(m => m.participacion != 0).ToArray();
            var votosRegistrados = mesasActivas.Sum(m => m.participacion);
            var votantesEnMesa = mesasActivas.Sum(m => m.votantes);
            var proyeccionCentro = centro.votantes * votosRegistrados / votantesEnMesa;

            centro.lastParticipacionContact = DateTime.Now;
            centro.participacionContada = votosRegistrados;
            centro.participacionProyectada = proyeccionCentro;

            //Participacion oldParticipacion = db.Participacions.Single(p => p.id == contacto.LastParticipacionId);
            //oldParticipacion.active = false;

            db.Participacions.AddObject(newParticipacion);

            IQueryable<ParticipacionAlerta> alertas = from a in db.ParticipacionAlertas
                                                      where a.activa && !a.Alerta.blocking
                                                            && a.id_mesa == contacto.IdMesa
                                                      select a;

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

            db.SaveChanges();
            return new JavaScriptSerializer().Serialize("");
        }
示例#4
0
        public string UpdateLastParticipacion(ParticipacionContact contacto, int valor, int cola = 0)
        {
            throw new NotImplementedException();
            //var db = new edayRoomEntities();
            //Participacion oldParticipacion = (from pt in db.Participacions
            //                                  where pt.id == contacto.LastParticipacionId
            //                                  select pt).SingleOrDefault();
            //if (oldParticipacion != null)
            //{
            //    var mesa = oldParticipacion.Mesa;
            //    mesa.participacion = mesa.participacion == oldParticipacion.conteo ? valor : Math.Max(mesa.participacion, valor);
            //    var centro = mesa.Centro;
            //    var mesasActivas = centro.Mesas1.Where(m => m.participacion != 0).ToArray();
            //    var votosRegistrados = mesasActivas.Sum(m => m.participacion);
            //    var votantesEnMesa = mesasActivas.Sum(m => m.votantes);
            //    var proyeccionCentro = centro.votantes * votosRegistrados / votantesEnMesa;

            //    centro.participacionProyectada = proyeccionCentro;
            //    centro.participacionContada = votosRegistrados;

            //    oldParticipacion.conteo = valor;
            //    oldParticipacion.cola = cola;
            //    db.SaveChanges();
            //}

            //return new JavaScriptSerializer().Serialize("success");
        }
示例#5
0
        public string CerrarMesa(ParticipacionContact contacto)
        {
            var db = new edayRoomEntities();

            var mesa = db.Mesas.Single(m => m.id == contacto.IdMesa);
            mesa.abierta = false;
            mesa.cerrada = true;
            db.SaveChanges();
            return new JavaScriptSerializer().Serialize(db.SaveChanges());
        }
示例#6
0
        public string CancelarAlertaParticipacion(ParticipacionContact contacto, string mensaje)
        {
            var db = new edayRoomEntities();
            var mesa = db.Mesas.Single(m => m.id == contacto.IdMesa);
            var alerta = (from a in db.ParticipacionAlertas
                                          where
                                          a.Alerta.id == mesa.blockingAlertId &&
                                          a.activa
                                          select a).Single();

            mesa.alertBlocked = false;
            mesa.blockingAlertId = null;
            alerta.activa = false;
            alerta.comentario =
                string.Format("<li> <b>{1}</b> - {0} </li>", "Alerta Cancelada", DateTime.Now.ToString("HH:mm")) +
                alerta.comentario;
            db.SaveChanges();

            return new JavaScriptSerializer().Serialize("success");
        }
示例#7
0
        public string AlertaParticipacion(ParticipacionContact contacto, int valor, string mensaje)
        {
            var db = new edayRoomEntities();
            var mesa = db.Mesas.Single(m => m.id == contacto.IdMesa);
            var user = db.users.Single(u => u.username == User.Identity.Name);
            #region Registro la alerta

            var alerta = new ParticipacionAlerta
                             {
                                 activa = true,
                                 comentario =
                                     string.Format("<li><b>{1}</b> - {0}</li>", mensaje, DateTime.Now.ToString("HH:mm")),
                                 fecha = DateTime.Now,
                                 id_mesa = contacto.IdMesa,
                                 id_testigo = contacto.IdTestigo,
                                 id_alerta = valor,
                                 id_usuario = user.id
                             };

            db.ParticipacionAlertas.AddObject(alerta);

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

            #endregion

            #region  Retraso de Timeline

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

                var oldTimelines =
                    (from pt in db.ParticipacionTimelines
                     where
                         pt.activa && pt.id_mesa == contacto.IdMesa
                     //pt.id == contacto.MovilizacionTimelineId
                     select pt);
                foreach (var oldTimeline in oldTimelines)
                {
                    oldTimeline.activa = false;
                }
                //ParticipacionTimeline oldTimeline =
                //    (from pt in db.ParticipacionTimelines where pt.id == contacto.ParticipacionTimelineId select pt).
                //        Single();
                //oldTimeline.activa = false;
                DateTime newDate = DateTime.Now.AddMinutes(objetoAlerta.tiempo);
                var newTimeline = new ParticipacionTimeline { id_mesa = contacto.IdMesa, fecha = newDate, activa = true };
                db.ParticipacionTimelines.AddObject(newTimeline);
            }

            #endregion

            db.SaveChanges();

            // VERIFICAR SI HAY QUE HACER TRIGGER DE ALGUNA ALERTA
            var existingAlerts = from a in db.ParticipacionAlertas
                                 where a.id_mesa == contacto.IdMesa &&
                                       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 ParticipacionAlerta
                                         {
                                             activa = true,
                                             comentario =
                                                 string.Format("<li><b>{1}</b> - {0}</li>",
                                                               "ALERTA GENERADA AUTOMATICAMENTE",
                                                               DateTime.Now.ToString("HH:mm")),
                                             fecha = DateTime.Now,
                                             id_mesa = contacto.IdMesa,
                                             id_testigo = contacto.IdTestigo,
                                             id_alerta = newAlerta.id,
                                             id_usuario = user.id
                                         };
                    db.ParticipacionAlertas.AddObject(alertaAuto);
                    if (newAlerta.blocking){
                        mesa.alertBlocked = true;
                        mesa.blockingAlertId = newAlerta.id;
                    }
                    var alertMessage = new ParticipacionAlertaMessage { fecha = DateTime.Now, mensaje = "Alerta generada por sistema", id_usuario = user.id };
                    alertaAuto.ParticipacionAlertaMessages.Add(alertMessage);
                }
            }
            db.SaveChanges();
            return new JavaScriptSerializer().Serialize("success");
        }