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