public async Task <IActionResult> DeleteConfirmed(string str) { ApplicationUserRatings applicationUserRatings = await _colibriDbContext.ApplicationUserRatings.FindAsync(str); if (applicationUserRatings == null) { return(NotFound()); } else { // remove the Entry from the DB _colibriDbContext.ApplicationUserRatings.Remove(applicationUserRatings); // save the Changes asynchronously await _colibriDbContext.SaveChangesAsync(); // avoid Refreshing the POST Operation -> Redirect return(RedirectToAction(nameof(Index))); } }
//[ValidateAntiForgeryToken] public async Task <IActionResult> RateUserPost(string id, string command) { // Check the State Model Binding if (ModelState.IsValid) { // Security Claims System.Security.Claims.ClaimsPrincipal currentUser = this.User; // Claims Identity var claimsIdentity = (ClaimsIdentity)this.User.Identity; var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier); // to overwrite a Rating, first get the old One // get the User from the DB var userFromDb = await _colibriDbContext.ApplicationUsers .Where(m => m.Id == id) .FirstOrDefaultAsync(); // another Table Rating for the Description var userRatingFromDb = await _colibriDbContext.ApplicationUserRatings .Where(p => p.ApplicationUserRatedId == id) .FirstOrDefaultAsync(); // current User var currentUserId = claim.Value; if (userRatingFromDb != null) { // check, if already rated if (userRatingFromDb.ApplicationUserRatingId == currentUserId) { TempData["msg"] = "<script>alert('Already rated!');</script>"; TempData["returnButton"] = "<div><p><b>Already rated!</b></p></div>"; TempData["returnBackButton"] = "return"; TempData["showApplicationUserRating"] = "showApplicationUserRating"; TempData["applicationUserId"] = userFromDb.Id; ViewData["BackToList"] = _localizer["BackToListText"]; ViewData["ShowAllRatings"] = _localizer["ShowAllRatingsText"]; ViewData["ShowRating"] = _localizer["ShowRatingText"]; return(View()); } else { int tempUserRating = 0; if (command.Equals("1")) { tempUserRating = 1; } else if (command.Equals("2")) { tempUserRating = 2; } else if (command.Equals("3")) { tempUserRating = 3; } else if (command.Equals("4")) { tempUserRating = 4; } else if (command.Equals("5")) { tempUserRating = 5; } // go to the Product Table // calculate the new ProductRating if (userFromDb.NumberOfApplicationUserRates == 0) { userFromDb.UserRating = tempUserRating; } else { userFromDb.UserRating = Math.Round((userFromDb.UserRating * userFromDb.NumberOfApplicationUserRates + tempUserRating) / (userFromDb.NumberOfApplicationUserRates + 1), 2); } // Rating Create ApplicationUserRatings applicationUserRatings = new ApplicationUserRatings() { ApplicationUserRatedId = userFromDb.Id, ApplicationUserRatedName = userFromDb.UserName, ApplicationUserRatingId = claim.Value, ApplicationUserRatingName = claim.Subject.Name, ApplicationUserRate = tempUserRating, CreatedOn = System.DateTime.Now }; // update the ApplicationRating Entity _colibriDbContext.ApplicationUserRatings.Add(applicationUserRatings); // increment the Number of Application User Rates userFromDb.NumberOfApplicationUserRates += 1; // save the Changes in DB await _colibriDbContext.SaveChangesAsync(); } return(View(ApplicationUserViewModel)); } else { int tempUserRating = 0; if (command.Equals("1")) { tempUserRating = 1; } else if (command.Equals("2")) { tempUserRating = 2; } else if (command.Equals("3")) { tempUserRating = 3; } else if (command.Equals("4")) { tempUserRating = 4; } else if (command.Equals("5")) { tempUserRating = 5; } if (userFromDb.NumberOfApplicationUserRates == 0) { userFromDb.UserRating = tempUserRating; } else { userFromDb.UserRating = Math.Round((userFromDb.UserRating * userFromDb.NumberOfApplicationUserRates + tempUserRating) / (userFromDb.NumberOfApplicationUserRates + 1), 2); } // Rating Create ApplicationUserRatings applicationUserRatings = new ApplicationUserRatings() { ApplicationUserRatedId = userFromDb.Id, ApplicationUserRatedName = userFromDb.UserName, ApplicationUserRatingId = claim.Value, ApplicationUserRatingName = claim.Subject.Name, ApplicationUserRate = tempUserRating, CreatedOn = System.DateTime.Now }; // update the ProductsRatings Entity _colibriDbContext.ApplicationUserRatings.Add(applicationUserRatings); // increment the Number of Product Rates of the Product userFromDb.NumberOfApplicationUserRates += 1; // save the Changes in DB await _colibriDbContext.SaveChangesAsync(); } return(RedirectToAction(nameof(Details))); } else { // one can simply return to the Form View again for Correction return(View(ApplicationUserViewModel)); } }