Exemple #1
0
        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)));
            }
        }
Exemple #2
0
        //[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));
            }
        }