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"); }
/// <summary> /// Deprecated Method for adding a new object to the ParticipacionAlertas EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddToParticipacionAlertas(ParticipacionAlerta participacionAlerta) { base.AddObject("ParticipacionAlertas", participacionAlerta); }
public Alerta(ParticipacionAlerta a) { Modulo = Modulo.Participacion; InicializarAlerta(a.ParticipacionAlertaMessages, a); }
/// <summary> /// Create a new ParticipacionAlerta object. /// </summary> /// <param name="id">Initial value of the id property.</param> /// <param name="id_usuario">Initial value of the id_usuario property.</param> /// <param name="id_mesa">Initial value of the id_mesa property.</param> /// <param name="id_alerta">Initial value of the id_alerta property.</param> /// <param name="activa">Initial value of the activa property.</param> /// <param name="fecha">Initial value of the fecha property.</param> public static ParticipacionAlerta CreateParticipacionAlerta(global::System.Int32 id, global::System.Int32 id_usuario, global::System.Int32 id_mesa, global::System.Int32 id_alerta, global::System.Boolean activa, global::System.DateTime fecha) { ParticipacionAlerta participacionAlerta = new ParticipacionAlerta(); participacionAlerta.id = id; participacionAlerta.id_usuario = id_usuario; participacionAlerta.id_mesa = id_mesa; participacionAlerta.id_alerta = id_alerta; participacionAlerta.activa = activa; participacionAlerta.fecha = fecha; return participacionAlerta; }