Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
        }