Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- declare(strict_types=1);
- namespace App\Blockchain\Services\Withdrawal;
- use App\Blockchain\Domain\Withdrawal\Process\AuthorizationMethodResolver;
- use App\Blockchain\Domain\Withdrawal\Process\WithdrawalProcessNotFoundException;
- use App\Blockchain\Domain\Withdrawal\Process\WithdrawalProcessRepository;
- use App\Services\AtomicExecutor;
- final class AuthorizeWithdrawalService
- {
- /**
- * @var AtomicExecutor
- */
- private $atomicExecutor;
- /**
- * @var AuthorizationMethodResolver
- */
- private $authorizationMethodResolver;
- /**
- * @var WithdrawalProcessRepository
- */
- private $withdrawalProcessRepository;
- public function __construct(
- AtomicExecutor $atomicExecutor,
- AuthorizationMethodResolver $authorizationMethodResolver,
- WithdrawalProcessRepository $withdrawalProcessRepository
- ) {
- $this->atomicExecutor = $atomicExecutor;
- $this->authorizationMethodResolver = $authorizationMethodResolver;
- $this->withdrawalProcessRepository = $withdrawalProcessRepository;
- }
- /**
- * @throws WithdrawalProcessNotFoundException
- */
- public function execute(AuthorizeWithdrawal $request): void
- {
- $do = function () use ($request): void {
- $withdrawalProcess = $this->withdrawalProcessRepository
- ->getWithdrawalProcessById($request->getWithdrawalProcessId());
- $authorizationProvider = $this->authorizationMethodResolver
- ->getAuthorizationProviderByUser($withdrawalProcess->getCreatedBy());
- $withdrawalProcess->requestAuthorization($authorizationProvider);
- };
- $this->atomicExecutor->execute($do);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement