public async Task <IActionResult> ProductRate(UserProductRatePostRequestcs model)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    throw new Exception("Petición de puntuar inválida");
                }

                return(Ok(await _userService.RateProductAsync(model, _userManager, _apiDbContext)));
            }
            catch (Exception e)
            {
                return(StatusCode(500, e.Message));
            }
        }
Esempio n. 2
0
        public async Task <int> RateProductAsync(UserProductRatePostRequestcs model, UserManager <ApplicationUser> userManager, ApiDbContext apiDbContext)
        {
            try
            {
                ApplicationUser user = await userManager.FindByIdAsync(model.UserId.ToString());

                if (user == null)
                {
                    throw new Exception($"Usuario con id {model.UserId} no encontrado");
                }

                Product product = await apiDbContext.Products.FindAsync(model.Productd);

                if (product == null)
                {
                    throw new Exception($"Producto con id {model.Productd} no encontrado");
                }

                User_Product_Rating userRate = await apiDbContext.Users_Products_Ratings.FindAsync(new { model.UserId, model.Productd });

                if (userRate == null)
                {
                    await apiDbContext.Users_Products_Ratings.AddAsync(new User_Product_Rating
                    {
                        Rate      = model.Rate,
                        Date      = DateTime.Now,
                        Comment   = model.Comment,
                        UserId    = model.UserId,
                        ProductId = model.Productd
                    });
                }
                else
                {
                    userRate.Rate    = model.Rate;
                    userRate.Date    = DateTime.Now;
                    userRate.Comment = model.Comment;
                }

                await apiDbContext.SaveChangesAsync();

                return(model.Productd);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }