public async Task <ActionResult <SalMuroConEtapas> > GetMuro(int idMuro) { // Se valida que el usuario sea dueño del muro... UsuarioMuro usuarioMuro = await _context.UsuarioMuro .Include(um => um.IdMuroNavigation) .SingleOrDefaultAsync(um => um.IdMuro == idMuro && um.IdDuenno == Conectado.ID(this) && um.Permiso == 1 ); if (usuarioMuro == null) { ModelState.AddModelError( nameof(idMuro), "El muro ingresado no existe o no eres dueño de éste."); return(ValidationProblem()); } // Se crea la salida solicitada... SalMuroConEtapas salida = new SalMuroConEtapas() { IdMuro = usuarioMuro.IdMuroNavigation.Id, NombreMuro = usuarioMuro.IdMuroNavigation.Nombre, FechaCreacion = usuarioMuro.IdMuroNavigation.FechaCreacion.ToString("yyyyMMddHHmmss"), FechaUltimaModificacion = usuarioMuro.IdMuroNavigation.FechaUltimaModificacion.ToString("yyyyMMddHHmmss"), Permiso = usuarioMuro.Permiso }; // Se obtiene una lista de las etapas asociadas al muro... ICollection <Etapa> etapas = await _context.Etapa .Where(e => e.IdMuro == idMuro) .OrderBy(e => e.Posicion) .ToListAsync(); // Se agregan las etapas a la salida... foreach (Etapa etapa in etapas) { SalEtapaBase etapaBase = new SalEtapaBase() { Id = etapa.Id, Nombre = etapa.Nombre, Posicion = etapa.Posicion }; salida.Etapas.Add(etapaBase); } return(salida); }
public async Task <ActionResult <SalMuroConEtapas> > PostMuros(EntMuroEtapa entradaMuro) { // Se crea el nuevo muro... Muro muro = new Muro() { Nombre = entradaMuro.Nombre, FechaCreacion = DateTime.Now, FechaUltimaModificacion = DateTime.Now }; await _context.Muro.AddAsync(muro); await _context.SaveChangesAsync(); // Se crea la relación usuario/muro... UsuarioMuro usuarioMuro = new UsuarioMuro() { IdDuenno = Conectado.ID(this), IdMuro = muro.Id, Permiso = 1 }; await _context.UsuarioMuro.AddAsync(usuarioMuro); // Se crean las etapas del muro... List <Etapa> etapasCreadas = new List <Etapa>(); foreach (EntEtapaBase entEtapa in entradaMuro.Etapas) { Etapa etapa = new Etapa() { IdMuro = muro.Id, Nombre = entEtapa.Nombre, Posicion = entEtapa.Posicion }; await _context.Etapa.AddAsync(etapa); etapasCreadas.Add(etapa); } await _context.SaveChangesAsync(); SalMuroConEtapas salida = new SalMuroConEtapas() { IdMuro = muro.Id, NombreMuro = muro.Nombre, FechaCreacion = muro.FechaCreacion.ToString("yyyyMMddHHmmss"), FechaUltimaModificacion = muro.FechaUltimaModificacion.ToString("yyyyMMddHHmmss"), Permiso = usuarioMuro.Permiso }; foreach (Etapa etapaCreada in etapasCreadas) { SalEtapaBase salidaEtapa = new SalEtapaBase() { Id = etapaCreada.Id, Nombre = etapaCreada.Nombre, Posicion = etapaCreada.Posicion }; salida.Etapas.Add(salidaEtapa); } return(salida); }