public IActionResult AddReview(string id) { var model = new ReviewForRecipeViewModel { RecipeId = id, }; return(this.View(model)); }
public async Task <IActionResult> AddReview(ReviewForRecipeViewModel model) { model.UserId = this.userManager.GetUserId(this.User); if (!this.ModelState.IsValid) { return(this.View(model.RecipeId)); } await this.recipesService.AddReview(model); return(this.RedirectToAction(nameof(this.ById), new { id = model.RecipeId })); }
public async Task <string> AddReview(ReviewForRecipeViewModel model) { this.recipeRepository.All().FirstOrDefault(x => x.Id == model.RecipeId).Reviews.Add(new Review { Comment = model.SanitizedReview, Score = model.Score, RecipeId = model.RecipeId, UserId = model.UserId, }); await this.recipeRepository.SaveChangesAsync(); return(model.RecipeId); }
public async Task AddReviewShouldCreateANewReviewToRecipe() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options; AutoMapperConfig.RegisterMappings(Assembly.Load("CookingBook.Web.ViewModels")); var dbContext = new ApplicationDbContext(options); var recipeRepo = new EfDeletableEntityRepository <Recipe>(dbContext); var nutritionRepo = new EfDeletableEntityRepository <NutritionValue>(dbContext); var productRepo = new EfDeletableEntityRepository <Product>(dbContext); var userRepo = new EfDeletableEntityRepository <ApplicationUser>(dbContext); var service = new RecipesService(recipeRepo, nutritionRepo, productRepo, userRepo); var category = new Category(); var nutrValue = new NutritionValue(); var user = new ApplicationUser(); var prod = new Collection <RecipeByIdProductsViewModel>(); var recipeCreateViewModel = new RecipeCreateViewModel { CategoryId = 1, CookProcedure = "cookProc", Photo = "photo", Serving = 1, Title = "addNew", CookTime = 2, NutritionValue = new RecipeCreateNutritionValuesViewModel { Calories = 1, Carbohydrates = 1, Fats = 1, Fiber = 1, Protein = 1, Salt = 1, Sugar = 1, }, Products = new List <RecipeCreateProductsViewModel>(), }; string userId = "trayan"; StringValues sv = new StringValues("one"); StringValues sk = new StringValues("1"); var recipeResult = await service.CreateAsync(recipeCreateViewModel, userId, sv, sk); var model = new ReviewForRecipeViewModel { Comment = "commentOne", RecipeId = recipeResult, Score = 5, UserId = "trayan", CreatedOn = DateTime.Now, }; var reviewResult = await service.AddReview(model); Assert.IsType <string>(reviewResult); Assert.NotEmpty(reviewResult); Assert.NotNull(reviewResult); Assert.True(dbContext.Reviews.Any()); }