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)); } }
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); } }