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(); }
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 ActualizarAlertaTotalizacion(TotalizacionContact contacto, string mensaje) { var db = new edayRoomEntities(); var user = db.users.Single(u => u.username == User.Identity.Name); TotalizacionAlerta alerta = (from a in db.TotalizacionAlertas where a.id == contacto.BlockingAlert.Id select a).Single(); if (!string.IsNullOrWhiteSpace(mensaje)) { var alertMessage = new TotalizacionAlertaMessage { fecha = DateTime.Now, mensaje = mensaje, id_usuario=user.id }; alerta.TotalizacionAlertaMessages.Add(alertMessage); } db.SaveChanges(); IQueryable<TotalizacionContactAlertMessage> mensajesAlerta = (from a in alerta.TotalizacionAlertaMessages orderby a.fecha descending select new TotalizacionContactAlertMessage { Id = a.id, Fecha = a.fecha, Message = a.mensaje }).AsQueryable(); 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 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"; }
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 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"; }
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 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 AlertaTotalizacion(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 TotalizacionAlerta { activa = true, fecha = DateTime.Now, id_mesa = contacto.MesaId, id_testigoTotalizacion = contacto.IdTestigo, id_alerta = valor, id_usuario = user.id }; db.TotalizacionAlertas.AddObject(alerta); var messages = new List<TotalizacionAlertaMessage>(); if (!string.IsNullOrWhiteSpace(mensaje)) { var alertMessage = new TotalizacionAlertaMessage { fecha = DateTime.Now, mensaje = mensaje , id_usuario = user.id}; alerta.TotalizacionAlertaMessages.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.TotalizacionTimelines where pt.activa && pt.id_mesa == contacto.MesaId //pt.id == contacto.MovilizacionTimelineId select pt); foreach (var oldTimeline in oldTimelines) { oldTimeline.activa = false; } //TotalizacionTimeline oldTimeline = // (from pt in db.TotalizacionTimelines where pt.id == contacto.TotalizacionTimelineId select pt). // Single(); //oldTimeline.activa = false; DateTime newDate = DateTime.Now.AddMinutes(objetoAlerta.tiempo); var newTimeline = new TotalizacionTimeline { id_mesa = contacto.MesaId, //id_parent = oldTimeline.id, fecha = newDate, activa = true }; db.TotalizacionTimelines.AddObject(newTimeline); } #endregion db.SaveChanges(); // VERIFICAR SI HAY QUE HACER TRIGGER DE ALGUNA ALERTA var existingAlerts = from a in db.TotalizacionAlertas where a.id_mesa == contacto.MesaId && 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 TotalizacionAlerta { activa = true, fecha = DateTime.Now, id_mesa = contacto.MesaId, id_testigoTotalizacion = contacto.IdTestigo, id_alerta = newAlerta.id, id_usuario = user.id }; db.TotalizacionAlertas.AddObject(alertaAuto); var alertMessage = new TotalizacionAlertaMessage { fecha = DateTime.Now, mensaje = "Alerta generada por sistema", id_usuario = user.id }; alertaAuto.TotalizacionAlertaMessages.Add(alertMessage); } } db.SaveChanges(); //var newContacto = TotalizacionContact.GetTotalizacionContact(contacto.IdTestigo); return new JavaScriptSerializer().Serialize(""); }
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; } }
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; } }
public string EditCandidato(int relid, string nombre, string partido, string coalicion, string color, string colorpartido, string colorcoalicion) { var db = new edayRoomEntities(); RelacionCandidatoPartidoCoalicion rel = db.RelacionCandidatoPartidoCoalicions.SingleOrDefault(r => r.id == relid); #region check candidato if (rel != null) { Candidato candidato = db.Candidatoes.SingleOrDefault(c => c.nombre.ToLower() == nombre.ToLower()); //Chequeo si tengo que editar directamente al candidato o crear uno nuevo if (rel.Candidato.RelacionCandidatoPartidoCoalicions.Count() > 1) { //Creo nuevo candidato if (rel.Candidato.nombre != nombre || rel.Candidato.color != color) { if (candidato == null) { candidato = new Candidato {nombre = nombre}; db.Candidatoes.AddObject(candidato); } candidato.color = color; rel.id_candidato = candidato.id; } } else { if (rel.Candidato.nombre.ToLower() != nombre.ToLower() || rel.Candidato.color != color) if (candidato == null || rel.Candidato.nombre.ToLower() == nombre.ToLower()) { //Edito candidato existente rel.Candidato.nombre = nombre; rel.Candidato.color = color; } else { db.Candidatoes.DeleteObject(rel.Candidato); rel.id_candidato = candidato.id; } } #endregion #region check partido Partido partidoObj = db.Partidoes.SingleOrDefault(p => p.nombre.ToLower().Trim() == partido.ToLower().Trim()); //Chequeo si tengo que editar directamente al candidato o crear uno nuevo if (rel.Partido.RelacionCandidatoPartidoCoalicions.Count() > 1) { //Creo nuevo candidato if (rel.Partido.nombre != partido || rel.Partido.color != colorpartido) { if (partidoObj == null) { partidoObj = new Partido {nombre = partido}; db.Partidoes.AddObject(partidoObj); } partidoObj.color = colorpartido; rel.id_partido = partidoObj.id; } } else { if (rel.Partido.nombre != partido || rel.Partido.color != colorpartido) { if (partidoObj == null || rel.Partido.nombre == partido) { rel.Partido.nombre = partido; rel.Partido.color = colorpartido; } else { db.Partidoes.DeleteObject(rel.Partido); rel.id_partido = partidoObj.id; } } } #endregion #region check coalicion //Chequeo si tengo que editar directamente al candidato o crear uno nuevo Coalicion coalicionObj = db.Coalicions.SingleOrDefault(c => c.nombre.ToLower() == coalicion.ToLower()); if (rel.Coalicion.RelacionCandidatoPartidoCoalicions.Count() > 1) { //Creo nuevo candidato if (rel.Coalicion.nombre != coalicion || rel.Coalicion.color != colorcoalicion) { if (coalicionObj == null) { coalicionObj = new Coalicion {nombre = coalicion}; db.Coalicions.AddObject(coalicionObj); } coalicionObj.color = colorcoalicion; rel.id_coalicion = coalicionObj.id; } } else { //Busco si el nuevo nombre tiene algun match //Edito candidato existente if (rel.Coalicion.nombre != coalicion || rel.Coalicion.color != colorcoalicion) { if (coalicionObj == null || rel.Coalicion.nombre == coalicion) { rel.Coalicion.nombre = coalicion; rel.Coalicion.color = colorcoalicion; } else { db.Coalicions.DeleteObject(rel.Coalicion); rel.id_coalicion = coalicionObj.id; } } } #endregion } db.SaveChanges(); return ""; }
public string CancelarAlertaTotalizacion(TotalizacionContact contacto, string mensaje) { var db = new edayRoomEntities(); TotalizacionAlerta alerta = (from a in db.TotalizacionAlertas where a.id == contacto.BlockingAlert.Id select a).Single(); alerta.activa = false; db.SaveChanges(); return new JavaScriptSerializer().Serialize(""); }
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 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.participacion && u.grupo == user.grupo && u.id != user.id && !u.paused).ToList(); var groupCount = usersInGroup.Count; var assignedParticipacion = db.AsignacionParticipacions.Where(ap => ap.id_user == user.id).ToList(); var roundRobin = 0; foreach (var ap in assignedParticipacion) { db.AsignacionParticipacions.AddObject(new AsignacionParticipacion { id_mesa = ap.id_mesa, id_original_user = ap.id_original_user ?? user.id, isReplacement = true, id_user = usersInGroup[roundRobin % groupCount].id }); roundRobin++; } } else { var assignedParticipacion = db.AsignacionParticipacions.Where(ap => ap.id_original_user == user.id && ap.isReplacement).ToList(); foreach (var ap in assignedParticipacion) { db.AsignacionParticipacions.DeleteObject(ap); } } db.SaveChanges(); return user.paused.ToString(CultureInfo.InvariantCulture); }
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"); }
public void AddMessageToAlert(int idAlerta, string modulo, string message) { var db = new edayRoomEntities(); var user = db.users.Single(u => u.username == User.Identity.Name); switch (modulo) { case "Participación": case "Participación": db.ParticipacionAlertaMessages.AddObject(new ParticipacionAlertaMessage { id_usuario = user.id, mensaje = message, fecha = DateTime.Now, alerta_id = idAlerta }); break; case "Movilización": case "Movilización": db.MovilizacionAlertaMessages.AddObject(new MovilizacionAlertaMessage() { id_usuario = user.id, mensaje = message, fecha = DateTime.Now, alerta_id = idAlerta }); break; case "Exit Poll": db.ExitPollAlertaMessages.AddObject(new ExitPollAlertaMessage() { id_usuario = user.id, mensaje = message, fecha = DateTime.Now, alerta_id = idAlerta }); break; case "Conteo Rapido": db.QuickCountAlertaMessages.AddObject(new QuickCountAlertaMessage() { id_usuario = user.id, mensaje = message, fecha = DateTime.Now, alerta_id = idAlerta }); break; case "Totalización": db.TotalizacionAlertaMessages.AddObject(new TotalizacionAlertaMessage() { id_usuario = user.id, mensaje = message, fecha = DateTime.Now, alerta_id = idAlerta }); break; } db.SaveChanges(); }
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"; }
public string CrearAlerta(Alerta alerta) { var db = new edayRoomEntities(); db.Alertas.AddObject(alerta); db.SaveChanges(); return new JavaScriptSerializer().Serialize(""); }
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 UpdateSingleTotalizacion(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 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 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 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 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 string UpdateParticipacion(ParticipacionContact contacto, int valor, int cola = 0) { var db = new edayRoomEntities(); var user = db.users.Single(u => u.username == User.Identity.Name); //Reseteo los timelines var oldTimelines = (from pt in db.ParticipacionTimelines where pt.activa && pt.id_mesa == contacto.IdMesa select pt); foreach (var oldTimeline in oldTimelines) { oldTimeline.activa = false; } //Guardar valor en timeline var newDate = contacto.QuickCountActive ? DateTime.Now.AddMinutes(45) : DateTime.Now.AddMinutes(60); var newTimeline = new ParticipacionTimeline { id_mesa = contacto.IdMesa, fecha = newDate, activa = true }; db.ParticipacionTimelines.AddObject(newTimeline); var newParticipacion = new Participacion { fecha = DateTime.Now, hora = DateTime.Now.Hour, min10 = DateTime.Now.Minute/10, min30 = DateTime.Now.Minute/30, conteo = valor, id_mesa = contacto.IdMesa, id_testigo = contacto.IdTestigo, cola = cola, active = true, id_parent = null, id_user = user.id }; //Guardo los datos a nivel de mesa var mesa = db.Mesas.Single(m => m.id == contacto.IdMesa); mesa.participacion = valor; mesa.lastContact = DateTime.Now; mesa.nextContact = newDate; mesa.abierta = true; //Proyeccion de resutados a centro 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.lastParticipacionContact = DateTime.Now; centro.participacionContada = votosRegistrados; centro.participacionProyectada = proyeccionCentro; //Participacion oldParticipacion = db.Participacions.Single(p => p.id == contacto.LastParticipacionId); //oldParticipacion.active = false; db.Participacions.AddObject(newParticipacion); IQueryable<ParticipacionAlerta> alertas = from a in db.ParticipacionAlertas where a.activa && !a.Alerta.blocking && a.id_mesa == contacto.IdMesa select a; foreach (ParticipacionAlerta a in alertas) { a.activa = false; } db.SaveChanges(); return new JavaScriptSerializer().Serialize(""); }
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 LoadUsuarios() { 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); var passwordPackage = new ExcelPackage(); ExcelWorksheet worksheet = package.Workbook.Worksheets[1]; passwordPackage.Workbook.Worksheets.Add("Passwords"); ExcelWorksheet passwordWorksheet = passwordPackage.Workbook.Worksheets["Passwords"]; passwordWorksheet.Cells[1, 1].Value = "Nombre"; passwordWorksheet.Cells[1, 3].Value = "Apellido"; passwordWorksheet.Cells[1, 3].Value = "usuario"; passwordWorksheet.Cells[1, 4].Value = "password"; for (int i = 2; i <= worksheet.Dimension.End.Row; i++) { var nombre = (string) worksheet.Cells[i, 1].Value; string apellido = worksheet.Cells[i, 2].Value == null ? "" : worksheet.Cells[i, 2].Value.ToString(); string grupo = (string) worksheet.Cells[i, 3].Value ?? ""; bool admin = ((string) worksheet.Cells[i, 4].Value).ToLower() == "si"; bool supervisor = ((string)worksheet.Cells[i, 5].Value).ToLower() == "si"; bool leader = ((string)worksheet.Cells[i, 6].Value).ToLower() == "si"; bool participacion = ((string) worksheet.Cells[i, 7].Value).ToLower() == "si"; bool movilizacion = ((string) worksheet.Cells[i, 8].Value).ToLower() == "si"; bool exitpolls = ((string) worksheet.Cells[i, 9].Value).ToLower() == "si"; bool quickcount = ((string) worksheet.Cells[i, 10].Value).ToLower() == "si"; bool totalizacion = ((string) worksheet.Cells[i, 11].Value).ToLower() == "si"; bool dashboard = ((string)worksheet.Cells[i, 12].Value).ToLower() == "si"; bool alertas = ((string)worksheet.Cells[i, 13].Value).ToLower() == "si"; var password = (worksheet.Cells[i, 14].Value == null ? "" : worksheet.Cells[i, 14].Value.ToString()); var u = new EdayRoomUser { Name = nombre + " " + apellido, Password = string.IsNullOrWhiteSpace(password) ? PasswordManagement.GenerateRandomPassword(6) : password, Group = grupo, Admin = admin, Leader = leader, Participacion = participacion, Movilizacion = movilizacion, ExitPolls = exitpolls, QuickCount = quickcount, Totalizacion = totalizacion, Dashboard = dashboard }; u.Username = nombre.Trim().Split(' ').First().ToLower() + "." + apellido.Trim().Split(' ').First().ToLower(); byte[] b = Encoding.GetEncoding(1251).GetBytes(u.Username); u.Username = Encoding.ASCII.GetString(b); 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 = u.Password;//PasswordManagement.GeneratePasswordHash(u.Password, out salt); db.users.AddObject(new user { nombre = nombre, apellido = apellido, username = u.Username, salt = salt, hash = passwordHash, grupo = grupo, admin = admin, leader = leader, participacion = participacion, movilizacion = movilizacion, exitpolls = exitpolls, quickcount = quickcount, totalizacion = totalizacion, dashboard = dashboard, supervisor = supervisor, alertas = alertas }); } db.UserFiles.AddObject(new UserFile { fileName = fiOut.Name }); db.SaveChanges(); package.SaveAs(fiOut); var errores = new List<string> {"error " + fileUpload.FileName}; } return "YEAH"; }
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(""); }