This commit is contained in:
2024-11-27 12:53:52 +05:00
parent bd5a72117f
commit 8adb96549c
5 changed files with 238 additions and 2 deletions

View 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' => 'Дополнительный взнос',
],
],
]);
}
}

View File

@@ -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()),
]),

View File

@@ -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');

View 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:[&amp;:not(:disabled)]:bg-primary-400 hover:[&amp;: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>

View File

@@ -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...