loans api done

This commit is contained in:
2025-06-11 16:06:01 +05:00
parent 8acc40d53f
commit 10361e9422
5 changed files with 105 additions and 16 deletions

View File

@@ -63,7 +63,7 @@ class LoanPaidOffLetterOrderStoreRequest extends FormRequest
/**
* Date of birth
*
* @example 2000
* @example 10.10.2000
*/
'born_at' => ['required', 'before_or_equal:today'],

View File

@@ -7,11 +7,14 @@ use App\Http\Controllers\Api\LoanPaidOffLetterOrder\Resources\LoanPaidOffLetterO
use App\Http\Controllers\Controller;
use App\Models\Order\Loan\LoanPaidOffLetterOrder;
use App\Repos\Order\OrderRepo;
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
@@ -41,8 +44,6 @@ class LoanPaidOffLetterOrderController extends Controller
...$data,
...[
'user_id' => auth()->id(),
'status' => OrderRepo::PENDING,
'source' => OrderRepo::MOBILE_DEVICE,
],
]);
@@ -56,13 +57,13 @@ class LoanPaidOffLetterOrderController extends Controller
*
* ID ugradyp alyan route -da.
*/
public function show(LoanPaidOffLetterOrder $loanPaidOffLetter): JsonResponse
public function show(LoanPaidOffLetterOrder $order)
{
if ($loanPaidOffLetter->user_id != auth()->id()) {
if ($order->user_id != auth()->id()) {
return response()->json(status: 403);
}
return response()->json(new LoanPaidOffLetterOrderIndexResource($loanPaidOffLetter));
return response()->json(new LoanPaidOffLetterOrderIndexResource($order));
}
/**
@@ -70,12 +71,98 @@ class LoanPaidOffLetterOrderController extends Controller
*
* ID ugradyp `route`-da update edip bilyan. Base App Enum-lardan peydalan. Panelkadan gor.
*/
public function update(Request $request, LoanPaidOffLetterOrder $loanPaidOffLetter): JsonResponse
public function update(Request $request, LoanPaidOffLetterOrder $order): JsonResponse
{
$data = $request->all();
$data = $request->validate([
/**
* Region (https://online.tbbank.gov.tm/api/base-app-enums)
*/
'region' => ['sometimes', 'string', Rule::in(array_keys(RegionRepo::values()))],
Model::unguarded(function () use ($loanPaidOffLetter, $data) {
$loanPaidOffLetter->update($data);
/**
* 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) {
info([$data]);
$order->update($data);
});
return response()->json([
@@ -86,13 +173,13 @@ class LoanPaidOffLetterOrderController extends Controller
/**
* DELETE*
*/
public function destroy(LoanPaidOffLetterOrder $loanPaidOffLetter): JsonResponse
public function destroy(LoanPaidOffLetterOrder $order): JsonResponse
{
if ($loanPaidOffLetter->user_id === auth()->id()) {
if ($order->user_id !== auth()->id()) {
return response()->json(status: 403);
}
$loanPaidOffLetter->delete();
$order->delete();
return response()->json();
}

View File

@@ -39,6 +39,8 @@ class LoanPaidOffLetterOrder extends Model
use HasFactory;
use SoftDeletes;
protected $table = 'loan_paid_off_letter_orders';
/**
* The attributes that are mass assignable.
*

View File

@@ -159,7 +159,7 @@ class LoanOrderController extends Controller
*/
public function destroy(LoanOrder $loanOrder): JsonResponse
{
if ($loanOrder->user_id === auth()->id()) {
if ($loanOrder->user_id != auth()->id()) {
return response()->json(status: 403);
}

View File

@@ -81,12 +81,12 @@ Route::middleware(['auth:sanctum', 'not_banned'])->group(function () {
Route::post('loan-remaining-order/{order}', [LoanOrderRemainingOrderController::class, 'update']);
Route::delete('loan-remaining-order/{order}', [LoanOrderRemainingOrderController::class, 'destroy']);
// Loan paid off letters...
// Loan paid off letters... [tested fully]
Route::get('loan-paid-off-letter-orders', [LoanPaidOffLetterOrderController::class, 'index']);
Route::get('loan-paid-off-letter-orders/{order}', [LoanPaidOffLetterOrderController::class, 'show']);
Route::post('loan-paid-off-letter-orders', [LoanPaidOffLetterOrderController::class, 'store']);
Route::post('loan-paid-off-letter-orders/{order}', [LoanPaidOffLetterOrderController::class, 'update']);
Route::delete('loan-paid-off-letter-orders/{order}', [LoanPaidOffLetterOrderController::class, 'destory']);
Route::delete('loan-paid-off-letter-orders/{order}', [LoanPaidOffLetterOrderController::class, 'destroy']);
// Alerts...
Route::get('alerts', [AlertController::class, 'index']);