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}"))); }
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}"))); }