public bool LikeAnswer(int answerId) { Answer answer = GetAnswerById(answerId); if (answer == null) { return false; } var currentUser = GetCurrentUser(); if (currentUser == null) { return false; } if (_context.AnswerLikes.Any(like => like.ApplicationUserId == currentUser.Id && like.AnswerId == answer.AnswerId && like.Active)) { return false; } else { var answerLike = new AnswerLike() { Active = true, Answer = answer, ApplicationUser = currentUser, TimeStamp = DateTime.Now }; using (var transaction = _context.Database.BeginTransaction()) { _context.AnswerLikes.Add(answerLike); try { _context.SaveChanges(); answerLike.AddNotification(); _context.SaveChanges(); transaction.Commit(); return true; } catch (Exception e) { return false; } } } }
private ActionResult GetAnswerLikedNotificationPartialView(AnswerLike answerLike, bool seen) { var model = GetAnswerLikeNotificationModel(answerLike, seen); return PartialView("AnswerLikeNotification", model); }
private AnswerLikeNotificationViewModel GetAnswerLikeNotificationModel(AnswerLike like, bool seen) { var type = IsCurrentUser(like.Answer.User.UserName) ? AnswerLikeNotificationViewModel.AnswerLikeNotificationTypeEnum.CurrentUserAnswer : AnswerLikeNotificationViewModel.AnswerLikeNotificationTypeEnum.OtherUsers; var model = new AnswerLikeNotificationViewModel(like, seen) { AnswerId = like.AnswerId, AnswerLikeNotificationType = type, AnswerUser = GetProfileFor(like.Answer.User), LikingUser = GetProfileFor(like.ApplicationUser), TimeStamp = like.TimeStamp }; return model; }