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"); }
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"); }
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(""); }
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"); }
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()); }
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"); }
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"); }