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&lt;T&gt; property instead.
 /// </summary>
 public void AddToParticipacionAlertas(ParticipacionAlerta participacionAlerta)
 {
     base.AddObject("ParticipacionAlertas", participacionAlerta);
 }
Exemple #3
0
 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;
 }