public IEnumerable<GetFriendListRespond> Get(string id, string classRoomId) { var areArgumentsValid = !string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(classRoomId); if (!areArgumentsValid) return Enumerable.Empty<GetFriendListRespond>(); var canAccessToTheClassRoom = _userprofileRepo.CheckAccessPermissionToSelectedClassRoom(id, classRoomId); if (!canAccessToTheClassRoom) return Enumerable.Empty<GetFriendListRespond>(); var allStudentsInTheClassRoom = _userprofileRepo.GetUserProfilesByClassRoomId(classRoomId).ToList(); if (!allStudentsInTheClassRoom.Any()) return Enumerable.Empty<GetFriendListRespond>(); var friendRequests = _friendRequestRepo.GetFriendRequestByUserProfileId(id).ToList(); var students = allStudentsInTheClassRoom .Where(it => it.id != id) .OrderBy(it => it.id) .Select(it => { var isTeacher = it.Subscriptions.Where(s => !s.DeletedDate.HasValue && s.ClassRoomId == classRoomId) .Any(s => s.Role == UserProfile.AccountRole.Teacher); var selectedRequest = friendRequests.FirstOrDefault(req => req.ToUserProfileId.Equals(it.id)); var status = selectedRequest == null ? FriendRequest.RelationStatus.Unfriend : selectedRequest.Status; var result = new GetFriendListRespond { UserProfileId = it.id, Name = it.Name, ImageUrl = it.ImageProfileUrl, Status = status, RequestId = selectedRequest == null ? null : selectedRequest.id, IsTeacher = isTeacher }; return result; }) .ToList(); return students; }
public IEnumerable<GetFriendListRespond> GetFriendForSelfPurchase(string id, string classRoomId) { var areArgumentsValid = !string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(classRoomId); if (!areArgumentsValid) return Enumerable.Empty<GetFriendListRespond>(); var canAccessToTheClassRoom = _userprofileRepo.CheckAccessPermissionToSelectedClassRoom(id, classRoomId); if (!canAccessToTheClassRoom) return Enumerable.Empty<GetFriendListRespond>(); var selectedClassRoom = _classRoomRepo.GetClassRoomById(classRoomId); var isClassRoomValid = selectedClassRoom != null && !selectedClassRoom.DeletedDate.HasValue && selectedClassRoom.IsPublic; if (!isClassRoomValid) return Enumerable.Empty<GetFriendListRespond>(); var friendRequests = _friendRequestRepo.GetFriendRequestByUserProfileId(id) .Where(it => it.Status != FriendRequest.RelationStatus.Unfriend) .ToList(); var relatedUserProfiles = _userprofileRepo.GetUserProfileById(friendRequests.Select(it => it.ToUserProfileId).Distinct()); var students = relatedUserProfiles .Where(it => it.id != id) .OrderBy(it => it.id) .Select(it => { var selectedRequest = friendRequests.FirstOrDefault(req => req.ToUserProfileId.Equals(it.id)); if (selectedRequest == null) return null; var result = new GetFriendListRespond { UserProfileId = it.id, Name = it.Name, ImageUrl = it.ImageProfileUrl, Status = selectedRequest.Status, RequestId = selectedRequest.id, }; return result; }).Where(it => it != null) .OrderBy(it => it.Name) .ToList(); return students; }