public async Task<ActionResult> DeleteAusencia(int eventoID, int participanteID, int tandaAusencia) { if (eventoID != 0 && participanteID != 0) { Ausencia ausencia = new Ausencia(); TandaAusencia TandaAusencia = (TandaAusencia)tandaAusencia; ausencia = await db.Ausencias.Where(e => e.eventoID == eventoID).Where(p => p.participanteID == participanteID).Where(t => t.TandaAusencia == TandaAusencia).FirstOrDefaultAsync(); if (ausencia != null) { db.Ausencias.Remove(ausencia); await db.SaveChangesAsync(); } } return RedirectToAction("Index"); }
public async Task<ActionResult> CreateAusencia(int eventoID, int participanteID, int tandaAusencia) { if (eventoID != 0 && participanteID != 0) { Ausencia ausencia = new Ausencia(); ausencia.eventoID = eventoID; ausencia.participanteID = participanteID; ausencia.TandaAusencia = (TandaAusencia)tandaAusencia; int isRepeated = await db.Ausencias.Select(x => new { x.eventoID, x.participanteID, x.TandaAusencia }).Where(e => e.eventoID == eventoID).Where(p => p.participanteID == participanteID).Where(t => t.TandaAusencia == ausencia.TandaAusencia).CountAsync(); if (isRepeated < 1) { db.Ausencias.Add(ausencia); await db.SaveChangesAsync(); } } return RedirectToAction("Index"); }
public async Task<ActionResult> ParticipantesMover(ParticipantesMoverVm participantesMover) { List<Participante> participantes = new List<Participante>(); List<int> participantesId = new List<int>(); int grupoDestId = 0; string[] participantesIDs; string grupoDestStrId = ""; string[] values = Request.Form.GetValues("grupoDestID"); if (values != null) { var notEmptyValues = values.Where(x => !string.IsNullOrEmpty(x)); if (notEmptyValues.Count() == 1) grupoDestStrId = notEmptyValues.First(); else grupoDestStrId = notEmptyValues.Last(); } string participantesStrIDs = Request.QueryString["participantes"]; if (grupoDestStrId != null && participantesStrIDs != null) { grupoDestId = Convert.ToInt32(grupoDestStrId); participantesIDs = participantesStrIDs!= null? participantesStrIDs.Split(',') : new string[]{"0"}; foreach (var p in participantesIDs) { int idParticipante = Convert.ToInt32(p); Participante participante = await db.Participantes.FindAsync(idParticipante); if (participante != null) { participantes.Add(participante); } } } Grupo grupoSrc = await db.Grupoes.FindAsync(participantesMover.grupoSrcID); Grupo grupoDest = await db.Grupoes.FindAsync(grupoDestId); //Borra el participante del grupo actual if (grupoDest != null && grupoSrc != null & grupoSrc.ID != grupoDest.ID && participantesMover != null) { foreach (var participante in participantes) { participante.grupos.Remove(grupoSrc); participante.grupos.Add(grupoDest); int ausenciasCount = participante.ausencias.Count(); if (ausenciasCount > 0) { List<Ausencia> ausencias = participante.ausencias.ToList(); List<Calendario> calendarios = grupoDest.calendarios.ToList(); foreach(var ausencia in ausencias){ foreach (var calendario in calendarios.Where(e => e.eventos.Any(t => t.TallerID == ausencia.Evento.TallerID))) { Ausencia ausenciaNew = new Ausencia(); ausenciaNew.Participante = participante; ausenciaNew.participanteID = participante.ID; ausenciaNew.eventoID = calendario.eventos.Where(t => t.TallerID == ausencia.Evento.TallerID).SingleOrDefault().ID; bool isRepeatedAusencia = await db.Ausencias.Select(x => new{x.participanteID, x.eventoID}).Where(p => p.participanteID == ausenciaNew.participanteID).AnyAsync(e => e.eventoID == ausenciaNew.eventoID); if (!isRepeatedAusencia) { participante.ausencias.Add(ausenciaNew); } } db.Ausencias.Remove(ausencia); db.SaveChanges(); } } await db.SaveChangesAsync(); } } else { ParticipantesMoverVm partcipantesMover = new ParticipantesMoverVm(); ModelState.AddModelError("Error", "Ha ocurrido un error"); //return PartialView(partcipantesMover); } return RedirectToAction("Details", "Grupo", new { id = grupoSrc.ID, diplomadoID = grupoSrc.DiplomadoID }); }