public void WhenUserProfileIdClickTheLikeButtonForCommentInTheLessonOfClassRoom(string userprofileId, string commentId, string lessonId, string classRoomId) { var mockUserActivityRepo = ScenarioContext.Current.Get <Moq.Mock <IUserActivityRepository> >(); mockUserActivityRepo.Setup(it => it.UpsertUserActivity(It.IsAny <UserActivity>())); var mockLikeCommentRepo = ScenarioContext.Current.Get <Moq.Mock <ILikeCommentRepository> >(); mockLikeCommentRepo.Setup(it => it.UpsertLikeComment(It.IsAny <LikeComment>())); var mockCommentRepo = ScenarioContext.Current.Get <Moq.Mock <ICommentRepository> >(); mockCommentRepo.Setup(it => it.UpsertComment(It.IsAny <Comment>())); var commentCtrl = ScenarioContext.Current.Get <CommentController>(); var body = new LikeCommentRequest { ClassRoomId = classRoomId, LessonId = lessonId, CommentId = commentId, UserProfileId = userprofileId }; commentCtrl.Like(body); }
public async Task <int> Create(LikeCommentRequest likeRequest) { var like = new LikeCommentDetail(); if (likeRequest != null) { like.Comment = likeRequest.IdComment; like.Reaction = likeRequest.Reaction; like.UserId = likeRequest.UserId; like.VideoId = likeRequest.VideoId; _context.LikeComments.Add(like); return(await _context.SaveChangesAsync()); } return(0); }
public void Like(LikeCommentRequest body) { var areArgumentsValid = body != null && !string.IsNullOrEmpty(body.ClassRoomId) && !string.IsNullOrEmpty(body.CommentId) && !string.IsNullOrEmpty(body.LessonId) && !string.IsNullOrEmpty(body.UserProfileId); if (!areArgumentsValid) { return; } var canAccessToTheClassRoom = _userprofileRepo.CheckAccessPermissionToSelectedClassRoom(body.UserProfileId, body.ClassRoomId); if (!canAccessToTheClassRoom) { return; } var now = _dateTime.GetCurrentTime(); var canAccessToTheClassLesson = _classCalendarRepo.CheckAccessPermissionToSelectedClassLesson(body.ClassRoomId, body.LessonId, now); if (!canAccessToTheClassLesson) { return; } var selectedComment = _commentRepo.GetCommentById(body.CommentId); if (selectedComment == null) { return; } var likeComments = _likeCommentRepo.GetLikeCommentByCommentId(body.CommentId) .Where(it => !it.DeletedDate.HasValue) .ToList(); var likedCommentsByThisUser = likeComments .Where(it => it.LikedByUserProfileId.Equals(body.UserProfileId, StringComparison.CurrentCultureIgnoreCase)); var isUnlike = likedCommentsByThisUser.Any(); if (isUnlike) { foreach (var item in likedCommentsByThisUser) { item.DeletedDate = now; _likeCommentRepo.UpsertLikeComment(item); } } else { var isCommentOwner = selectedComment.CreatedByUserProfileId.Equals(body.UserProfileId, StringComparison.CurrentCultureIgnoreCase); if (!isCommentOwner) { var canLikeThisComment = _userprofileRepo.CheckAccessPermissionToUserProfile(selectedComment.CreatedByUserProfileId); if (!canLikeThisComment) { return; } } var selectedUserActivity = _userActivityRepo.GetUserActivityByUserProfileIdAndClassRoomId(body.UserProfileId, body.ClassRoomId); if (selectedUserActivity == null) { return; } var selectedLessonActivity = selectedUserActivity.LessonActivities.FirstOrDefault(it => it.LessonId.Equals(body.LessonId)); if (selectedLessonActivity == null) { return; } selectedLessonActivity.ParticipationAmount++; _userActivityRepo.UpsertUserActivity(selectedUserActivity); var newLike = new LikeComment { id = Guid.NewGuid().ToString(), ClassRoomId = body.ClassRoomId, LessonId = body.LessonId, CommentId = body.CommentId, LikedByUserProfileId = body.UserProfileId, CreatedDate = now }; likeComments.Add(newLike); _likeCommentRepo.UpsertLikeComment(newLike); } selectedComment.TotalLikes = likeComments.Where(it => !it.DeletedDate.HasValue).Count(); _commentRepo.UpsertComment(selectedComment); _notificationCtrl.SendNotification(); }