Esempio n. 1
0
        public async Task <ActionResult> Post(int peliculaId, [FromBody] ReviewCreacionDTO reviewCreacionDTO)
        {
            //var existePelicula = await context.Peliculas.AnyAsync(x => x.Id == peliculaId);

            //if (!existePelicula)
            //{
            //    return NotFound();
            //}

            var usuarioId = HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier).Value;

            var reviewExiste = await context.Reviews.AnyAsync(x => x.PeliculaId == peliculaId && x.UsuarioId == usuarioId);

            if (reviewExiste)
            {
                return(BadRequest("El usuario ya ha escrito un review de la pelicula"));
            }

            var review = mapper.Map <Review>(reviewCreacionDTO);

            review.PeliculaId = peliculaId;
            review.UsuarioId  = usuarioId;

            context.Add(review);
            await context.SaveChangesAsync();

            return(NoContent());
        }
Esempio n. 2
0
        public async Task <ActionResult> Put(int peliculaId, int reviewId, [FromBody] ReviewCreacionDTO reviewCreacionDTO)
        {
            //var existePelicula = await context.Peliculas.AnyAsync(x => x.Id == peliculaId);

            //if (!existePelicula)
            //{
            //    return NotFound();
            //}

            var reviewDB = await context.Reviews.FirstOrDefaultAsync(x => x.Id == reviewId);

            if (reviewDB == null)
            {
                return(NotFound());
            }

            var usuarioId = HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier).Value;

            if (reviewDB.UsuarioId != usuarioId)
            {
                return(BadRequest("No tiene permiso de editar este review."));
            }

            reviewDB = mapper.Map(reviewCreacionDTO, reviewDB);

            await context.SaveChangesAsync();

            return(NoContent());
        }
        public async Task CrearReview()
        {
            var nombreBD = Guid.NewGuid().ToString();
            var contexto = ConstruirContext(nombreBD);

            CrearPeliculas(nombreBD);

            var peliculaId = contexto.Peliculas.Select(x => x.Id).First();
            var contexto2  = ConstruirContext(nombreBD);

            var mapper     = ConfigurarAutoMapper();
            var controller = new ReviewController(contexto2, mapper);

            controller.ControllerContext = ConstruirControllerContext();

            var reviewCreacionDTO = new ReviewCreacionDTO()
            {
                Puntuacion = 5
            };
            var respuesta = await controller.Post(peliculaId, reviewCreacionDTO);

            var valor = respuesta as NoContentResult;

            Assert.IsNotNull(valor);

            var contexto3 = ConstruirContext(nombreBD);
            var reviewDB  = contexto3.Reviews.First();

            Assert.AreEqual(usuarioPorDefectoId, reviewDB.UsuarioId);
        }
        public async Task UsuarioNoPuedeCrearDosReviewsParaLaMismaPelicula()
        {
            var nombreBD = Guid.NewGuid().ToString();
            var contexto = ConstruirContext(nombreBD);

            CrearPeliculas(nombreBD);

            var peliculaId = contexto.Peliculas.Select(x => x.Id).First();
            var review1    = new Review()
            {
                PeliculaId = peliculaId,
                UsuarioId  = usuarioPorDefectoId,
                Puntuacion = 5
            };

            contexto.Add(review1);
            await contexto.SaveChangesAsync();

            var contexto2 = ConstruirContext(nombreBD);
            var mapper    = ConfigurarAutoMapper();

            var controller = new ReviewController(contexto2, mapper);

            controller.ControllerContext = ConstruirControllerContext();

            var reviewCreacionDTO = new ReviewCreacionDTO {
                Puntuacion = 5
            };
            var respuesta = await controller.Post(peliculaId, reviewCreacionDTO);

            var valor = respuesta as IStatusCodeActionResult;

            Assert.AreEqual(400, valor.StatusCode.Value);
        }
Esempio n. 5
0
        public async Task <ActionResult> Post(int peliculaId, [FromBody] ReviewCreacionDTO reviewCreacionDTO)
        {
            var existePelicula = await _context.Peliculas.AnyAsync(p => p.Id == peliculaId);

            if (!existePelicula)
            {
                return(NotFound());
            }

            var usuarioId = HttpContext.User.Claims.FirstOrDefault(u => u.Type == ClaimTypes.NameIdentifier).Value;

            var reviewExiste =
                await _context.Reviews.AnyAsync(r => r.PeliculaId == peliculaId && r.UsuarioId == usuarioId);

            if (reviewExiste)
            {
                return(BadRequest("El usuario ya ha escriot un review de esta película..!"));
            }

            var review = _mapper.Map <Review>(reviewCreacionDTO);

            review.PeliculaId = peliculaId;
            review.UsuarioId  = usuarioId;

            _context.Add(review);
            await _context.SaveChangesAsync();

            return(NoContent());
        }
        public async Task <ActionResult> Put(int peliculaId, int reviewId, [FromBody] ReviewCreacionDTO reviewCreacionDTO)
        {
            var reviewDB = await _context.Reviews.FirstOrDefaultAsync(r => r.Id == reviewId);

            if (reviewDB == null)
            {
                return(NotFound());
            }

            var usuarioId = HttpContext.User.Claims.FirstOrDefault(u => u.Type == ClaimTypes.NameIdentifier).Value;

            if (reviewDB.UsuarioId != usuarioId)
            {
                return(BadRequest("No tiene permisos de editar este review"));
            }

            reviewDB = _mapper.Map(reviewCreacionDTO, reviewDB);

            await _context.SaveChangesAsync();

            return(NoContent());
        }
        public async Task <ActionResult> Put(int peliculaId, int reviewId,
                                             [FromBody] ReviewCreacionDTO reviewCreacionDTO)
        {
            var reviewDB = await context.Reviews.FirstOrDefaultAsync(x => x.Id == reviewId);

            if (reviewDB == null)
            {
                return(NotFound());
            }

            var usuarioId = HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier).Value;

            if (reviewDB.UsuarioId != usuarioId)
            {
                return(Forbid());
            }

            reviewDB = mapper.Map(reviewCreacionDTO, reviewDB);

            await context.SaveChangesAsync();

            return(NoContent());
        }