Files
exchange-2.0/app/Classes/Modules/Transactions/Processors/CreateWalletTransactionProcessor.php
T
2021-10-07 01:34:11 +08:00

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