public async Task <IActionResult> Post([FromBody] OrderCreateModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var newOrder = _mapper.Map <OrderCreateModel, Order>(model);

                    newOrder.UserId = CurrentUserId;

                    _repository.AddOrder(newOrder);
                    if (await _repository.SaveAllAsync())
                    {
                        newOrder = _repository.GetOrderByUserId(CurrentUserId, newOrder.Id);

                        await _trackOrderService.ProcessNewOder(newOrder);

                        var orderVm = _mapper.Map <Order, OrderViewModel>(newOrder);
                        return(Created($"/api/orders/{orderVm.OrderId}", orderVm));
                    }
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Failed to save a new order: {ex}");
            }

            return(BadRequest("Failed to save new order"));
        }
        public async Task <IActionResult> Post(int productId, [FromBody] ReviewCreateModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var review = _mapper.Map <ReviewCreateModel, Review>(model);
                    review.ProductId = productId;

                    //var currentUser = await _userManager.FindByNameAsync(User.Identity.Name);
                    //review.User = currentUser;

                    review.UserId = CurrentUserId;
                    _repository.AddReview(review);
                    if (await _repository.SaveAllAsync())
                    {
                        var result = await _repository.GetReviewAsync(review.Id);

                        await _trackReviewService.ProcessReview(result);

                        var dto = _mapper.Map <Review, ReviewViewModel>(result);

                        return(CreatedAtRoute("GetReview", new { productId = dto.ProductId, id = dto.Id }, dto));
                    }
                }
                else
                {
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError($"Failed to save a new review: {ex}");
            }

            return(BadRequest("Failed to save new review"));
        }