mirror of
https://gitlab.com/uldvstar/exchange-2.0.git
synced 2026-08-19 04:24:16 +00:00
77 lines
2.9 KiB
PHP
77 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Transactions\Processors;
|
|
|
|
use App\Classes\Modules\Bookings\Services\CalculatesBookingPayableAmount;
|
|
use App\Classes\Modules\Bookings\Services\CalculatesBookingTransferredAmount;
|
|
use App\Classes\Modules\ServiceTypes\Services\FetchesServiceConfigurations;
|
|
use App\Classes\Modules\Transactions\Services\ListsTransactions;
|
|
use App\Classes\Modules\Transactions\Services\CreatesWalletTransaction;
|
|
use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber;
|
|
use App\Classes\Modules\Bookings\Services\CalculatesBookingPaidAmount;
|
|
use App\Classes\Modules\Bookings\Services\CalculatesBookingCurrencyAverageRate;
|
|
use App\Classes\Modules\Companies\Services\FetchesCompany;
|
|
use App\Classes\Modules\Documents\Services\CreatesDocument;
|
|
use App\Classes\Modules\Documents\Services\CreatesFiles;
|
|
use App\Classes\Modules\Bookings\Services\UpdatesBookingStatus;
|
|
use App\Classes\Modules\Wallets\DataTransferObjects\WalletObject;
|
|
|
|
use App\Classes\Modules\Transactions\DataTransferObjects\TransactionObject;
|
|
use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject;
|
|
use App\Classes\ValueObjects\Constants\ApprovalStatus;
|
|
use App\Classes\ValueObjects\Constants\SegmentConstants;
|
|
use App\Classes\ValueObjects\Constants\TransactionType;
|
|
use App\Classes\ValueObjects\Constants\PaymentMethodType;
|
|
use App\Models\Wallet;
|
|
use App\Models\Document;
|
|
use App\Models\SegmentConstant;
|
|
use Meneses\LaravelMpdf\Facades\LaravelMpdf;
|
|
|
|
class CreateWalletTransactionProcessor
|
|
{
|
|
/** @var CreatesWalletTransaction */
|
|
private $createsWalletTransaction;
|
|
|
|
/** @var GeneratesTransactionBillNumber */
|
|
private $generatesTransactionBillNumber;
|
|
|
|
public function __construct(CreatesWalletTransaction $createsWalletTransaction, GeneratesTransactionBillNumber $generatesTransactionBillNumber)
|
|
{
|
|
$this->generatesTransactionBillNumber = $generatesTransactionBillNumber;
|
|
$this->createsWalletTransaction = $createsWalletTransaction;
|
|
}
|
|
|
|
|
|
/**
|
|
* @param Booking $booking
|
|
* @return void
|
|
* @throws \App\Classes\Exceptions\MalformedRequestException
|
|
*/
|
|
public function execute(Wallet $wallet, WalletObject $walletOject, int $transactionType)
|
|
{
|
|
|
|
$billNumber = $this->generatesTransactionBillNumber->execute('WAL-');
|
|
|
|
$transaction_object = new TransactionObject(
|
|
$billNumber,
|
|
$transactionType,
|
|
$wallet->company->id,
|
|
1,
|
|
1,
|
|
PaymentMethodType::BA,
|
|
$walletOject->getAmount(),
|
|
$walletOject->getAmount(),
|
|
$wallet->currency_id,
|
|
$wallet->currency_id,
|
|
0,
|
|
0,
|
|
0,
|
|
null,
|
|
ApprovalStatus::PENDING_SUBMISSION
|
|
);
|
|
$walletTransaction = $this->createsWalletTransaction->execute($wallet, $transaction_object);
|
|
|
|
return $walletTransaction;
|
|
}
|
|
}
|