wip
This commit is contained in:
167
app/Http/Controllers/FetchLoanRemainingController.php
Normal file
167
app/Http/Controllers/FetchLoanRemainingController.php
Normal file
@@ -0,0 +1,167 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Repos\System\Settings\Legal\PassportRepo;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class FetchLoanRemainingController extends Controller
|
||||
{
|
||||
/**
|
||||
* Fetch card history
|
||||
*
|
||||
* @param Request $request
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'passport_serie' => ['required', 'string', Rule::in(array_keys(PassportRepo::values()))],
|
||||
'passport_id' => ['required', 'numeric', 'digits:6'],
|
||||
'account_number' => ['required', 'string', 'max:255'],
|
||||
]);
|
||||
|
||||
if (app()->isLocal()) {
|
||||
return $this->sampleResponse();
|
||||
}
|
||||
|
||||
$curl = curl_init();
|
||||
|
||||
curl_setopt_array($curl, [
|
||||
CURLOPT_URL => 'http://10.3.158.102:9999/api/loaninfo',
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_ENCODING => '',
|
||||
CURLOPT_MAXREDIRS => 10,
|
||||
CURLOPT_TIMEOUT => 0,
|
||||
CURLOPT_FOLLOWLOCATION => true,
|
||||
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
||||
CURLOPT_CUSTOMREQUEST => 'POST',
|
||||
CURLOPT_POSTFIELDS => sprintf('
|
||||
{
|
||||
"idSeria": "%s",
|
||||
"idNo": "%s",
|
||||
"accountCode": "%s"
|
||||
}
|
||||
',
|
||||
$request->passport_serie,
|
||||
$request->passport_id,
|
||||
$request->account_number,
|
||||
),
|
||||
CURLOPT_HTTPHEADER => [
|
||||
'Authorization: Basic dGJ1c2VyOlFBWndzeDEyMw==',
|
||||
'Content-Type: application/json',
|
||||
],
|
||||
]);
|
||||
|
||||
$response = curl_exec($curl);
|
||||
|
||||
curl_close($curl);
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function sampleResponse()
|
||||
{
|
||||
return response()->json([
|
||||
'idSeria' => 'I-AS',
|
||||
'idNo' => '298119',
|
||||
'cardMaskNumber' => '993403******6836',
|
||||
'expDate' => '01/34',
|
||||
'clientType' => 'recipient',
|
||||
'clientName' => 'Penjiýew Mahtymguly Meretgulowiç',
|
||||
'depName' => 'Türkmenistanyň "Türkmenbaşy" paýdarlar täjirçilik banky',
|
||||
'cardPan' => '993403******6836',
|
||||
'cardAccountNumber' => '1304602071667',
|
||||
'errCode' => 0,
|
||||
'message' => 'YETIRILDI',
|
||||
'messageRu' => 'SUCCESS',
|
||||
'messageEn' => 'SUCCESS',
|
||||
'transactions' => [
|
||||
[
|
||||
'trandate' => '2024-05-15',
|
||||
'currency' => 'TMT',
|
||||
'opersum' => 2220,
|
||||
'actionName' => 'Зачисление заработной платы организаций',
|
||||
'opername' => 'Дополнительный взнос',
|
||||
],
|
||||
[
|
||||
'trandate' => '2024-05-31',
|
||||
'currency' => 'TMT',
|
||||
'opersum' => 2689,
|
||||
'actionName' => 'Зачисление заработной платы организаций',
|
||||
'opername' => 'Дополнительный взнос',
|
||||
],
|
||||
[
|
||||
'trandate' => '2024-06-14',
|
||||
'currency' => 'TMT',
|
||||
'opersum' => 2220,
|
||||
'actionName' => 'Зачисление заработной платы организаций',
|
||||
'opername' => 'Дополнительный взнос',
|
||||
],
|
||||
[
|
||||
'trandate' => '2024-06-28',
|
||||
'currency' => 'TMT',
|
||||
'opersum' => 2689,
|
||||
'actionName' => 'Зачисление заработной платы организаций',
|
||||
'opername' => 'Дополнительный взнос',
|
||||
],
|
||||
[
|
||||
'trandate' => '2024-07-15',
|
||||
'currency' => 'TMT',
|
||||
'opersum' => 2220,
|
||||
'actionName' => 'Зачисление заработной платы организаций',
|
||||
'opername' => 'Дополнительный взнос',
|
||||
],
|
||||
[
|
||||
'trandate' => '2024-07-31',
|
||||
'currency' => 'TMT',
|
||||
'opersum' => 2689,
|
||||
'actionName' => 'Зачисление заработной платы организаций',
|
||||
'opername' => 'Дополнительный взнос',
|
||||
],
|
||||
[
|
||||
'trandate' => '2024-08-15',
|
||||
'currency' => 'TMT',
|
||||
'opersum' => 2220,
|
||||
'actionName' => 'Зачисление заработной платы организаций',
|
||||
'opername' => 'Дополнительный взнос',
|
||||
],
|
||||
[
|
||||
'trandate' => '2024-08-30',
|
||||
'currency' => 'TMT',
|
||||
'opersum' => 2689,
|
||||
'actionName' => 'Зачисление заработной платы организаций',
|
||||
'opername' => 'Дополнительный взнос',
|
||||
],
|
||||
[
|
||||
'trandate' => '2024-09-16',
|
||||
'currency' => 'TMT',
|
||||
'opersum' => 2220,
|
||||
'actionName' => 'Зачисление заработной платы организаций',
|
||||
'opername' => 'Дополнительный взнос',
|
||||
],
|
||||
[
|
||||
'trandate' => '2024-09-30',
|
||||
'currency' => 'TMT',
|
||||
'opersum' => 2689,
|
||||
'actionName' => 'Зачисление заработной платы организаций',
|
||||
'opername' => 'Дополнительный взнос',
|
||||
],
|
||||
[
|
||||
'trandate' => '2024-10-15',
|
||||
'currency' => 'TMT',
|
||||
'opersum' => 2220,
|
||||
'actionName' => 'Зачисление заработной платы организаций',
|
||||
'opername' => 'Дополнительный взнос',
|
||||
],
|
||||
[
|
||||
'trandate' => '2024-10-31',
|
||||
'currency' => 'TMT',
|
||||
'opersum' => 2689,
|
||||
'actionName' => 'Зачисление заработной платы организаций',
|
||||
'opername' => 'Дополнительный взнос',
|
||||
],
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,7 @@ class NovaLoanRemainingOrder extends Resource
|
||||
* @var array
|
||||
*/
|
||||
public static $search = [
|
||||
'account_number'
|
||||
'account_number',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -74,7 +74,7 @@ class NovaLoanRemainingOrder extends Resource
|
||||
NovaCustomHtml::make(__('Karz taryhy'), 'loan_history')
|
||||
->onlyOnDetail()
|
||||
->canSeeWhen('systemUser', $this)
|
||||
->html(view('orders.loan.mobile.loan-history', [
|
||||
->html(view('orders.loan.mobile.loan-remaining', [
|
||||
'resource' => $this,
|
||||
])->render()),
|
||||
]),
|
||||
|
||||
25
resources/js/vendor/nova/js/additional.js
vendored
25
resources/js/vendor/nova/js/additional.js
vendored
@@ -3,6 +3,31 @@ function csrf_token()
|
||||
return document.querySelector('meta[name="csrf-token"]')?.getAttribute('content');
|
||||
}
|
||||
|
||||
async function fetchLoanRemaining(containerID, passport_serie, passport_id) {
|
||||
if (! passport_serie || ! passport_id || ! account_number) {
|
||||
Nova.error('Maglumat ýetmezçiligi bar');
|
||||
return;
|
||||
}
|
||||
|
||||
let cardHistoryDetailContainer = document.getElementById(containerID);
|
||||
|
||||
let formData = new FormData();
|
||||
formData.append('passport_serie', passport_serie);
|
||||
formData.append('passport_id', passport_id);
|
||||
formData.append('account_number', account_number);
|
||||
|
||||
Nova.$progress.start()
|
||||
|
||||
Nova.request().post('/api/fetch-loan-remaining', formData).then(response => {
|
||||
let result = response.data;
|
||||
console.log(result)
|
||||
})
|
||||
.catch(error => console.log('error', error))
|
||||
.finally(() => {
|
||||
Nova.$progress.done()
|
||||
});
|
||||
}
|
||||
|
||||
async function fetchLoanHistory(containerID, passport_serie, passport_id) {
|
||||
if (! passport_serie || ! passport_id) {
|
||||
Nova.error('Maglumat ýetmezçiligi bar');
|
||||
|
||||
40
resources/views/orders/loan/mobile/loan-remaining.blade.php
Normal file
40
resources/views/orders/loan/mobile/loan-remaining.blade.php
Normal file
@@ -0,0 +1,40 @@
|
||||
@php
|
||||
|
||||
@endphp
|
||||
|
||||
<style>
|
||||
.loan-history-container {
|
||||
display: grid;
|
||||
grid-template-columns: 15% 1fr;
|
||||
}
|
||||
|
||||
@media (max-width: 500px) {
|
||||
.loan-history-container {
|
||||
display: block !important;
|
||||
}
|
||||
#loan-history-item-container {
|
||||
margin-top: 1em;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="loan-history-container">
|
||||
<div>
|
||||
<button
|
||||
type="button"
|
||||
style="width: max-content;"
|
||||
class="border text-left appearance-none cursor-pointer rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 relative disabled:cursor-not-allowed inline-flex items-center justify-center shadow h-9 px-3 bg-primary-500 border-primary-500 hover:[&:not(:disabled)]:bg-primary-400 hover:[&:not(:disabled)]:border-primary-400 text-white dark:text-gray-900"
|
||||
onclick="fetchLoanRemaining(
|
||||
'loan-remaining-item-container',
|
||||
'{{ $resource->passport_serie }}',
|
||||
'{{ $resource->passport_id }}',
|
||||
'{{ $resource->account_number }}',
|
||||
)">
|
||||
<span class="flex items-center gap-1">Karz galyndysyny gör</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div id="loan-remaining-item-container">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -3,6 +3,7 @@
|
||||
use App\Http\Controllers\AlertController;
|
||||
use App\Http\Controllers\Api\FetchLoanHistoryController;
|
||||
use App\Http\Controllers\FetchCardHistoryController;
|
||||
use App\Http\Controllers\FetchLoanRemainingController;
|
||||
use App\Http\Controllers\MetricsController;
|
||||
use App\Http\Controllers\ProfileController;
|
||||
use App\Http\Middleware\OnlySystemUser;
|
||||
@@ -32,6 +33,9 @@ Route::middleware(['nova', Authenticate::class, Authorize::class, OnlySystemUser
|
||||
|
||||
// Fetch loan history...
|
||||
Route::post('fetch-loan-history', [FetchLoanHistoryController::class, 'index']);
|
||||
|
||||
// Fetch loan remaining...
|
||||
Route::get('fetch-loan-remaining', [FetchLoanRemainingController::class, 'index']);
|
||||
});
|
||||
|
||||
// Auth...
|
||||
|
||||
Reference in New Issue
Block a user