Exemple #1
0
        public async Task <IActionResult> CopyStudents(int groupId, int destinationGroupId, CopyStudentsParameters parameters)
        {
            var destinationGroup = await groupsRepo.FindGroupByIdAsync(destinationGroupId).ConfigureAwait(false);

            if (destinationGroup == null)
            {
                return(NotFound(new ErrorResponse($"Group {destinationGroupId} not found")));
            }

            var isDestinationGroupVisible = await groupAccessesRepo.IsGroupVisibleForUserAsync(destinationGroup, UserId).ConfigureAwait(false);

            if (!isDestinationGroupVisible)
            {
                return(StatusCode((int)HttpStatusCode.Forbidden, new ErrorResponse($"You have no access to group {destinationGroupId}")));
            }

            var newMembers = await groupMembersRepo.CopyUsersFromOneGroupToAnotherAsync(groupId, destinationGroupId, parameters.UserIds).ConfigureAwait(false);

            await notificationsRepo.AddNotificationAsync(
                destinationGroup.CourseId,
                new GroupMembersHaveBeenAddedNotification(destinationGroupId, parameters.UserIds, usersRepo),
                UserId
                ).ConfigureAwait(false);

            return(Ok(new SuccessResponseWithMessage($"{newMembers.Count} students have been copied from group {groupId} to group {destinationGroupId}")));
        }