'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.'); // } }