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