Wallet operations

This commit is contained in:
Fairuz
2021-10-07 21:15:29 +08:00
parent e94ef44928
commit d56442e6ff
6 changed files with 39 additions and 66 deletions
@@ -9,7 +9,7 @@ use App\Classes\Modules\Wallets\Services\ListsWallet;
use App\Classes\Modules\Wallets\Services\FetchesWallet;
use App\Classes\ValueObjects\Constants\TransactionType;
use App\Classes\Modules\Wallets\Standards\Rules\CanListWallet;
use App\Classes\Modules\Wallets\Standards\Rules\CanWithdrawWallet;
use App\Http\Resources\WalletResource;
use App\Classes\Modules\Transactions\Processors\CreateWalletTransactionProcessor;
@@ -30,13 +30,13 @@ class WithdrawWalletLogic extends AbstractControllerLogic
];
}
/** @var ListWallet */
/** @var FetchesWallet */
private $fetchesWallet;
/** @var CanCreateCompanyWallet */
private $canListWallet;
/** @var CanWithdrawWallet */
private $canWithdrawWallet;
/** @var CreateInvoiceTransactionProcessor */
/** @var CreateWalletTransactionProcessor */
private $createWalletTransactionProcessor;
/**
@@ -45,8 +45,9 @@ class WithdrawWalletLogic extends AbstractControllerLogic
* @param GeneratesWalletCode $generatesWalletCode
* @param CanCreateCompanyWallet $canCreateCompanyWallet
*/
public function __construct(FetchesWallet $fetchesWallet, CreateWalletTransactionProcessor $createWalletTransactionProcessor)
public function __construct(CanWithdrawWallet $canWithdrawWallet, FetchesWallet $fetchesWallet, CreateWalletTransactionProcessor $createWalletTransactionProcessor)
{
$this->canWithdrawWallet = $canWithdrawWallet;
$this->fetchesWallet = $fetchesWallet;
$this->createWalletTransactionProcessor = $createWalletTransactionProcessor;
}
@@ -58,13 +59,14 @@ class WithdrawWalletLogic extends AbstractControllerLogic
*/
public function logic(Request $request) : JsonResponse
{
//$this->canListWallet->passes();
$wallet = $this->fetchesWallet->execute(['id' => $request->input('wallet_id')]);
$walletOject = new WalletObject( $wallet->company->id, $wallet->currency_id, $wallet->code, $request->input('amount'));
$this->canWithdrawWallet->passes($walletOject);
$transaction = $this->createWalletTransactionProcessor->execute($wallet, $walletOject, TransactionType::WITHDRAW);
return $this->resourceResponse(new WalletResource($wallet));
}
}