public string UpdateQuickCount(TotalizacionContact contacto, CandidatoValueIncoming[] valores) { var db = new edayRoomEntities(); var user = db.users.Single(u => u.username == User.Identity.Name); QuickCountTimeline oldTimeline = (from pt in db.QuickCountTimelines where pt.id == contacto.TotalizacionTimelineId select pt).Single(); oldTimeline.activa = false; db.SaveChanges(); IQueryable <Totalizacion> totalizaciones = db.Totalizacions.Where(t => t.id_mesa == contacto.MesaId); foreach (CandidatoValueIncoming v in valores) { int idCandidato = int.Parse(v.name.Replace("candidato-", "")); Totalizacion totalizacion = totalizaciones.SingleOrDefault(t => t.id_candidato == idCandidato); if (totalizacion == null) { totalizacion = new Totalizacion { id_candidato = idCandidato, id_mesa = contacto.MesaId, valor = v.value, id_user = user.id }; db.Totalizacions.AddObject(totalizacion); } totalizacion.QuickCountTimelines.Add(oldTimeline); } var centro = db.Centroes.Single(c => c.id == contacto.CentroId); centro.totalizado = true; IQueryable <QuickCountAlerta> alertas = from a in db.QuickCountAlertas where a.activa && !a.Alerta.blocking && a.id_centro == contacto.CentroId select a; foreach (QuickCountAlerta a in alertas) { a.activa = false; } //contacto.CentroId db.SaveChanges(); MatrizDeSustitucion.UpdateMatriz(contacto.CentroId); return(new JavaScriptSerializer().Serialize("")); }
public string AlertaQuickCount(TotalizacionContact contacto, int valor, string mensaje) { var db = new edayRoomEntities(); var user = db.users.Single(u => u.username == User.Identity.Name); #region Registro la alerta var alerta = new QuickCountAlerta { activa = true, fecha = DateTime.Now, id_centro = contacto.CentroId, id_alerta = valor, id_usuario = user.id }; db.QuickCountAlertas.AddObject(alerta); var messages = new List <QuickCountAlertaMessage>(); if (!string.IsNullOrWhiteSpace(mensaje)) { var alertMessage = new QuickCountAlertaMessage { fecha = DateTime.Now, mensaje = mensaje, id_usuario = user.id }; alerta.QuickCountAlertaMessages.Add(alertMessage); messages.Add(alertMessage); } #endregion #region Retraso de Timeline Alerta objetoAlerta = db.Alertas.Single(a => a.id == valor); if (objetoAlerta.regresivo) { var oldTimelines = (from pt in db.QuickCountTimelines where pt.activa && pt.id_centro == contacto.CentroId //pt.id == contacto.MovilizacionTimelineId select pt); foreach (var oldTimeline in oldTimelines) { oldTimeline.activa = false; } //QuickCountTimeline oldTimeline = // (from pt in db.QuickCountTimelines where pt.id == contacto.TotalizacionTimelineId select pt). // Single(); //oldTimeline.activa = false; DateTime newDate = DateTime.Now.AddMinutes(objetoAlerta.tiempo); var newTimeline = new QuickCountTimeline { id_centro = contacto.CentroId, fecha = newDate, activa = true }; db.QuickCountTimelines.AddObject(newTimeline); } #endregion db.SaveChanges(); // VERIFICAR SI HAY QUE HACER TRIGGER DE ALGUNA ALERTA IQueryable <QuickCountAlerta> existingAlerts = from a in db.QuickCountAlertas where a.id_centro == contacto.CentroId && a.id_alerta == valor && a.activa select a; int alertCount = existingAlerts.Count(); int maxRepeats = existingAlerts.First().Alerta.maxRepeats ?? 0; if (maxRepeats != 0) { if (alertCount == maxRepeats) { //LLEGUE AL LIMITE, hago el trigger de la alerta Alerta newAlerta = existingAlerts.First().Alerta.AlertaAsociada; var alertaAuto = new QuickCountAlerta { activa = true, fecha = DateTime.Now, id_centro = contacto.CentroId, id_alerta = newAlerta.id, id_usuario = user.id }; db.QuickCountAlertas.AddObject(alertaAuto); var alertMessage = new QuickCountAlertaMessage { fecha = DateTime.Now, mensaje = "Alerta generada por sistema", id_usuario = user.id }; alertaAuto.QuickCountAlertaMessages.Add(alertMessage); } } db.SaveChanges(); //var newContacto = TotalizacionContact.GetTotalizacionContact(contacto.IdTestigo); return(new JavaScriptSerializer().Serialize("")); }