Exemple #1
0
        public async Task <IActionResult> RemoveStudent(int groupId, string studentId)
        {
            var hasEditAccess = await groupAccessesRepo.HasUserEditAccessToGroupAsync(groupId, UserId).ConfigureAwait(false);

            if (!hasEditAccess)
            {
                return(StatusCode((int)HttpStatusCode.Forbidden, new ErrorResponse("You have no edit access to this group")));
            }

            var group = await groupsRepo.FindGroupByIdAsync(groupId).ConfigureAwait(false);

            var user = await usersRepo.FindUserById(studentId).ConfigureAwait(false);

            if (user == null)
            {
                return(NotFound(new ErrorResponse($"Can't find user with id {studentId}")));
            }

            var groupMember = await groupMembersRepo.RemoveUserFromGroupAsync(groupId, studentId).ConfigureAwait(false);

            if (groupMember == null)
            {
                return(NotFound(new ErrorResponse($"User {studentId} is not a student of group {groupId}")));
            }

            await notificationsRepo.AddNotification(
                group.CourseId,
                new GroupMembersHaveBeenRemovedNotification(groupId, new List <string> {
                studentId
            }, usersRepo),
                UserId
                ).ConfigureAwait(false);

            return(Ok(new SuccessResponseWithMessage($"Student {studentId} is removed from group {groupId}")));
        }
Exemple #2
0
        public async Task <IActionResult> RemoveStudent(int groupId, string studentId)
        {
            var group = await groupsRepo.FindGroupByIdAsync(groupId).ConfigureAwait(false);

            var user = await usersRepo.FindUserByIdAsync(studentId).ConfigureAwait(false);

            if (user == null)
            {
                return(NotFound(new ErrorResponse($"Can't find user with id {studentId}")));
            }

            var groupMember = await groupMembersRepo.RemoveUserFromGroupAsync(groupId, studentId).ConfigureAwait(false);

            if (groupMember == null)
            {
                return(NotFound(new ErrorResponse($"User {studentId} is not a student of group {groupId}")));
            }

            await notificationsRepo.AddNotificationAsync(
                group.CourseId,
                new GroupMembersHaveBeenRemovedNotification(groupId, new List <string> {
                studentId
            }, usersRepo),
                UserId
                ).ConfigureAwait(false);

            return(Ok(new SuccessResponseWithMessage($"Student {studentId} is removed from group {groupId}")));
        }