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