public PostNewDiscussionRespond Post(PostNewDiscussionRequest body) { var areArgumentsValid = body != null && !string.IsNullOrEmpty(body.ClassRoomId) && !string.IsNullOrEmpty(body.CommentId) && !string.IsNullOrEmpty(body.Description) && !string.IsNullOrEmpty(body.LessonId) && !string.IsNullOrEmpty(body.UserProfileId); if (!areArgumentsValid) { return(null); } UserProfile userprofile; var canAccessToTheClassRoom = _userprofileRepo.CheckAccessPermissionToSelectedClassRoom(body.UserProfileId, body.ClassRoomId, out userprofile); if (!canAccessToTheClassRoom) { return(null); } var now = _dateTime.GetCurrentTime(); var isTeacher = userprofile.Subscriptions.Any(it => !it.DeletedDate.HasValue && it.ClassRoomId == body.ClassRoomId && it.Role == UserProfile.AccountRole.Teacher); var canAccessToTheClassLesson = _classCalendarRepo.CheckAccessPermissionToSelectedClassLesson(body.ClassRoomId, body.LessonId, now, isTeacher); if (!canAccessToTheClassLesson) { return(null); } var selectedComment = _commentRepo.GetCommentById(body.CommentId); var isCommentValid = selectedComment != null && selectedComment.LessonId.Equals(body.LessonId, StringComparison.CurrentCultureIgnoreCase) && selectedComment.id.Equals(body.CommentId, StringComparison.CurrentCultureIgnoreCase) && !selectedComment.DeletedDate.HasValue; if (!isCommentValid) { return(null); } var selectedUserActivity = _userActivityRepo.GetUserActivityByUserProfileIdAndClassRoomId(body.UserProfileId, body.ClassRoomId); var isUserActivityValid = selectedUserActivity != null && !selectedUserActivity.DeletedDate.HasValue; if (!isUserActivityValid) { return(null); } var selectedLesson = selectedUserActivity.LessonActivities.FirstOrDefault(it => it.LessonId == body.LessonId); if (selectedLesson == null) { return(null); } if (!isTeacher) { var isCommentOwner = selectedComment.CreatedByUserProfileId.Equals(body.UserProfileId, StringComparison.CurrentCultureIgnoreCase); if (!isCommentOwner) { var canPostNewDiscussion = _userprofileRepo.CheckAccessPermissionToUserProfile(selectedComment.CreatedByUserProfileId); if (!canPostNewDiscussion) { return(null); } } } var id = Guid.NewGuid().ToString(); var discussions = selectedComment.Discussions.ToList(); var newDiscussion = new Comment.Discussion { id = id, CreatedByUserProfileId = body.UserProfileId, CreatorDisplayName = userprofile.Name, CreatorImageUrl = userprofile.ImageProfileUrl, Description = body.Description, CreatedDate = now, }; discussions.Add(newDiscussion); selectedComment.Discussions = discussions; _commentRepo.UpsertComment(selectedComment); selectedLesson.ParticipationAmount++; _userActivityRepo.UpsertUserActivity(selectedUserActivity); _notificationCtrl.SendNotification(); return(new PostNewDiscussionRespond { ActualCommentId = id }); }
public PostNewCommentRespond Post(PostNewCommentRequest body) { var areArgumentsValid = body != null && !string.IsNullOrEmpty(body.ClassRoomId) && !string.IsNullOrEmpty(body.Description) && !string.IsNullOrEmpty(body.LessonId) && !string.IsNullOrEmpty(body.UserProfileId); if (!areArgumentsValid) { return(null); } UserProfile userprofile; var canAccessToTheClassRoom = _userprofileRepo.CheckAccessPermissionToSelectedClassRoom(body.UserProfileId, body.ClassRoomId, out userprofile); if (!canAccessToTheClassRoom) { return(null); } var now = _dateTime.GetCurrentTime(); var canAccessToTheClassLesson = _classCalendarRepo.CheckAccessPermissionToSelectedClassLesson(body.ClassRoomId, body.LessonId, now); if (!canAccessToTheClassLesson) { return(null); } var selectedUserActivity = _userActivityRepo.GetUserActivityByUserProfileIdAndClassRoomId(body.UserProfileId, body.ClassRoomId); if (selectedUserActivity == null) { return(null); } var selectedLesson = selectedUserActivity.LessonActivities.FirstOrDefault(it => it.LessonId == body.LessonId); if (selectedLesson == null) { return(null); } var id = Guid.NewGuid().ToString(); var newComment = new Comment { id = id, ClassRoomId = body.ClassRoomId, CreatedByUserProfileId = body.UserProfileId, Description = body.Description, LessonId = body.LessonId, CreatedDate = now, CreatorDisplayName = userprofile.Name, CreatorImageUrl = userprofile.ImageProfileUrl, Discussions = Enumerable.Empty <Comment.Discussion>(), }; _commentRepo.UpsertComment(newComment); selectedLesson.CreatedCommentAmount++; _userActivityRepo.UpsertUserActivity(selectedUserActivity); _notificationCtrl.SendNotification(); return(new PostNewCommentRespond { ActualCommentId = id }); }
public void Post(LikeLessonRequest body) { var isArgumentValid = body != null && !string.IsNullOrEmpty(body.ClassRoomId) && !string.IsNullOrEmpty(body.LessonId) && !string.IsNullOrEmpty(body.UserProfileId); if (!isArgumentValid) { 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 selectedClassRoom = _classRoomRepo.GetClassRoomById(body.ClassRoomId); var isLikeConditionValid = selectedClassRoom != null && selectedClassRoom.Lessons.Any(it => it.id == body.LessonId); if (!isLikeConditionValid) { return; } var likeLessons = _likeLessonRepo.GetLikeLessonsByLessonId(body.LessonId) .Where(it => !it.DeletedDate.HasValue) .ToList(); if (likeLessons == null) { return; } var likedLessonsByThisUser = likeLessons .Where(it => it.LikedByUserProfileId.Equals(body.UserProfileId, StringComparison.CurrentCultureIgnoreCase)); var isUnlike = likedLessonsByThisUser.Any(); if (isUnlike) { foreach (var item in likedLessonsByThisUser) { item.DeletedDate = now; _likeLessonRepo.UpsertLikeLesson(item); } } else { 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 LikeLesson { id = Guid.NewGuid().ToString(), ClassRoomId = body.ClassRoomId, LessonId = body.LessonId, LikedByUserProfileId = body.UserProfileId, CreatedDate = now }; likeLessons.Add(newLike); _likeLessonRepo.UpsertLikeLesson(newLike); } var selectedLesson = selectedClassRoom.Lessons.First(it => it.id == body.LessonId); selectedLesson.TotalLikes = likeLessons.Where(it => !it.DeletedDate.HasValue).Count(); _classRoomRepo.UpsertClassRoom(selectedClassRoom); _notificationCtrl.SendNotification(); }