Ejemplo n.º 1
0
 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;
             }
         }
     }
 }
Ejemplo n.º 2
0
 private ActionResult GetAnswerLikedNotificationPartialView(AnswerLike answerLike, bool seen)
 {
     var model = GetAnswerLikeNotificationModel(answerLike, seen);
     return PartialView("AnswerLikeNotification", model);
 }
Ejemplo n.º 3
0
        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;
        }