mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/exchange-2.0.git
synced 2026-08-19 04:23:55 +00:00
216 lines
9.6 KiB
PHP
216 lines
9.6 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Accounting\ControllersLogic;
|
|
|
|
|
|
use App\Classes\Exceptions\MalformedRequestException;
|
|
use App\Classes\General\Abstracts\AbstractControllerLogic;
|
|
use App\Classes\Modules\Accounting\Services\UpdatesBankStatementDetails;
|
|
use App\Classes\Modules\Accounting\Services\FetchesBankStatementDetails;
|
|
use App\Classes\Modules\Accounting\Services\CreatesBankStatementTransactionOwner;
|
|
use App\Classes\Modules\Accounting\Services\FetchesBankStatementTransaction;
|
|
use App\Classes\ValueObjects\Constants\StatementTransactionOwnerType;
|
|
use App\Classes\ValueObjects\Constants\SystemType;
|
|
use App\Classes\Modules\Accounting\Processors\ChecksBillNumber;
|
|
use App\Models\Transaction;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use ErrorException;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class UpdateBankStatementDetailLogic extends AbstractControllerLogic
|
|
{
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
protected function notification():array {
|
|
return [
|
|
'title' => 'Updated Bank Statement Transactions Details',
|
|
'message' => 'You have successfully updated the Bank Statement Transactions Details'
|
|
];
|
|
}
|
|
|
|
// /** @var CanUpdateCompany */
|
|
// private $canUpdateCompany;
|
|
|
|
/** @var UpdatesBankStatementDetails */
|
|
private $updatesBankStatementDetails;
|
|
|
|
/** @var FetchesBankStatementDetails */
|
|
private $fetchesBankStatementDetails;
|
|
|
|
/** @var FetchesBankStatementTransaction */
|
|
private $fetchesBankStatementTransaction;
|
|
|
|
/** @var CreatesBankStatementTransactionOwner */
|
|
private $createsBankStatementTransactionOwner;
|
|
|
|
/** @var ChecksBillNumber */
|
|
private $checksBillNumber;
|
|
|
|
/**
|
|
* UpdateBankStatementDetailLogic constructor.
|
|
* @param UpdatesBankStatementDetails $updatesBankStatementDetails
|
|
* @param FetchesBankStatementDetails $fetchesBankStatementDetails
|
|
* @param fetchesBankStatementTransaction $fetchesBankStatementTransaction
|
|
* @param CreatesBankStatementTransactionOwner $createsBankStatementTransactionOwner
|
|
* @param ChecksBillNumber $checksBillNumber
|
|
*/
|
|
public function __construct(UpdatesBankStatementDetails $updatesBankStatementDetails, FetchesBankStatementDetails $fetchesBankStatementDetails, FetchesBankStatementTransaction $fetchesBankStatementTransaction, CreatesBankStatementTransactionOwner $createsBankStatementTransactionOwner, ChecksBillNumber $checksBillNumber)
|
|
{
|
|
$this->updatesBankStatementDetails = $updatesBankStatementDetails;
|
|
$this->fetchesBankStatementDetails = $fetchesBankStatementDetails;
|
|
$this->fetchesBankStatementTransaction = $fetchesBankStatementTransaction;
|
|
$this->createsBankStatementTransactionOwner = $createsBankStatementTransactionOwner;
|
|
$this->checksBillNumber = $checksBillNumber;
|
|
}
|
|
|
|
|
|
/**
|
|
* @param Request $request
|
|
* @return JsonResponse
|
|
* @throws ErrorException
|
|
*/
|
|
public function logic(Request $request): JsonResponse
|
|
{
|
|
$bankStatementTransaction = $this->fetchesBankStatementTransaction->execute(['id' => $request->route('id')]);
|
|
|
|
$owner_type = null;
|
|
$owner_id = null;
|
|
$statementTransactionOwnerType = null;
|
|
$system = null;
|
|
$owner_reference = null;
|
|
|
|
switch ($request->input('pay_for')) {
|
|
case 'sales':
|
|
if (in_array($request->input('system_references'), ['exchange', 'izyim'])) {
|
|
// $transaction = $this->verifyBillNumber($request->input('transaction_reference'), $request->input('system_references'));
|
|
$transaction = $this->checksBillNumber->execute($request->input('transaction_reference'), $request->input('system_references'));
|
|
|
|
// todo-new: update / test on izyim system
|
|
|
|
$owner_type = Transaction::class;
|
|
$owner_id = $transaction->id;
|
|
// todo-new: owner_reference
|
|
// booking number / order number
|
|
$owner_reference = null;
|
|
$statementTransactionOwnerType = StatementTransactionOwnerType::SALES;
|
|
$system = $request->input('system_references');
|
|
} else {
|
|
|
|
switch ($request->input('system_references')) {
|
|
case 'lite':
|
|
$statementTransactionOwnerType = StatementTransactionOwnerType::SALES_LITE;
|
|
break;
|
|
case 'cntr':
|
|
$statementTransactionOwnerType = StatementTransactionOwnerType::SALES_CNTR;
|
|
break;
|
|
case 'probashi':
|
|
$statementTransactionOwnerType = StatementTransactionOwnerType::SALES_PROBASHI;
|
|
break;
|
|
case 'pets':
|
|
$statementTransactionOwnerType = StatementTransactionOwnerType::SALES_PETS;
|
|
break;
|
|
default:
|
|
throw new MalformedRequestException('System Reference not allowed');
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'top_up':
|
|
|
|
// $transaction = $this->verifyBillNumber($request->input('transaction_reference'), $request->input('system_references'));
|
|
$transaction = $this->checksBillNumber->execute($request->input('transaction_reference'), $request->input('system_references'));
|
|
|
|
$owner_type = Transaction::class;
|
|
$owner_id = $transaction->id;
|
|
// todo-new: owner_reference
|
|
// top_up - store customer marking
|
|
$owner_reference = null;
|
|
$statementTransactionOwnerType = StatementTransactionOwnerType::WALLET_TOP_UP;
|
|
$system = $request->input('system_references');
|
|
break;
|
|
|
|
case 'internal_bank_transfer':
|
|
$statementTransactionOwnerType = StatementTransactionOwnerType::INTERNAL_BANK_TRANSFER_IN; // if negative -> out, positive -> in
|
|
$system = $request->input('system_references');
|
|
break;
|
|
|
|
case 'others':
|
|
$owner_reference = $request->input('transaction_reference');
|
|
$statementTransactionOwnerType = StatementTransactionOwnerType::NON_OPERATIONAL;
|
|
$system = $request->input('system_references');
|
|
break;
|
|
|
|
default:
|
|
throw new MalformedRequestException('Transaction Type Not Allowed');
|
|
}
|
|
|
|
$system == null ? '' : $system = SystemType::SYSTEM_NAMES[$system];
|
|
|
|
dd([
|
|
'type' => $statementTransactionOwnerType,
|
|
'system' => $system,
|
|
// 'owner_type' => Transaction::class,
|
|
// todo-new: make sure owner_type is a class
|
|
'owner_type' => $owner_type,
|
|
'owner_id' => $owner_id,
|
|
'owner_reference' => $owner_reference
|
|
]);
|
|
|
|
$bankStatementTransaction->owners()->firstOrCreate([
|
|
'type' => $statementTransactionOwnerType,
|
|
'system' => $system,
|
|
// 'owner_type' => Transaction::class,
|
|
// todo-new: make sure owner_type is a class
|
|
'owner_type' => $owner_type,
|
|
'owner_id' => $owner_id,
|
|
'owner_reference' => $owner_reference
|
|
]);
|
|
|
|
dd($bankStatementTransaction->owners()->first());
|
|
|
|
// $this->canCreateUser->passes($user_object);
|
|
|
|
// $user = $this->createsBankStatementTransactionOwner->execute($bankStatementTransactionObject);
|
|
|
|
// return $this->resourceResponse(new BankStatementDetailResource($query));
|
|
}
|
|
|
|
// public function verifyBillNumber($bill_no, $system_reference)
|
|
// {
|
|
// if ($system_reference == 'izyim') {
|
|
// try {
|
|
// $url = 'https://izyim.cief-malaysia.com/public/api/v1/transactions/query';
|
|
// $client = new \GuzzleHttp\Client(['verify' => false]);
|
|
// $response = $client->request('GET', $url . '?api-key=510acd13d8d24375cf038ad626c282565451461a9c2399357e0b65365300787e&filters={"bill_no":' . $bill_no . '}');
|
|
// $body = $response->getBody();
|
|
// $data = json_decode($body, true);
|
|
// dd($data);
|
|
// $payload = $data['payload'];
|
|
// $transactions2 = $payload['data'];
|
|
// dd($transactions2);
|
|
// return $transactions2;
|
|
// } catch (\Exception $exception) {
|
|
// Log::error($exception);
|
|
// dd($exception);
|
|
// preg_match('/\{.*\}/s', $exception->getMessage(), $matches);
|
|
// $jsonError = json_decode($matches[0]);
|
|
// // Retrieved Transactions failed
|
|
// throw new MalformedRequestException($jsonError->title);
|
|
// }
|
|
// }
|
|
|
|
// if ($system_reference == 'exchange') {
|
|
// $transaction = Transaction::where('bill_no', $bill_no)->first();
|
|
// if ($transaction) {
|
|
// return $transaction;
|
|
// }
|
|
// }
|
|
|
|
// // if not found
|
|
// throw new MalformedRequestException('Bill Number Not Found.');
|
|
// }
|
|
}
|