Exemplo n.º 1
0
        public async Task <int> CreateReview(ReviewCreationDto reviewCreationDto, string email)
        {
            var user = await _userManager.FindByEmailAsync(email);

            using (IUnitOfWork unitOfWork = _unitOfWorkFactory.Create())
            {
                var reviews = unitOfWork.Repository <Review>();
                var orders  = unitOfWork.Repository <Order>();

                var order = orders.Get(reviewCreationDto.OrderId);

                if (order == null || order.MechanicId != user.Id)
                {
                    return(0);
                }

                var review = new Review {
                    Description = reviewCreationDto.Description, Date = DateTime.Now.ToUniversalTime(), OrderId = reviewCreationDto.OrderId, MechanicId = user.Id
                };

                reviews.Add(review);

                await unitOfWork.SaveAsync();

                order.ReviewId = review.Id;
                order.Status   = OrderStatus.Done;

                await unitOfWork.SaveAsync();

                return(review.Id);
            }
        }
Exemplo n.º 2
0
        public async Task <ActionResult> Post(int movieId, ReviewCreationDto reviewCreatinDto)
        {
            var userId = HttpContext.User.Claims.FirstOrDefault(u => u.Type == ClaimTypes.NameIdentifier).Value;

            var reviewExists = await _context.Reviews.AnyAsync(r => r.MovieId == movieId && r.UserId == userId);

            if (reviewExists)
            {
                return(BadRequest("The user has already make a review."));
            }

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

            review.UserId  = userId;
            review.MovieId = movieId;

            _context.Add(review);

            await _context.SaveChangesAsync();

            return(NoContent());
        }
Exemplo n.º 3
0
        public async Task <ActionResult <IEnumerable <ReviewDto> > > Put(int movieId, int reviewId, ReviewCreationDto reviewCreatinDto)
        {
            var review = await _context.Reviews.FirstOrDefaultAsync(r => r.Id == reviewId);

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

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

            if (review.UserId != userId)
            {
                return(BadRequest("You are not allowed to update this review because you did not created it."));
            }

            review = _mapper.Map(reviewCreatinDto, review);

            await _context.SaveChangesAsync();

            return(NoContent());
        }
        public async Task <IActionResult> CreateReview([FromBody] ReviewCreationDto reviewCreationDto)
        {
            string email = User.Identity.Name;

            return(Ok(await _reviewService.CreateReview(reviewCreationDto, email)));
        }