'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; /** * UpdateBankStatementDetailLogic constructor. * @param UpdatesBankStatementDetails $updatesBankStatementDetails * @param FetchesBankStatementDetails $fetchesBankStatementDetails * @param fetchesBankStatementTransaction $fetchesBankStatementTransaction * @param CreatesBankStatementTransactionOwner $createsBankStatementTransactionOwner */ public function __construct(UpdatesBankStatementDetails $updatesBankStatementDetails, FetchesBankStatementDetails $fetchesBankStatementDetails, FetchesBankStatementTransaction $fetchesBankStatementTransaction, CreatesBankStatementTransactionOwner $createsBankStatementTransactionOwner) { $this->updatesBankStatementDetails = $updatesBankStatementDetails; $this->fetchesBankStatementDetails = $fetchesBankStatementDetails; $this->fetchesBankStatementTransaction = $fetchesBankStatementTransaction; $this->createsBankStatementTransactionOwner = $createsBankStatementTransactionOwner; } /** * @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')); // 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')); $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.'); } }