Exemple #1
0
        public async Task <IActionResult> AddStudent(int groupId, string studentId)
        {
            if (!await IsSystemAdministratorAsync().ConfigureAwait(false))
            {
                return(StatusCode((int)HttpStatusCode.Forbidden, new ErrorResponse("Only system administrator can add students to group directly")));
            }

            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.AddUserToGroupAsync(groupId, studentId).ConfigureAwait(false);

            if (groupMember == null)
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new ErrorResponse($"User {studentId} is already a student of group {groupId}")));
            }

            await slideCheckingsRepo.ResetManualCheckingLimitsForUser(groupMember.Group.CourseId, studentId);

            return(Ok(new SuccessResponseWithMessage($"Student {studentId} is added to group {groupId}")));
        }
Exemple #2
0
        public async Task <IActionResult> Join(Guid inviteHash)
        {
            var group = await groupsRepo.FindGroupByInviteHashAsync(inviteHash).ConfigureAwait(false);

            var groupMember = await groupMembersRepo.AddUserToGroupAsync(group.Id, UserId).ConfigureAwait(false);

            if (groupMember == null)
            {
                return(StatusCode((int)HttpStatusCode.Conflict, new ErrorResponse($"User {UserId} is already a student of group {group.Id}")));
            }

            return(Ok(new SuccessResponseWithMessage($"Student {UserId} is added to group {group.Id}")));
        }