public string UpdateSingleExitPoll(int exitpollId, CandidatoValueIncoming[] valores)
        {
            var db = new edayRoomEntities();

            ExitPollTimeline oldTimeline = (from pt in db.ExitPollTimelines
                                            where pt.id == exitpollId
                                            select pt).Single();

            db.SaveChanges();


            foreach (CandidatoValueIncoming v in valores)
            {
                int idCandidato = int.Parse(v.name.Replace("candidato-", ""));
                int valor       = v.value;
                ExitPoll
                    ep = oldTimeline.ExitPolls.Single(e => e.id_candidato == idCandidato);
                ep.valor = valor;
            }

            db.SaveChanges();


            return(new JavaScriptSerializer().Serialize(""));
        }
        public string UpdateExitPoll(ExitPollContact contacto, CandidatoValueIncoming[] valores)
        {
            var db   = new edayRoomEntities();
            var user = db.users.Single(u => u.username == User.Identity.Name);

            ExitPollTimeline oldTimeline = (from pt in db.ExitPollTimelines
                                            where pt.id == contacto.ExitPollTimelineId
                                            select pt).Single();

            oldTimeline.activa = false;
            db.SaveChanges();

            DateTime newDate     = contacto.QuickCountActive ? DateTime.Now.AddMinutes(45) : DateTime.Now.AddMinutes(60);
            var      newTimeline = new ExitPollTimeline
            {
                id_centro          = contacto.CentroId,
                fecha              = newDate,
                id_testigoExitPoll = contacto.IdTestigo,
                activa             = true,
                id_parent          = oldTimeline.id
            };

            db.ExitPollTimelines.AddObject(newTimeline);
            db.SaveChanges();

            foreach (CandidatoValueIncoming v in valores)
            {
                var ep = new ExitPoll
                {
                    id_candidato       = int.Parse(v.name.Replace("candidato-", "")),
                    id_centro          = contacto.CentroId,
                    id_testigoExitPoll = contacto.IdTestigo,
                    id_timeline        = newTimeline.id,
                    valor   = v.value,
                    fecha   = DateTime.Now,
                    id_user = user.id
                };
                db.ExitPolls.AddObject(ep);
            }

            IQueryable <ExitPollAlerta> alertas = from a in db.ExitPollAlertas
                                                  where a.activa && !a.Alerta.blocking &&
                                                  a.id_centro == contacto.CentroId
                                                  select a;

            foreach (ExitPollAlerta a in alertas)
            {
                a.activa = false;
            }

            db.SaveChanges();
            //var newContacto = ExitPollsContact.GetExitPollsContact(contacto.IdTestigo);


            return(new JavaScriptSerializer().Serialize(contacto));
        }
        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 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 UpdateSingleParticipacion(int participacionId, int valor, int cola)
        {
            using (var db = new edayRoomEntities())
            {
                Participacion participacion = db.Participacions.SingleOrDefault(p => p.id == participacionId);


                if (participacion != null)
                {
                    var mesa = participacion.Mesa;
                    mesa.participacion   = mesa.participacion == participacion.conteo ? valor : Math.Max(mesa.participacion, valor);
                    participacion.conteo = valor;
                    participacion.cola   = cola;

                    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.participacionContada    = votosRegistrados;
                    centro.participacionProyectada = proyeccionCentro;
                }
                db.SaveChanges();
                return(new JavaScriptSerializer().Serialize(""));
            }
        }
        public static void UpdateMatriz(int idCentro)
        {
            var db     = new edayRoomEntities();
            var centro = db.Centroes.Single(c => c.id == idCentro);
            var matriz = db.mudVsPsuvs.Single(c => c.id_centro == centro.unique_id);

            var mesas = (from m in db.Mesas
                         where m.id_centro == centro.id &&
                         m.Totalizacions.Any()
                         select m);

            var votantesContados = mesas.Any()?mesas.Sum(m => m.votantes):0;
            var totales          = (from m in db.Mesas
                                    from t in db.Totalizacions
                                    where m.id_centro == centro.id &&
                                    t.id_mesa == m.id
                                    select t).GroupBy(t => t.RelacionCandidatoPartidoCoalicion.Candidato.nombre).
                                   Select(k => new{ k.Key, valor = k.Sum(m => m.valor) });
            int totalCapriles = totales.Any() ? totales.Single(t => t.Key.Contains("Capriles")).valor:0;
            int totalChavez   = totales.Any() ? totales.Single(t => t.Key.Contains("Jaua")).valor:0;
            int abstencion    = 0;

            totalCapriles = totalCapriles * (centro.votantes ?? 0) / votantesContados;
            totalChavez   = totalChavez * (centro.votantes ?? 0) / votantesContados;
            abstencion    = (centro.votantes ?? 0) - (totalCapriles + totalChavez);

            matriz.mud_actual  = totalCapriles;
            matriz.psuv_actual = totalChavez;
            matriz.abstencion  = abstencion;
            db.SaveChanges();
        }
Exemple #7
0
        public ActionResult CancelAlert(int idAlerta, string modulo)
        {
            var db = new edayRoomEntities();

            switch (modulo)
            {
            case "Participación":
                db.ParticipacionAlertas.Single(pa => pa.id == idAlerta).activa = false;
                break;

            case "Movilización":
                db.MovilizacionAlertas.Single(pa => pa.id == idAlerta).activa = false;
                break;

            case "Exit Poll":
                db.ExitPollAlertas.Single(pa => pa.id == idAlerta).activa = false;
                break;

            case "QuickCount":
                db.QuickCountAlertas.Single(pa => pa.id == idAlerta).activa = false;
                break;

            case "Totalización":
                db.TotalizacionAlertas.Single(pa => pa.id == idAlerta).activa = false;
                break;
            }
            db.SaveChanges();
            return(RedirectToAction("ListAlertas"));
        }
        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(""));
        }
Exemple #9
0
        public string CrearAlerta(Alerta alerta)
        {
            var db = new edayRoomEntities();

            db.Alertas.AddObject(alerta);
            db.SaveChanges();
            return(new JavaScriptSerializer().Serialize(""));
        }
 public ActionResult UpdateSettings(Setting setting)
 {
     using (var db = new edayRoomEntities())
     {
         db.Settings.Attach(setting);
         db.ObjectStateManager.ChangeObjectState(setting, EntityState.Modified);
         db.SaveChanges();
     }
     return(RedirectToAction("Index"));
 }
        public string UpdateTotalizacion(TotalizacionContact contacto, CandidatoValueIncoming[] valores)
        {
            var db = new edayRoomEntities();

            TotalizacionTimeline oldTimeline = (from pt in db.TotalizacionTimelines
                                                where pt.id == contacto.TotalizacionTimelineId
                                                select pt).Single();

            oldTimeline.activa = false;
            db.SaveChanges();

            foreach (CandidatoValueIncoming v in valores)
            {
                var ep = new Totalizacion
                {
                    id_candidato = int.Parse(v.name.Replace("candidato-", "")),
                    id_mesa      = contacto.MesaId,
                    valor        = v.value
                };
                db.Totalizacions.AddObject(ep);
                ep.TotalizacionTimelines.Add(oldTimeline);
            }

            IQueryable <TotalizacionAlerta> alertas = from a in db.TotalizacionAlertas
                                                      where a.activa && !a.Alerta.blocking &&
                                                      a.id_mesa == contacto.MesaId
                                                      select a;

            foreach (TotalizacionAlerta a in alertas)
            {
                a.activa = false;
            }

            var centro = db.Centroes.Single(c => c.id == contacto.CentroId);

            centro.totalizado = true;

            db.SaveChanges();
            //MatrizDeSustitucion.UpdateMatriz(contacto.CentroId);

            return(new JavaScriptSerializer().Serialize(""));
        }
        public string CancelarAlertaQuickCount(TotalizacionContact contacto, string mensaje)
        {
            var db = new edayRoomEntities();
            QuickCountAlerta alerta = (from a in db.QuickCountAlertas
                                       where a.id == contacto.BlockingAlert.Id
                                       select a).Single();

            alerta.activa = false;
            db.SaveChanges();
            return(new JavaScriptSerializer().Serialize(""));
        }
Exemple #13
0
 public string EditAlerta(Alerta alerta)
 {
     if (ModelState.IsValid)
     {
         var db = new edayRoomEntities();
         db.Alertas.Attach(alerta);
         db.ObjectStateManager.ChangeObjectState(alerta, EntityState.Modified);
         db.SaveChanges();
     }
     return("");
 }
 public string UpdateSingleMovilizacion(int movilizacionId, int valor)
 {
     using (var db = new edayRoomEntities())
     {
         var movilizacion = db.Movilizacions.SingleOrDefault(p => p.id == movilizacionId);
         if (movilizacion != null)
         {
             movilizacion.conteo = valor;
         }
         db.SaveChanges();
         return(new JavaScriptSerializer().Serialize(""));
     }
 }
Exemple #15
0
        public string EditTestigoMovilizacion(int tid, string name, string number)
        {
            var db      = new edayRoomEntities();
            var testigo = db.Movilizadors.SingleOrDefault(m => m.id == tid);

            if (testigo != null)
            {
                testigo.nombre = name;
                testigo.numero = number;
                db.SaveChanges();
                return("Testigo editado");
            }
            return("Error");
        }
Exemple #16
0
        public string DeleteAlerta(int id)
        {
            var    db     = new edayRoomEntities();
            Alerta alerta = (from a in db.Alertas
                             where a.id == id
                             select a).SingleOrDefault();

            if (alerta != null)
            {
                db.Alertas.DeleteObject(alerta);
            }
            db.SaveChanges();
            return("Deleted");
        }
Exemple #17
0
        public string EditTestigoParticipacion(int tid, string name, string number)
        {
            var db      = new edayRoomEntities();
            var testigo = db.Testigoes.SingleOrDefault(t => t.id == tid);

            if (testigo != null)
            {
                testigo.numero = number;
                testigo.nombre = name;
                db.SaveChanges();
                return("Testigo Editado");
            }
            return("Falla editando");
        }
Exemple #18
0
        public string DeleteCandidato(int id)
        {
            var       db        = new edayRoomEntities();
            Candidato candidato = (from c in db.Candidatoes
                                   where c.id == id
                                   select c).SingleOrDefault();

            if (candidato != null)
            {
                db.Candidatoes.DeleteObject(candidato);
            }
            db.SaveChanges();
            return("Deleted");
        }
        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 UpdateSingleQuickCount(int totalizacionId, int value)
        {
            var db = new edayRoomEntities();

            Totalizacion totalizacion = (from t in db.Totalizacions
                                         where t.ID == totalizacionId
                                         select t).Single();

            totalizacion.valor = value;
            db.SaveChanges();

            MatrizDeSustitucion.UpdateMatriz(totalizacion.Mesa.Centro.id);

            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(""));
        }
Exemple #22
0
        public bool Save()
        {
            using (var db = new edayRoomEntities())
            {
                bool returnValue = true;
                Mesa mesa        = (from m in db.Mesas
                                    where m.id_centro == IdCentro &&
                                    m.uniqueId == UniqueId
                                    select m).SingleOrDefault();
                if (mesa == null)
                {
                    mesa = new Mesa
                    {
                        id_centro = IdCentro,
                        numero    = Numero,
                        uniqueId  = UniqueId,
                        votantes  = Votantes
                    };
                    db.Mesas.AddObject(mesa);
                    mesa.ParticipacionTimelines.Add(new ParticipacionTimeline
                    {
                        activa = true,
                        fecha  = DateTime.Now,
                    });

                    mesa.Participacions.Add(new Participacion
                    {
                        conteo     = 0,
                        active     = true,
                        cola       = 0,
                        fecha      = DateTime.Now,
                        id_testigo = null
                    });

                    db.SaveChanges();
                }
                else
                {
                    returnValue = false;
                }

                Id = mesa.id;

                return(returnValue);
            }
        }
Exemple #23
0
        public bool Save()
        {
            using (var db = new edayRoomEntities())
            {
                var testigo = new Testigo
                {
                    id_mesa = IdMesa,
                    nombre  = Nombre,
                    numero  = Numero,
                    activo  = Activo
                };

                db.Testigoes.AddObject(testigo);
                db.SaveChanges();
                Id = testigo.id;
                return(true);
            }
        }
Exemple #24
0
        public string CrearCandidato(string nombre, string coalicion, string partido, string color, string colorpartido, string colorcoalicion)
        {
            var db  = new edayRoomEntities();
            var rel = new RelacionCandidatoPartidoCoalicion();

            db.RelacionCandidatoPartidoCoalicions.AddObject(rel);
            Candidato candidato = db.Candidatoes.SingleOrDefault(c => c.nombre.ToLower() == nombre.ToLower());

            if (candidato == null)
            {
                candidato = new Candidato {
                    nombre = nombre, color = color
                };
                db.Candidatoes.AddObject(candidato);
            }
            Partido partidoObj = db.Partidoes.SingleOrDefault(c => c.nombre.ToLower() == partido.ToLower());

            if (partidoObj == null)
            {
                partidoObj = new Partido {
                    nombre = partido, color = colorpartido
                };
                db.Partidoes.AddObject(partidoObj);
            }

            Coalicion coalicionObj = db.Coalicions.SingleOrDefault(c => c.nombre.ToLower() == coalicion.ToLower());

            if (coalicionObj == null)
            {
                coalicionObj = new Coalicion {
                    nombre = coalicion, color = colorcoalicion
                };
                db.Coalicions.AddObject(coalicionObj);
            }

            partidoObj.RelacionCandidatoPartidoCoalicions.Add(rel);
            coalicionObj.RelacionCandidatoPartidoCoalicions.Add(rel);
            candidato.RelacionCandidatoPartidoCoalicions.Add(rel);

            db.SaveChanges();
            return(new JavaScriptSerializer().Serialize(""));
        }
        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 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 string TogglePauseUser(int userId)
        {
            var db   = new edayRoomEntities();
            var user = db.users.Single(u => u.id == userId);

            user.paused = !user.paused;

            if (user.paused)
            {
                var usersInGroup =
                    db.users.Where(u => u.exitpolls && u.grupo == user.grupo && u.id != user.id && !u.paused).ToList
                        ();
                var groupCount       = usersInGroup.Count;
                var assignedExitPoll = db.AsignacionExitPolls.Where(ap => ap.id_user == user.id).ToList();
                var roundRobin       = 0;
                foreach (var ap in assignedExitPoll)
                {
                    db.AsignacionExitPolls.AddObject(new AsignacionExitPoll
                    {
                        id_centro        = ap.id_centro,
                        id_original_user = ap.id_original_user ?? user.id,
                        isReplacement    = true,
                        id_user          = usersInGroup[roundRobin % groupCount].id
                    });
                    roundRobin++;
                }
            }
            else
            {
                var assignedExitPoll =
                    db.AsignacionExitPolls.Where(ap => ap.id_original_user == user.id && ap.isReplacement).ToList();
                foreach (var ap in assignedExitPoll)
                {
                    db.AsignacionExitPolls.DeleteObject(ap);
                }
            }


            db.SaveChanges();
            return(user.paused.ToString(CultureInfo.InvariantCulture));
        }
        public ActionResult SetupUsers()
        {
            HttpPostedFileBase fileUpload = Request.Files[0];
            var users = new List <EdayRoomUser>();

            if (fileUpload != null)
            {
                fileUpload.SaveAs(Server.MapPath("~/temp/" + fileUpload.FileName));
                var fi    = new FileInfo(Server.MapPath("~/temp/" + fileUpload.FileName));
                var fiOut = new FileInfo(
                    Path.Combine(
                        Server.MapPath(ConfigurationManager.AppSettings["userFilesDirectory"]),
                        string.Format("{0}_" + fileUpload.FileName,
                                      DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss"))));
                var           db            = new edayRoomEntities();
                List <string> existingUsers = (from u in db.users
                                               select u.username).ToList();
                var            package   = new ExcelPackage(fi);
                ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
                worksheet.Cells[1, 3].Value = "usuario";
                worksheet.Cells[1, 4].Value = "password";
                for (int i = 2; i <= worksheet.Dimension.End.Row; i++)
                {
                    var nombre   = (string)worksheet.Cells[i, 1].Value;
                    var apellido = (string)worksheet.Cells[i, 2].Value;
                    var u        = new EdayRoomUser
                    {
                        Name =
                            nombre + " " +
                            apellido,
                        Password = PasswordManagement.GenerateRandomPassword(6),
                    };
                    u.Username = u.Name.Replace(" ", ".").ToLower();
                    int uid = 1;
                    if (existingUsers.Any(us => us == u.Username))
                    {
                        string original = u.Username;
                        while (true)
                        {
                            u.Username = original + "." + uid;
                            if (existingUsers.All(us => us != u.Username))
                            {
                                break;
                            }
                            uid++;
                        }
                    }
                    existingUsers.Add(u.Username);
                    worksheet.Cells[i, 3].Value = u.Username;
                    worksheet.Cells[i, 4].Value = u.Password;
                    users.Add(u);
                    string salt         = "";
                    string passwordHash = PasswordManagement.GeneratePasswordHash(u.Password, out salt);

                    db.users.AddObject(new user
                    {
                        nombre   = nombre,
                        apellido = apellido,
                        username = u.Username,
                        salt     = salt,
                        hash     = passwordHash
                    });
                }

                db.UserFiles.AddObject(new UserFile
                {
                    fileName = fiOut.Name
                });

                db.SaveChanges();

                package.SaveAs(fiOut);
            }
            var errores = new List <string> {
                "error " + fileUpload.FileName
            };

            return(GetAllUsers(errores, users));
        }
        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(""));
        }