diff --git a/app/Http/Controllers/Api/CardOrder/CardOrderController.php b/app/Http/Controllers/Api/CardOrder/CardOrderController.php new file mode 100644 index 0000000..ee6d82b --- /dev/null +++ b/app/Http/Controllers/Api/CardOrder/CardOrderController.php @@ -0,0 +1,13 @@ +json( + LoanRemainingOrder::query() + ->where('user_id', auth()->id()) + ->get() + ); + } + + /** + * SAVE* + */ + public function store(Request $request): JsonResponse + { + $data = $request->validate([ + /** + * @example I-AS + */ + 'passport_serie' => ['required', Rule::in(array_keys(PassportRepo::values()))], + + /** + * @example 379514 + */ + 'passport_id' => ['required', 'numeric', 'digits:6'], + + /** + * @example 14208934130700002997232 + */ + 'account_number' => ['required', 'string'], + ]); + + LoanRemainingOrder::forceCreate([ + ...$data, + ...[ + 'user_id' => auth()->id(), + ], + ]); + + return response()->json([ + 'message' => __('Successfully created'), + ], 201); + } + + /** + * SHOW* + * + * ID ugradyp alyan route -da. + */ + public function show(LoanRemainingOrder $order): JsonResponse + { + if ($order->user_id != auth()->id()) { + return response()->json(status: 403); + } + + return response()->json($order); + } + + /** + * UPDATE* + * + * ID ugradyp `route`-da update edip bilyan. Base App Enum-lardan peydalan. Panelkadan gor. + */ + public function update(Request $request, LoanRemainingOrder $order): JsonResponse + { + $data = $request->validate([ + /** + * @example I-AS + */ + 'passport_serie' => ['sometimes', Rule::in(array_keys(PassportRepo::values()))], + + /** + * @example 379514 + */ + 'passport_id' => ['sometimes', 'numeric', 'digits:6'], + + /** + * @example 14208934130700002997232 + */ + 'account_number' => ['sometimes', 'string'], + ]); + + Model::unguarded(function () use ($order, $data) { + $order->update($data); + }); + + return response()->json([ + 'message' => __('Successfully updated'), + ]); + } + + /** + * DELETE* + */ + public function destroy(LoanRemainingOrder $order): JsonResponse + { + if ($order->user_id != auth()->id()) { + return response()->json(status: 403); + } + + $order->delete(); + + return response()->json([ + 'message' => __('Successfully deleted') + ]); + } +} diff --git a/app/Http/Controllers/Api/LoanPaidOffLetterOrderController.php b/app/Http/Controllers/Api/LoanPaidOffLetterOrderController.php index 4a5a542..f24563c 100644 --- a/app/Http/Controllers/Api/LoanPaidOffLetterOrderController.php +++ b/app/Http/Controllers/Api/LoanPaidOffLetterOrderController.php @@ -7,13 +7,17 @@ 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 Dedoc\Scramble\Attributes\Group; +use Illuminate\Database\Eloquent\Model; use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; +#[Group('Sargytlar - Karz - Karzyň ýapylandygy barada güwanama')] class LoanPaidOffLetterOrderController extends Controller { /** - * LIST* Loan paid off letters + * LIST* */ public function index(): JsonResponse { @@ -21,12 +25,12 @@ class LoanPaidOffLetterOrderController extends Controller LoanPaidOffLetterOrder::query() ->with('branch') ->where('user_id', auth()->id()) - ->paginate() + ->get() )); } /** - * SAVE* Loan order. + * SAVE* */ public function store(LoanPaidOffLetterOrderStoreRequest $request): JsonResponse { @@ -42,6 +46,54 @@ class LoanPaidOffLetterOrderController extends Controller ], ]); + return response()->json([ + 'message' => __('Successfully created'), + ], 201); + } + + /** + * SHOW* + * + * ID ugradyp alyan route -da. + */ + public function show(LoanPaidOffLetterOrder $loanPaidOffLetter): JsonResponse + { + if ($loanPaidOffLetter->user_id != auth()->id()) { + return response()->json(status: 403); + } + + return response()->json(new LoanPaidOffLetterOrderIndexResource($loanPaidOffLetter)); + } + + /** + * UPDATE* + * + * ID ugradyp `route`-da update edip bilyan. Base App Enum-lardan peydalan. Panelkadan gor. + */ + public function update(Request $request, LoanPaidOffLetterOrder $loanPaidOffLetter): JsonResponse + { + $data = $request->all(); + + Model::unguarded(function () use ($loanPaidOffLetter, $data) { + $loanPaidOffLetter->update($data); + }); + + return response()->json([ + 'message' => __('Successfully updated'), + ]); + } + + /** + * DELETE* + */ + public function destroy(LoanPaidOffLetterOrder $loanPaidOffLetter): JsonResponse + { + if ($loanPaidOffLetter->user_id === auth()->id()) { + return response()->json(status: 403); + } + + $loanPaidOffLetter->delete(); + return response()->json(); } } diff --git a/app/Modules/LoanOrder/Controllers/Resources/LoanOrderIndexResource.php b/app/Modules/LoanOrder/Controllers/Resources/LoanOrderIndexResource.php index b48efa2..ab58094 100644 --- a/app/Modules/LoanOrder/Controllers/Resources/LoanOrderIndexResource.php +++ b/app/Modules/LoanOrder/Controllers/Resources/LoanOrderIndexResource.php @@ -48,10 +48,10 @@ class LoanOrderIndexResource extends JsonResource 'work_position' => $this->work_position, 'education' => $this->education, 'marriage_status' => $this->marriage_status, - 'passport_one' => $this->passport_one, - 'passport_two' => $this->passport_two, - 'passport_three' => $this->passport_three, - 'passport_four' => $this->passport_four, + 'passport_one' => url('/storage/' . $this->passport_one), + 'passport_two' => url('/storage/' . $this->passport_two), + 'passport_three' => url('/storage/' . $this->passport_three), + 'passport_four' => url('/storage/' . $this->passport_four), 'user_id' => $this->user_id, 'status' => $this->status, 'notes' => $this->notes, diff --git a/app/Modules/LoanRemainingOrder/Controllers/LoanRemainingOrderController.php b/app/Modules/LoanRemainingOrder/Controllers/LoanRemainingOrderController.php index 86b029b..83d262e 100644 --- a/app/Modules/LoanRemainingOrder/Controllers/LoanRemainingOrderController.php +++ b/app/Modules/LoanRemainingOrder/Controllers/LoanRemainingOrderController.php @@ -5,14 +5,16 @@ namespace App\Modules\LoanRemainingOrder\Controllers; use App\Http\Controllers\Controller; use App\Modules\LoanRemainingOrder\Actions\FetchRemainingLoanFromBilling; use App\Repos\System\Settings\Legal\PassportRepo; +use Dedoc\Scramble\Attributes\Group; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Validation\Rule; +#[Group('Sargytlar - Karz - Karzyň galyndysy')] class LoanRemainingOrderController extends Controller { /** - * Return remaning loan of person. + * Galan karzyny görip biler, zaýawka içinde knopka bolýar, basaňdan soň modal jogaby bermeli. */ public function index(Request $request): JsonResponse { @@ -30,36 +32,4 @@ class LoanRemainingOrderController extends Controller return response()->json($response); } - - /** - * Store a newly created resource in storage. - */ - public function store(Request $request): void - { - // - } - - /** - * Display the specified resource. - */ - public function show(Request $request): void - { - // - } - - /** - * Update the specified resource in storage. - */ - public function update(Request $request): void - { - // - } - - /** - * Remove the specified resource from storage. - */ - public function destroy(Request $request): void - { - // - } } diff --git a/routes/api.php b/routes/api.php index c027ea8..729e264 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,7 +1,9 @@ group(function () { Route::post('loan-order/{loanOrder}', [LoanOrderController::class, 'update']); Route::delete('loan-order/{loanOrder}', [LoanOrderController::class, 'destroy']); - // Loan remaning... + // Loan remaning... [tested fully] Route::get('loan-remaining', [LoanRemainingOrderController::class, 'index']); + Route::get('loan-remaining-order', [LoanOrderRemainingOrderController::class, 'index']); + Route::get('loan-remaining-order/{order}', [LoanOrderRemainingOrderController::class, 'show']); + Route::post('loan-remaining-order', [LoanOrderRemainingOrderController::class, 'store']); + Route::post('loan-remaining-order/{order}', [LoanOrderRemainingOrderController::class, 'update']); + Route::delete('loan-remaining-order/{order}', [LoanOrderRemainingOrderController::class, 'destroy']); // Loan paid off letters... Route::get('loan-paid-off-letter-orders', [LoanPaidOffLetterOrderController::class, 'index']); @@ -83,4 +90,11 @@ Route::middleware(['auth:sanctum', 'not_banned'])->group(function () { // Alerts... Route::get('alerts', [AlertController::class, 'index']); + + // Card order... + Route::get('card-order', [CardOrderController::class, 'index']); + Route::get('card-order/{cardOrder}', [CardOrderController::class, 'show']); + Route::post('card-order', [CardOrderController::class, 'store']); + Route::post('card-order/{cardOrder}', [CardOrderController::class, 'update']); + Route::delete('card-order/{cardOrder}', [CardOrderController::class, 'destroy']); });