예제 #1
0
        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");
        }
예제 #2
0
        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");
        }
예제 #3
0
        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 });
        }