Ejemplo n.º 1
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");
        }
Ejemplo n.º 2
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");
        }
Ejemplo n.º 3
0
        public string InitializeTimelinesTotalizacion()
        {
            var db = new edayRoomEntities();

            db.ClearTotalizacion();
            var mesas   = db.Mesas.Include("Testigoes").ToList();
            var centros = db.Centroes.Include("Movilizadors").Include("TestigoExitPolls").ToList();

            var tlTotalizacion = new List <TotalizacionTimeline>();

            foreach (var m in mesas)
            {
                tlTotalizacion.Add(new TotalizacionTimeline
                {
                    activa  = true,
                    id_mesa = m.id,
                    fecha   = DateTime.Now
                });
            }

            using (
                var con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnSimple"].ConnectionString)
                )
            {
                con.Open();

                #region Totalizacion Timeline
                using (var tran = con.BeginTransaction())
                {
                    var bc = new SqlBulkCopy(con,
                                             SqlBulkCopyOptions.CheckConstraints |
                                             SqlBulkCopyOptions.FireTriggers |
                                             SqlBulkCopyOptions.KeepNulls, tran)
                    {
                        BatchSize = 1000, DestinationTableName = "totalizacionTimeline"
                    };

                    bc.WriteToServer(tlTotalizacion.AsDataReader());

                    tran.Commit();
                }
                #endregion

                con.Close();
            }



            return("todo inicializado, bien");
        }
Ejemplo n.º 4
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");
        }
Ejemplo n.º 5
0
        public ActionResult GetChartData(string tag1, string tag2, string estados, string municipios)
        {
            var db = new edayRoomEntities();

            var tag1Filter       = string.IsNullOrWhiteSpace(tag1) ? null : tag1;
            var tag2Filter       = string.IsNullOrWhiteSpace(tag2) ? null : tag2;
            var estadosFilter    = string.IsNullOrWhiteSpace(estados) ? null : estados;
            var municipiosFilter = string.IsNullOrWhiteSpace(municipios) ? null : municipios;


            var data              = db.GetTotalizacion(null, null, tag1Filter, tag2Filter, estadosFilter, municipiosFilter, true, null).ToList();
            var totalVotos        = (int)data.Sum(d => d.votos ?? 1);
            var totalProyecciones = (int)data.Sum(d => d.proyeccion ?? 1);
            var candidatos        =
                data.Select(d => new CandidatoCountChart
            {
                Nombre               = d.nombre,
                Votos                = d.votos ?? 1,
                Proyeccion           = d.proyeccion ?? 1,
                Color                = d.color,
                PorcentajeVotos      = (float)Math.Round((d.votos ?? 1.0) * 100 / (totalVotos == 0 ? 1 : totalVotos), 2),
                PorcentajeProyeccion = (float)Math.Round((d.proyeccion ?? 1.0) * 100 / (totalProyecciones == 0 ? 1 : totalProyecciones), 2)
            }).ToList();


            return(Json(candidatos, JsonRequestBehavior.AllowGet));
            //var db = new edayRoomEntities();
            //IQueryable<Totalizacion> tots = db.Totalizacions.Where(t => t.QuickCountTimelines.Any());


            //IOrderedQueryable<RelacionCandidatoPartidoCoalicion> rel =
            //    db.RelacionCandidatoPartidoCoalicions.OrderBy(r => r.Candidato.nombre + r.Partido.nombre);
            //var candidatos = new List<CandidatoCountChart>();
            //foreach (RelacionCandidatoPartidoCoalicion r in rel)
            //{
            //    IQueryable<Totalizacion> candidatoTots = tots.Where(t => t.id_candidato == r.id);
            //    IQueryable<IGrouping<int, Totalizacion>> groupbyMesa = candidatoTots.GroupBy(t => t.id_mesa);

            //    int votos = groupbyMesa.Sum(t => t.Max(m => m.valor));
            //    var candidato = new CandidatoCountChart
            //                        {
            //                            Nombre = r.Candidato.nombre,
            //                            Votos = votos
            //                        };
            //    candidatos.Add(candidato);
            //}

            //return Json(candidatos, JsonRequestBehavior.AllowGet);
            //CandidatoCountChart
        }
Ejemplo n.º 6
0
        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(""));
        }
Ejemplo n.º 7
0
        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(""));
        }
Ejemplo n.º 8
0
        public MovilizacionStats(user user)
        {
            var db = new edayRoomEntities();

            _centros = db.AsignacionMovilizacions.Count(am => am.id_user == user.id);
            _mesas   = (from m in db.Mesas
                        from c in db.Centroes
                        from am in db.AsignacionMovilizacions
                        where m.id_centro == c.id &&
                        am.id_centro == c.id &&
                        am.id_user == user.id
                        select m
                        ).Count();
            _movilizacion = db.AsignacionMovilizacions.Where(m => m.id_user == user.id).Sum(c => c.Centro.Movilizacions.Max(m => m.conteo));
        }
Ejemplo n.º 9
0
        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(""));
        }
Ejemplo n.º 10
0
        public ActionResult AdminCentro(int idCentro)
        {
            var    db     = new edayRoomEntities();
            var    user   = db.users.Single(u => u.username == User.Identity.Name);
            Centro centro = (from c in db.Centroes
                             where c.id == idCentro
                             select c).Single();
            List <Mesa> mesas = (from m in centro.Mesas1
                                 where user.admin || m.AsignacionTotalizacions.Any(at => at.id_user == user.id)

                                 select m).ToList();

            ViewData["centro"] = centro;
            ViewData["mesas"]  = mesas;
            return(View("AdminCentro"));
        }
Ejemplo n.º 11
0
        public string GetCandidatos()
        {
            var db         = new edayRoomEntities();
            var candidatos =
                db.RelacionCandidatoPartidoCoalicions.Select(c => new
            {
                c.id,
                c.Candidato.nombre,
                partido   = c.Partido.nombre,
                coalicion = c.Coalicion.nombre,
                value     = 0,
                c.orden
            }).OrderBy(c => c.orden);

            return(new JavaScriptSerializer().Serialize(candidatos));
        }
Ejemplo n.º 12
0
        public ActionResult AdminCentro(int idCentro)
        {
            var    db     = new edayRoomEntities();
            Centro centro = (from c in db.Centroes
                             where c.id == idCentro
                             select c).Single();
            IOrderedQueryable <ExitPollTimeline> timelines =
                db.ExitPollTimelines.Where(ep => ep.id_centro == idCentro && ep.ExitPolls.Any()).OrderByDescending(
                    ep => ep.fecha);

            ViewData["timelines"]  = timelines.ToList();
            ViewData["candidatos"] = db.Candidatoes.OrderBy(c => c.nombre).ToList();
            ViewData["centro"]     = centro;

            return(View("AdminCentro"));
        }
Ejemplo n.º 13
0
        public string GetAlertas(string tag1, string tag2, string estados, string municipios)
        {
            var db = new edayRoomEntities();

            var tag1Filter       = string.IsNullOrWhiteSpace(tag1) ? null : tag1;
            var tag2Filter       = string.IsNullOrWhiteSpace(tag2) ? null : tag2;
            var estadosFilter    = string.IsNullOrWhiteSpace(estados) ? null : estados;
            var municipiosFilter = string.IsNullOrWhiteSpace(municipios) ? null : municipios;

            var totales  = db.GetAlertasTotales(tag1Filter, tag2Filter, estadosFilter, municipiosFilter);
            var activas  = db.GetAlertasActivas(tag1Filter, tag2Filter, estadosFilter, municipiosFilter);
            var estadosl = db.GetAlertasPorEstados();

            return(JsonConvert.SerializeObject(
                       new { totales, activas, estadosl }));
        }
Ejemplo n.º 14
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);
            }
        }
Ejemplo n.º 15
0
        public ActionResult AdminCentro(int idCentro)
        {
            var    db     = new edayRoomEntities();
            user   user   = db.users.Single(u => u.username == User.Identity.Name);
            Centro centro = (from c in db.Centroes
                             where c.id == idCentro
                             select c).Single();
            List <Mesa> mesas = (from m in centro.Mesas1
                                 where (user.admin ||
                                        (user.leader && m.Centro.grupo == user.grupo) ||
                                        m.AsignacionParticipacions.Any(ap => ap.id_user == user.id))
                                 select m).ToList();

            ViewData["centro"] = centro;
            ViewData["mesas"]  = mesas;
            return(View("AdminCentro"));
        }
Ejemplo n.º 16
0
        public string GetCandidatos(int centroId)
        {
            var db = new edayRoomEntities();
            IQueryable <CandidatoValue> candidato =
                from c in db.Candidatoes
                let ep =
                    c.ExitPolls.Where(ep => ep.id_centro == centroId).OrderByDescending(ep => ep.fecha).FirstOrDefault()
                    select new CandidatoValue
            {
                CandidatoId = c.id,
                Fecha       = ep == null ? DateTime.MinValue : ep.fecha,
                Nombre      = c.nombre,
                TimelineId  = ep == null ? 0 : ep.id_timeline,
                Valor       = ep == null ? 0 : ep.valor
            };

            return(new JavaScriptSerializer().Serialize(candidato));
        }
Ejemplo n.º 17
0
        public ActionResult GetQuickCountPorMuestras()
        {
            var db = new edayRoomEntities();

            var results = new List <KeyValuePair <string, List <GetTotalizacion_Result1> > >();
            var avances = new List <KeyValuePair <string, GetMetricasQuickCount_Result> >();

            foreach (var m in db.MuestrasQuickCounts)
            {
                string val    = m.value;
                var    avance = db.GetMetricasQuickCount(val).First();
                avances.Add(new KeyValuePair <string, GetMetricasQuickCount_Result>(val, avance));
                var data = db.GetTotalizacion(null, null, null, null, null, null, true, val).ToList();
                results.Add(new KeyValuePair <string, List <GetTotalizacion_Result1> >(val, data));
            }

            return(Json(new{ results, avances }, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 18
0
        public string GetCandidato(int id)
        {
            var db        = new edayRoomEntities();
            var candidato = (from c in db.RelacionCandidatoPartidoCoalicions
                             where c.id == id
                             select new
            {
                c.id,
                c.Candidato.nombre,
                c.Candidato.color,
                partido = c.Partido.nombre,
                colorpartido = c.Partido.color,
                coalicion = c.Coalicion.nombre,
                colorcoalicion = c.Coalicion.color
            }).SingleOrDefault();

            return(new JavaScriptSerializer().Serialize(candidato));
        }
Ejemplo n.º 19
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);
            }
        }
Ejemplo n.º 20
0
        public ActionResult AdminMesa(int idMesa)
        {
            var db = new edayRoomEntities();

            Mesa mesa = (from m in db.Mesas
                         where m.id == idMesa
                         select m).Single();
            Centro centro = (from c in db.Centroes
                             where c.id == mesa.id_centro
                             select c).Single();
            bool    totalizacionDone = mesa.Totalizacions.Any();
            Testigo testigo          = mesa.Testigoes.FirstOrDefault(t => t.activo);

            ViewData["centro"]           = centro;
            ViewData["mesa"]             = mesa;
            ViewData["totalizacionDone"] = totalizacionDone;
            ViewData["contact"]          = (from pt in db.TotalizacionTimelines
                                            where mesa.id == pt.id_mesa &&
                                            pt.activa
                                            select new TotalizacionContact
            {
                Centro = mesa.Centro.Nombre,
                CentroId = mesa.Centro.id,
                LastUpdate = pt.fecha,
                NextUpdate = pt.fecha,
                Votantes = mesa.votantes,
                IdTestigo = testigo.id,
                Mesa = mesa.numero,
                MesaId = mesa.id,
                TotalizacionTimelineId = pt.id,
                NombreTestigo = testigo.nombre,
                Numero = testigo.numero
            }).SingleOrDefault();
            if (totalizacionDone)
            {
                ViewData["totales"] =
                    mesa.Totalizacions.OrderBy(t => t.RelacionCandidatoPartidoCoalicion.Candidato.nombre).ThenBy(
                        t => t.RelacionCandidatoPartidoCoalicion.Partido.nombre).ToList();
            }

            return(View());
        }
Ejemplo n.º 21
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(""));
        }
Ejemplo n.º 22
0
        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(""));
        }
Ejemplo n.º 23
0
        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"));
        }
Ejemplo n.º 24
0
        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"));
        }
Ejemplo n.º 25
0
        public string GetAlertas()
        {
            var db      = new edayRoomEntities();
            var alertas = from a in db.Alertas
                          orderby a.name
                          select
                          new
            {
                a.id,
                a.name,
                a.blocking,
                a.regresivo,
                a.tiempo,
                a.canceledBy,
                a.maxRepeats,
                a.asocAlerta
            };

            return(new JavaScriptSerializer().Serialize(alertas));
        }
Ejemplo n.º 26
0
        public string GetAlerta(int id)
        {
            var db     = new edayRoomEntities();
            var alerta = (from a in db.Alertas
                          where a.id == id
                          select
                          new
            {
                a.id,
                a.name,
                a.blocking,
                a.regresivo,
                a.tiempo,
                a.canceledBy,
                a.maxRepeats,
                a.asocAlerta
            }).SingleOrDefault();

            return(new JavaScriptSerializer().Serialize(alerta));
        }
Ejemplo n.º 27
0
        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));
        }
Ejemplo n.º 28
0
        public ActionResult AdminCentro(int idCentro)
        {
            var    db     = new edayRoomEntities();
            Centro centro = (from c in db.Centroes
                             where c.id == idCentro
                             select c).Single();

            ViewData["centro"] = centro;
            bool quickCountDone = centro.Mesas1.Any(m => m.Totalizacions.Any());

            ViewData["quickCountDone"] = quickCountDone;
            if (quickCountDone)
            {
                Mesa mesa = centro.Mesas1.FirstOrDefault(m => m.Totalizacions.Any(t => t.QuickCountTimelines.Any())) ??
                            centro.Mesas1.FirstOrDefault(m => m.Totalizacions.Any());
                ViewData["mesa"]    = mesa;
                ViewData["totales"] =
                    mesa.Totalizacions.OrderBy(t => t.RelacionCandidatoPartidoCoalicion.Candidato.nombre).ThenBy(
                        t => t.RelacionCandidatoPartidoCoalicion.Partido.nombre).ToList();
            }
            else
            {
                ViewData["contact"] = (from c in db.Centroes
                                       from pt in db.QuickCountTimelines
                                       where
                                       c.id == idCentro &&
                                       c.id == pt.id_centro &&
                                       pt.activa && (c.quickCountActive ?? false)
                                       select new TotalizacionContact
                {
                    Centro = c.Nombre,
                    CentroId = c.id,
                    LastUpdate = pt.fecha,
                    NextUpdate = pt.fecha,
                    Votantes = c.votantes ?? 0,
                    TotalizacionTimelineId = pt.id
                }).SingleOrDefault();
            }

            return(View());
        }
Ejemplo n.º 29
0
        public JsonResult GetCandidatos()
        {
            var db = new edayRoomEntities();

            var partidos = from p in db.Partidoes
                           orderby p.nombre
                           select new { p.id, p.nombre, p.color };
            var coaliciones = from c in db.Coalicions
                              orderby c.nombre
                              select new { c.id, c.nombre, c.color };
            var candidato = from c in db.Candidatoes
                            orderby c.nombre
                            select new
            {
                c.id,
                c.nombre,
                c.color
            };

            return(Json(new { candidato, partidos, coaliciones }, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 30
0
        public string GetMatrizSustitucion(string tag1, string tag2, string estados, string municipios)
        {
            var db = new edayRoomEntities();

            var tag1Filter       = string.IsNullOrWhiteSpace(tag1) ? null : tag1;
            var tag2Filter       = string.IsNullOrWhiteSpace(tag2) ? null : tag2;
            var estadosFilter    = string.IsNullOrWhiteSpace(estados) ? null : estados;
            var municipiosFilter = string.IsNullOrWhiteSpace(municipios) ? null : municipios;


            var matriz = from m in db.mudVsPsuvs
                         from c in db.Centroes
                         where m.id_centro == c.unique_id &&
                         (tag1Filter == null || tag1Filter.Contains(c.tag1)) &&
                         (tag2Filter == null || tag2Filter.Contains(c.tag2)) &&
                         (estadosFilter == null || estadosFilter.Contains(c.unidadGeografica1)) &&
                         (municipiosFilter == null || municipiosFilter.Contains(c.unidadGeografica2))
                         select m;


            var totalMud2012        = matriz.Sum(m => m.mud2012);
            var totalPsuv2012       = matriz.Sum(m => m.psuv2012);
            var totalAbstencion2012 = matriz.Sum(m => m.abstencion2012);
            var total2012           = totalMud2012 + totalPsuv2012 + totalAbstencion2012;

            var totalMud        = matriz.Sum(m => m.mud_actual ?? m.mud2012);
            var totalPsuv       = matriz.Sum(m => m.psuv_actual ?? m.psuv2012);
            var totalAbstencion = matriz.Sum(m => m.abstencion ?? m.abstencion2012);
            var total           = totalMud + totalPsuv + totalAbstencion;

            return(JsonConvert.SerializeObject(new
            {
                totalMud2012 = totalMud2012 * 100.0 / total2012,
                totalPsuv2012 = totalPsuv2012 * 100.0 / total2012,
                totalAbstencion2012 = totalAbstencion2012 * 100.0 / total2012,
                totalMud = totalMud * 100.0 / total,
                totalPsuv = totalPsuv * 100.0 / total,
                totalAbstencion = totalAbstencion * 100.0 / total
            }));
        }