public JsonResult DeleteSelectedReviews(List <Guid> selectedReviewsIds) { if (selectedReviewsIds == null) { return(Json(false)); } try { using (var context = new rkDBContext()) { foreach (var id in selectedReviewsIds) { var reviewToDelete = context.Reviews.SingleOrDefault(x => x.Id == id); context.Reviews.Remove(reviewToDelete); context.SaveChanges(); var fullImagePath = Request.MapPath("~/Images/ReviewImages/" + id + ".png"); if (System.IO.File.Exists(fullImagePath)) { System.IO.File.Delete(fullImagePath); } } } } catch { return(Json(false)); } return(Json(true)); }
// GET: User public ActionResult Index() { if (Session["userId"] == null) { return(RedirectToAction("Index", "Home")); } var userId = (Guid)Session["userId"]; try { using (var context = new rkDBContext()) { var thisUser = context.Users.SingleOrDefault(x => x.Id == userId); var user = new UserViewModel { Firstname = thisUser?.FirstName, Lastname = thisUser?.LastName, Username = thisUser?.Username, Email = thisUser?.Email, ProfileImagePath = userId.ToString() + ".png" }; return(View(user)); } } catch { return(View("Error")); } }
public JsonResult GoToSearchedUser(string userName) { var currentUsername = Session["userName"].ToString(); var searchedUserId = Guid.Empty; var succeeded = 0; try { using (var context = new rkDBContext()) { if (context.Users.Any(x => x.Username == userName)) { succeeded = 1; searchedUserId = context.Users.Where(x => x.Username == userName).Select(x => x.Id).SingleOrDefault(); } } } catch { return(Json(new { currentUsername, searchedUserId, succeeded })); } return(Json(new { currentUsername, searchedUserId, succeeded })); }
public JsonResult GetReviewRatings(Guid reviewId) { int succeeded = 0; List <RatingViewModel> ratingsToReview = null; try { using (var context = new rkDBContext()) { var userToReviewList = context.UserToReviews.Where(x => x.ReviewId == reviewId).ToList(); ratingsToReview = userToReviewList.Select(userToReview => new RatingViewModel { Username = userToReview.User.Username, Rating = userToReview.Rating }).ToList(); } } catch { succeeded = 2; return(Json(new { succeeded, ratingsToReview })); } if (ratingsToReview?.Count > 0) { succeeded = 1; } return(Json(new { succeeded, ratingsToReview })); }
public ActionResult ChangeUserPassword(PasswordViewModel passwordViewModel) { if (Session["userId"] == null) { return(RedirectToAction("Index", "Home")); } if (!ModelState.IsValid) { return(View("EditPassword")); } try { using (var context = new rkDBContext()) { var userId = (Guid)Session["userId"]; var user = context.Users.SingleOrDefault(x => x.Id == userId); if (user == null) { return(RedirectToAction("Login", "Account")); } string hashedPassword; var accController = new AccountController(); using (var md5Data = MD5.Create()) { hashedPassword = accController.GetMd5Hash(md5Data, passwordViewModel.OldPassword + user.Salt); } if (context.Users.Any(x => x.Id == userId && x.Password == hashedPassword)) { string newHashedPassword; using (var md5Data = MD5.Create()) { newHashedPassword = accController.GetMd5Hash(md5Data, passwordViewModel.NewPassword + user.Salt); } user.Password = newHashedPassword; } else { ModelState.AddModelError("WrongCredentialsError", "You submitted the wrong password, try again."); return(View("EditPassword")); } context.Entry(user).State = System.Data.Entity.EntityState.Modified; context.SaveChanges(); } return(RedirectToAction("Index", "User")); } catch { return(RedirectToAction("Error", "Home")); } }
public ActionResult UpdateUser(UserViewModel userViewModel) { if (Session["userId"] == null) { return(RedirectToAction("Index", "Home")); } if (!ModelState.IsValid) { EditUser(); return(View("EditUser")); } try { using (var context = new rkDBContext()) { var userId = (Guid)Session["userId"]; var userToEdit = context.Users.SingleOrDefault(x => x.Id == userId); if ( context.Users.Any( x => x.Username == userViewModel.Username && x.Id != userId || x.Email == userViewModel.Email && x.Id != userId)) { ModelState.AddModelError("AlreadyExistsError", "Username or Email already exists, please choose something else"); //return View("EditUser"); return(View("EditUser", userViewModel)); } if (userToEdit == null) { return(RedirectToAction("Index", "User")); } userToEdit.FirstName = userViewModel.Firstname; userToEdit.LastName = userViewModel.Lastname; userToEdit.Email = userViewModel.Email; userToEdit.Username = userViewModel.Username; Session["userName"] = userToEdit.Username; context.Entry(userToEdit).State = System.Data.Entity.EntityState.Modified; context.SaveChanges(); } return(RedirectToAction("Index", "User")); } catch { return(RedirectToAction("Error", "Home")); } }
public ActionResult ShowReview(Guid?reviewId) { if (Session["userId"] == null) { return(RedirectToAction("Index", "Home")); } if (reviewId == null) { return(RedirectToAction("Reviews", "Review")); } try { using (var context = new rkDBContext()) { var reviewRating = CalculateReviewRating(context.UserToReviews.Where(x => x.ReviewId == reviewId).ToList()); var reviewToShow = context.Reviews.Where(x => x.Id == reviewId).Select(x => new AllReviewsViewModel { Title = x.Title, CreatorUserId = x.CreatorUserId, CreatedBy = x.User.Username, UserRating = x.UserRating, ReviewId = x.Id, Description = x.Description, DisLikes = x.DislikeCount, Likes = x.LikeCount, TotalRating = (decimal)reviewRating, Type = x.Type, ReviewImagePath = reviewId.ToString() + ".png" }).FirstOrDefault(); var reviewComments = context.CommentToReviews.OrderByDescending(x => x.CreatedDate) .Where(x => x.ReviewId == reviewId) .ToList(); foreach (var item in reviewComments) { var commentToAdd = new CommentToReview { Id = item.Id, ReviewId = item.ReviewId, Comment = item.Comment, CreatedDate = item.CreatedDate, User = context.Users.SingleOrDefault(x => x.Id == item.UserId) }; reviewToShow?.CommentToReviewList.Add(commentToAdd); } return(reviewToShow == null?View("Error") : View(reviewToShow)); } } catch { return(RedirectToAction("Error", "Home")); } }
public JsonResult RateReview(int checkedValue, Guid reviewId) { var succeeded = checkedValue; var userId = (Guid)Session["userId"]; try { using (var context = new rkDBContext()) { if (!context.Users.Any(x => x.Id == userId)) { succeeded = 6; return(Json(new { succeeded })); } var isValid = context.UserToReviews.Any(x => x.UserId == userId && x.ReviewId == reviewId); var userToReview = context.UserToReviews.SingleOrDefault(x => x.UserId == userId && x.ReviewId == reviewId); if (isValid && userToReview != null) { userToReview.Rating = checkedValue; context.SaveChanges(); } else if (!isValid) { var newUserToReview = new UserToReview { Id = Guid.NewGuid(), UserId = userId, ReviewId = reviewId, HasLiked = false, Rating = checkedValue }; context.UserToReviews.Add(newUserToReview); context.SaveChanges(); } else { succeeded = 0; } return(Json(new { succeeded, rating = CalculateReviewRating(context.UserToReviews.Where(x => x.ReviewId == reviewId).ToList()) })); } } catch { succeeded = 6; return(Json(new { succeeded })); } }
public ActionResult RegisterUser(RegisterViewModel newUserToRegister) { if (!ModelState.IsValid) { return(View("Register")); } try { using (var context = new rkDBContext()) { if ( context.Users.Any( x => x.Username == newUserToRegister.Username || x.Email == newUserToRegister.Email)) { ModelState.AddModelError("ExistsError", "Username or Email already exist, please choose something else."); return(View("Register")); } // Hash pw and generate salt for it. var newUserId = Guid.NewGuid(); string hashedAndSaltedPassword; var salt = GenerateSalt(); using (var md5Hash = MD5.Create()) { hashedAndSaltedPassword = GetMd5Hash(md5Hash, newUserToRegister.Password + salt); } var newUser = new User { Id = newUserId, FirstName = newUserToRegister.Firstname, LastName = newUserToRegister.Lastname, Username = newUserToRegister.Username, Password = hashedAndSaltedPassword, Email = newUserToRegister.Email, Salt = salt }; context.Users.Add(newUser); context.SaveChanges(); ModelState.Clear(); } } catch { return(RedirectToAction("Error", "Home")); } return(RedirectToAction("Login", "Account")); }
public ActionResult CreateNewReview(ReviewViewModel reviewViewModel) { if (Session["userId"] == null) { return(RedirectToAction("Index", "Home")); } if (!ModelState.IsValid || reviewViewModel.UserRating == 0) { ModelState.AddModelError("RatingError", "You have to set a rating."); var returnModel = new ReviewViewModel(); return(View("NewReview", returnModel)); } if (Session["userId"] == null) { return(RedirectToAction("Index", "Home")); } var currentUserId = (Guid)Session["userId"]; try { using (var context = new rkDBContext()) { var newReview = new Review { Id = Guid.NewGuid(), CreatorUserId = currentUserId, Title = reviewViewModel.Title, Description = reviewViewModel.Description, Type = reviewViewModel.Type, UserRating = reviewViewModel.UserRating, CreatedDate = DateTime.Now }; UploadPicture(newReview.Id); context.Reviews.Add(newReview); context.SaveChanges(); } } catch { return(RedirectToAction("Error", "Home")); } return(RedirectToAction("Index", "Review")); }
public ActionResult DifferentUser(Guid?creatorUserId) { if (Session["userId"] == null) { return(RedirectToAction("Index", "Home")); } if (creatorUserId == null) { return(RedirectToAction("Index", "Home")); } try { using (var context = new rkDBContext()) { var user = context.Users.Where(x => x.Id == creatorUserId).Select(x => new UserViewModel { Username = x.Username, Firstname = x.FirstName, Lastname = x.LastName, Email = x.Email, ProfileImagePath = x.Id.ToString() + ".png" }).SingleOrDefault(); var userReviews = context.Reviews.Where(x => x.CreatorUserId == creatorUserId).ToList(); foreach (var userReview in userReviews) { var reviewToAdd = new ReviewViewModel { ReviewId = userReview.Id, Title = userReview.Title, Description = userReview.Description, CreatedDate = userReview.CreatedDate.ToShortDateString(), Type = userReview.Type, UserRating = userReview.UserRating, }; user?.ReviewViewModelList.Add(reviewToAdd); } return(user == null?View("Error") : View(user)); } } catch { return(View("Error")); } }
public JsonResult CreateCommentToReview(AllReviewsViewModel allReviewsViewModel) { var succeeded = false; if (!ModelState.IsValid) { return(Json(allReviewsViewModel)); } try { using (var context = new rkDBContext()) { var userId = (Guid)Session["userId"]; if (context.Users.Any(x => x.Id == userId)) { var user = context.Users.SingleOrDefault(x => x.Id == userId); var newCommentToReview = new CommentToReview { Id = Guid.NewGuid(), ReviewId = allReviewsViewModel.ReviewId, UserId = (Guid)userId, Comment = allReviewsViewModel.CommentToAdd, CreatedDate = DateTime.Now }; allReviewsViewModel.CreatedBy = user?.Username; allReviewsViewModel.CreatedDate = DateTime.Now.ToShortDateString(); context.CommentToReviews.Add(newCommentToReview); succeeded = true; context.SaveChanges(); } else { return(Json(new { succeeded })); } } } catch { return(Json(new { succeeded })); } return(Json(new { succeeded, allReviewsViewModel })); }
public JsonResult SearchReviews(string searchValue) { var succeeded = false; var reviews = new List <AllReviewsViewModel>(); try { using (var context = new rkDBContext()) { if (!context.Reviews.Any(x => x.Title == searchValue)) { return(Json(new { reviews, succeeded })); } succeeded = true; var reviewsToShow = context.Reviews.Where(x => x.Title == searchValue).ToList(); reviews.AddRange(from review in reviewsToShow let user = context.Users.SingleOrDefault(x => x.Id == review.CreatorUserId) select new AllReviewsViewModel { Title = review.Title, Type = review.Type, ReviewId = review.Id, Likes = review.LikeCount, UserRating = review.UserRating, DisLikes = review.DislikeCount, Description = review.Description, CreatedBy = review.User.Username, TotalRating = review.ReviewRating, CreatorUserId = review.CreatorUserId, CreatedDate = review.CreatedDate.ToShortDateString(), HasProfilePicture = ConfirmProfilePicture(user.Id) }); } } catch { return(Json(new { reviews, succeeded })); } return(Json(new { reviews, succeeded })); }
public ActionResult EditUser() { if (Session["userId"] == null) { return(RedirectToAction("Index", "Home")); } UserViewModel userViewModelToReturn = null; try { using (var context = new rkDBContext()) { Guid userId; if (Session["userId"] != null) { userId = (Guid)Session["userId"]; } else { return(RedirectToAction("Index", "Home")); } var user = context.Users.SingleOrDefault(x => x.Id == userId); if (user != null) { userViewModelToReturn = new UserViewModel { Firstname = user.FirstName, Lastname = user.LastName, Email = user.Email, Username = user.Username, ProfileImagePath = user.Id.ToString() + ".png", } } ; } return(userViewModelToReturn == null?View("Error") : View(userViewModelToReturn)); } catch { return(View("Error")); } }
public JsonResult SearchUsers() { List <string> userList = null; int succeeded = 0; try { using (var context = new rkDBContext()) { userList = context.Users.Select(x => x.Username).ToList(); } } catch { return(Json(new { succeeded, userList })); } succeeded = 1; return(Json(new { succeeded, userList })); }
public ActionResult UserLogin(LoginViewModel userToLogin) { if (!ModelState.IsValid) { return(View("Login")); } try { using (var context = new rkDBContext()) { // Get salt for current user string userSalt = context.Users.Where(x => x.Username == userToLogin.Username) .Select(x => x.Salt) .FirstOrDefault(); string hashedPassword; using (var md5Hash = MD5.Create()) { hashedPassword = GetMd5Hash(md5Hash, userToLogin.Password + userSalt); } if (context.Users.Any(x => x.Username == userToLogin.Username && x.Password == hashedPassword)) { FormsAuthentication.SetAuthCookie(userToLogin.Username, false); var userId = context.Users.Where( x => x.Username == userToLogin.Username && x.Password == hashedPassword) .Select(x => x.Id).FirstOrDefault(); Session["userId"] = userId; Session["userName"] = userToLogin.Username; return(RedirectToAction("Reviews", "Review")); } ModelState.AddModelError("CredentialError", "Wrong username or password."); return(View("Login")); } } catch { return(View("Error")); } }
public ActionResult EditReview(Guid?reviewId) { if (Session["userId"] == null) { return(RedirectToAction("Index", "Home")); } if (reviewId == null) { return(RedirectToAction("Index", "Review")); } var userId = (Guid)Session["userId"]; try { using (var context = new rkDBContext()) { var review = context.Reviews.FirstOrDefault(c => c.Id == reviewId); if (userId != review?.CreatorUserId) { return(View("Error")); } var reviewToEdit = context.Reviews.Where(x => x.Id == reviewId).Select(x => new ReviewViewModel { Title = x.Title, Description = x.Description, Type = x.Type, UserRating = x.UserRating, ReviewId = x.Id, ReviewImagePath = reviewId.ToString() + ".png" }).SingleOrDefault(); return(reviewToEdit == null?View("Error") : View(reviewToEdit)); } } catch { return(RedirectToAction("Error", "Home")); } }
public ActionResult EditSelectedReview(ReviewViewModel reviewViewModel) { if (Session["userId"] == null) { return(RedirectToAction("Index", "Home")); } if (!ModelState.IsValid) { return(View("Index", "Reviews")); } try { using (var context = new rkDBContext()) { var reviewToUpdate = context.Reviews.SingleOrDefault(x => x.Id == reviewViewModel.ReviewId); if (reviewToUpdate != null) { reviewToUpdate.Title = reviewViewModel.Title; reviewToUpdate.Description = reviewViewModel.Description; reviewToUpdate.Type = reviewViewModel.Type; reviewToUpdate.UserRating = reviewViewModel.UserRating; } else { return(RedirectToAction("Error", "Home")); } context.SaveChanges(); } } catch { return(RedirectToAction("Error", "Home")); } return(RedirectToAction("Index", "Review")); }
// GET: Review public ActionResult Index() { if (Session["userId"] == null) { return(RedirectToAction("Login", "Account")); } var userId = (Guid)Session["userId"]; List <Review> allUserReviews; try { using (var context = new rkDBContext()) { allUserReviews = context.Reviews.Where(x => x.CreatorUserId == userId).ToList(); } var reviewList = allUserReviews.Select(review => new ReviewViewModel { ReviewId = review.Id, Title = review.Title, Description = review.Description, CreatedDate = review.CreatedDate.ToShortDateString(), UserRating = review.UserRating, Type = review.Type, }).ToList(); return(View(reviewList)); } catch { return(RedirectToAction("Error", "Home")); } }
public ActionResult DeleteUser() { var userId = (Guid)Session["userId"]; try { using (var context = new rkDBContext()) { var userToDelete = context.Users.SingleOrDefault(x => x.Id == userId); var reviewsToDelete = context.Reviews.Where(x => x.CreatorUserId == userId).ToList(); // Go through all reviews where "userToDelete" is owner foreach (var review in reviewsToDelete) { // Remove all comments from "userToDelete"'s reviews. var commentToReviewToDelete = context.CommentToReviews.Where(x => x.UserId == userId).ToList(); foreach (var commentToReview in commentToReviewToDelete) { context.CommentToReviews.Remove(commentToReview); } // Remove HasLiked, Ratings etc. var userToReviewToRemove = context.UserToReviews.Where(x => x.UserId == userId).ToList(); foreach (var userToReview in userToReviewToRemove) { context.UserToReviews.Remove(userToReview); } // Remove review. context.Reviews.Remove(review); } // Remove "userId"'s comments var commentsByUser = context.CommentToReviews.Where(x => x.UserId == userId).ToList(); foreach (var comment in commentsByUser) { context.CommentToReviews.Remove(comment); } // Remove "userId"'s ratings var likesOrDislikesByUser = context.UserToReviews.Where(x => x.UserId == userId).ToList(); foreach (var likeOrDislikeByUser in likesOrDislikesByUser) { context.UserToReviews.Remove(likeOrDislikeByUser); } // Remove user context.Users.Remove(userToDelete); context.SaveChanges(); } var fullPath = Request.MapPath("~/Images/ProfileImages/" + userId + ".png"); if (System.IO.File.Exists(fullPath)) { System.IO.File.Delete(fullPath); } FormsAuthentication.SignOut(); Session["userId"] = null; return(RedirectToAction("Index", "Home")); } catch { return(RedirectToAction("Error", "Home")); } }
public JsonResult SortReviews(int sortValue) { var succeeded = false; var reviews = new List <AllReviewsViewModel>(); try { using (var context = new rkDBContext()) { succeeded = true; var reviewsToShow = context.Reviews.ToList(); reviews.AddRange(from review in reviewsToShow let user = context.Users.SingleOrDefault(x => x.Id == review.CreatorUserId) select new AllReviewsViewModel { Title = review.Title, Type = review.Type, ReviewId = review.Id, Likes = review.LikeCount, UserRating = review.UserRating, DisLikes = review.DislikeCount, Description = review.Description, CreatedBy = review.User.Username, TotalRating = review.ReviewRating, CreatorUserId = review.CreatorUserId, CreatedDate = review.CreatedDate.ToShortDateString(), HasProfilePicture = ConfirmProfilePicture(user.Id) }); } } catch { return(Json(new { succeeded, reviews })); } switch (sortValue) { case 1: reviews = reviews.OrderBy(x => x.Title).ToList(); break; case 2: reviews = reviews.OrderBy(x => x.UserRating).ToList(); break; case 3: reviews = reviews.OrderBy(x => x.Likes).ToList(); break; case 4: reviews = reviews.OrderBy(x => x.DisLikes).ToList(); break; case 5: reviews = reviews.OrderBy(x => x.CreatedDate).ToList(); break; case 6: reviews = reviews.OrderBy(x => x.Type).ToList(); break; } return(Json(new { succeeded, reviews })); }
public ActionResult Reviews() { if (Session["userId"] == null) { return(RedirectToAction("Index", "Home")); } var currentUserId = (Guid)Session["userId"]; try { using (var context = new rkDBContext()) { var allReviews = context.Reviews.ToList(); if (allReviews.Count <= 0) { return(View()); } var allReviewsViewModelList = new List <AllReviewsViewModel>(); foreach (var review in allReviews) { // Fetch userinfo var reviewAuthor = context.Users.FirstOrDefault(x => x.Id == review.CreatorUserId); // Calculate totalRating var userToReviewList = context.UserToReviews.Where(x => x.ReviewId == review.Id).ToList(); var calculateReviewRating = CalculateReviewRating(userToReviewList); if (calculateReviewRating == null) { continue; } var totalRating = (decimal)calculateReviewRating; // Fill AllReviewsViewModel with reviewValue to send it to the view if (reviewAuthor == null) { return(View(allReviewsViewModelList)); } var reviewToAdd = new AllReviewsViewModel { ReviewId = review.Id, CreatorUserId = reviewAuthor.Id, CreatedBy = reviewAuthor.Username, Title = review.Title, CreatedDate = review.CreatedDate.ToShortDateString(), Description = review.Description, DisLikes = review.DislikeCount, Likes = review.LikeCount, TotalRating = totalRating, UserRating = review.UserRating, HasProfilePicture = ConfirmProfilePicture(reviewAuthor.Id), Type = review.Type }; allReviewsViewModelList.Add(reviewToAdd); } return(View(allReviewsViewModelList)); } } catch { return(RedirectToAction("Error", "Home")); } }
public JsonResult LikeOrDislikeReview(int likeOrDislike, Guid reviewId) { var succeeded = 0; var userId = (Guid)Session["userId"]; if (likeOrDislike == 1) { try { using (var context = new rkDBContext()) { if (!context.Users.Any(x => x.Id == userId)) { succeeded = 3; return(Json(succeeded)); } var isValid = context.UserToReviews.Any(x => x.UserId == userId && x.ReviewId == reviewId); var userToReview = context.UserToReviews.SingleOrDefault(x => x.UserId == userId && x.ReviewId == reviewId); if (!isValid) { succeeded = 1; var userHasLiked = new UserToReview { Id = Guid.NewGuid(), UserId = userId, ReviewId = reviewId, HasLiked = true }; var reviewToLike = context.Reviews.SingleOrDefault(x => x.Id == reviewId); if (reviewToLike != null) { reviewToLike.LikeCount++; } context.UserToReviews.Add(userHasLiked); context.SaveChanges(); } else if (userToReview != null && userToReview.HasLiked != true) { succeeded = 1; var reviewToLike = context.Reviews.SingleOrDefault(x => x.Id == reviewId); if (reviewToLike != null) { reviewToLike.LikeCount++; } userToReview.HasLiked = true; context.SaveChanges(); } else { return(Json(succeeded)); } } } catch { return(Json(succeeded)); } return(Json(succeeded)); } try { using (var context = new rkDBContext()) { if (!context.Users.Any(x => x.Id == userId)) { succeeded = 3; return(Json(succeeded)); } var isValid = context.UserToReviews.Any(x => x.UserId == userId && x.ReviewId == reviewId); var userToReview = context.UserToReviews.SingleOrDefault(x => x.UserId == userId && x.ReviewId == reviewId); if (userToReview != null && !isValid) { succeeded = 2; var userHasLiked = new UserToReview { Id = Guid.NewGuid(), UserId = userId, ReviewId = reviewId, HasLiked = true }; var reviewToDislike = context.Reviews.SingleOrDefault(x => x.Id == reviewId); if (reviewToDislike != null) { reviewToDislike.DislikeCount++; } userToReview.HasLiked = true; context.SaveChanges(); } else if (userToReview != null && userToReview.HasLiked != true) { succeeded = 2; var reviewToDislike = context.Reviews.SingleOrDefault(x => x.Id == reviewId); if (reviewToDislike != null) { reviewToDislike.DislikeCount++; } userToReview.HasLiked = true; context.SaveChanges(); } else { return(Json(succeeded)); } } } catch { return(Json(succeeded)); } return(Json(succeeded)); }