186 lines
5.0 KiB
PHP
186 lines
5.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use App\Http\Controllers\Api\LoanPaidOffLetterOrder\Requests\LoanPaidOffLetterOrderStoreRequest;
|
|
use App\Http\Controllers\Api\LoanPaidOffLetterOrder\Resources\LoanPaidOffLetterOrderIndexResource;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Order\Loan\LoanPaidOffLetterOrder;
|
|
use App\Repos\System\Settings\Legal\PassportRepo;
|
|
use App\Repos\System\Settings\Location\RegionRepo;
|
|
use Dedoc\Scramble\Attributes\Group;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
#[Group('Sargytlar - Karz - Karzyň ýapylandygy barada güwanama')]
|
|
class LoanPaidOffLetterOrderController extends Controller
|
|
{
|
|
/**
|
|
* LIST*
|
|
*/
|
|
public function index(): JsonResponse
|
|
{
|
|
return response()->json(LoanPaidOffLetterOrderIndexResource::collection(
|
|
LoanPaidOffLetterOrder::query()
|
|
->with('branch')
|
|
->where('user_id', auth()->id())
|
|
->latest()
|
|
->get()
|
|
));
|
|
}
|
|
|
|
/**
|
|
* SAVE*
|
|
*/
|
|
public function store(LoanPaidOffLetterOrderStoreRequest $request): JsonResponse
|
|
{
|
|
Log::channel('form_logs')->info('loan-order-store-request', $request->all());
|
|
|
|
$data = $request->validated();
|
|
LoanPaidOffLetterOrder::forceCreate([
|
|
...$data,
|
|
...[
|
|
'user_id' => auth()->id(),
|
|
],
|
|
]);
|
|
|
|
return response()->json([
|
|
'message' => __('Successfully created'),
|
|
], 201);
|
|
}
|
|
|
|
/**
|
|
* SHOW*
|
|
*
|
|
* ID ugradyp alyan route -da.
|
|
*/
|
|
public function show(LoanPaidOffLetterOrder $order)
|
|
{
|
|
if ($order->user_id != auth()->id()) {
|
|
return response()->json(status: 403);
|
|
}
|
|
|
|
return response()->json(new LoanPaidOffLetterOrderIndexResource($order));
|
|
}
|
|
|
|
/**
|
|
* UPDATE*
|
|
*
|
|
* ID ugradyp `route`-da update edip bilyan. Base App Enum-lardan peydalan. Panelkadan gor.
|
|
*/
|
|
public function update(Request $request, LoanPaidOffLetterOrder $order): JsonResponse
|
|
{
|
|
$data = $request->validate([
|
|
/**
|
|
* Region (https://online.tbbank.gov.tm/api/base-app-enums)
|
|
*/
|
|
'region' => ['sometimes', 'string', Rule::in(array_keys(RegionRepo::values()))],
|
|
|
|
/**
|
|
* Branch id (https://online.tbbank.gov.tm/api/branches)
|
|
*/
|
|
'branch_id' => ['sometimes', 'integer', Rule::exists('branches', 'id')],
|
|
|
|
/**
|
|
* Customer name
|
|
*
|
|
* @example Mahmyt
|
|
*/
|
|
'customer_name' => ['sometimes', 'string', 'max:255'],
|
|
|
|
/**
|
|
* Customer surname
|
|
*
|
|
* @example Allaberdiyev
|
|
*/
|
|
'customer_surname' => ['sometimes', 'string', 'max:255'],
|
|
|
|
/**
|
|
* Customer patronic name
|
|
*
|
|
* @example Öwezowiç
|
|
*/
|
|
'customer_patronic_name' => ['nullable', 'string', 'max:255'],
|
|
|
|
/**
|
|
* Passport serie
|
|
*/
|
|
'passport_serie' => ['sometimes', 'string', Rule::in(array_keys(PassportRepo::values()))],
|
|
|
|
/**
|
|
* Passport number
|
|
*
|
|
* @example 100999
|
|
*/
|
|
'passport_id' => ['sometimes', 'numeric', 'digits:6'],
|
|
|
|
/**
|
|
* Date of birth
|
|
*
|
|
* @example 10.10.2000
|
|
*/
|
|
'born_at' => ['sometimes', 'before_or_equal:today'],
|
|
|
|
/**
|
|
* Phone number
|
|
*
|
|
* @example 65999990
|
|
*/
|
|
'phone' => ['sometimes', 'integer', 'between:61000000, 71999999'],
|
|
|
|
/**
|
|
* Contract number
|
|
*
|
|
* @example 3242358989234
|
|
*/
|
|
'loan_contract_number' => ['sometimes', 'string', 'max:255'],
|
|
|
|
/**
|
|
* Contract date
|
|
*
|
|
* @example 20.34.23
|
|
*/
|
|
'loan_contract_date' => ['sometimes', 'string', 'max:255'],
|
|
|
|
/**
|
|
* Loan amount
|
|
*
|
|
* @example 20000
|
|
*/
|
|
'loan_amount' => ['sometimes', 'string', 'max:255'],
|
|
|
|
/**
|
|
* Loan reason
|
|
*
|
|
* @example Puldan pul yasamak ucin
|
|
*/
|
|
'loan_reason' => ['sometimes', 'string', 'max:255'],
|
|
]);
|
|
|
|
Model::unguarded(function () use ($order, $data) {
|
|
$order->update($data);
|
|
});
|
|
|
|
return response()->json([
|
|
'message' => __('Successfully updated'),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* DELETE*
|
|
*/
|
|
public function destroy(LoanPaidOffLetterOrder $order): JsonResponse
|
|
{
|
|
if ($order->user_id !== auth()->id()) {
|
|
return response()->json(status: 403);
|
|
}
|
|
|
|
$order->delete();
|
|
|
|
return response()->json();
|
|
}
|
|
}
|