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