Beispiel #1
0
        public async Task <BaseCommandResponse> Handle(UpdateWorkerStatusCommand request, CancellationToken cancellationToken)
        {
            var user = await userStore.FindByIdAsync(request.GetUser(), cancellationToken);

            if (user == null)
            {
                throw new UserDoesNotExistException();
            }
            if (!user.IsAdmin)
            {
                throw new UnauthorizedAccessException("User does not have permission for that action");
            }

            var workerToUpdate = await _workerRepository.GetWorkerByIdAsync(request.WorkerId);

            if (workerToUpdate == null)
            {
                return(new BaseCommandResponse(new InfoMessage("Worker does not exist")));
            }

            var newStatus = await _statusRepository.GetStatusByIdAsync(request.StatusId);

            if (newStatus == null)
            {
                return(new BaseCommandResponse(new InfoMessage("Status does not exist")));
            }

            await _workerRepository.UpdateWorkerStatusAsync(workerToUpdate.WorkerId, newStatus.StatusId);

            return(new BaseCommandResponse($"Worker {workerToUpdate.FirstName} {workerToUpdate.LastName} updated to status {newStatus.Name}"));
        }