Example #1
0
        public async Task <Result <GetFavoriteProductModel> > SaveFavoriteProductAsync(Guid customerId, SendFavoriteProductModel model)
        {
            if (await ProductRepository.FindAsync(model.ProductId) == null)
            {
                return(Result <GetFavoriteProductModel> .BadRequest($"Product with Id {model.ProductId} does not exist."));
            }

            if (await FavoriteProductRepository.GetFirstOrDefaultAsync(predicate: fp => fp.ProductId == model.ProductId && fp.CustomerId == customerId) != null)
            {
                return(Result <GetFavoriteProductModel> .BadRequest($"Product with Id {model.ProductId} is already a favorite product of customer with Id {customerId}."));
            }

            var favorite = Mapper.Map <FavoriteProduct>(model);

            favorite.CustomerId = customerId;

            await FavoriteProductRepository.InsertAsync(favorite);

            await UnitOfWork.SaveChangesAsync();

            return(Result <GetFavoriteProductModel> .Success(Mapper.Map <GetFavoriteProductModel>(favorite)));
        }
Example #2
0
 public async Task <ActionResult <GetFavoriteProductModel> > PostFavoriteProduct(Guid id, [FromBody] SendFavoriteProductModel model)
 {
     return(GetResult(await FavoriteProductService.SaveFavoriteProductAsync(id, model)));
 }