diff --git a/app/Http/Controllers/Api/CardBalance/CardBalanceController.php b/app/Http/Controllers/Api/CardBalance/CardBalanceController.php new file mode 100644 index 0000000..0ccd3b2 --- /dev/null +++ b/app/Http/Controllers/Api/CardBalance/CardBalanceController.php @@ -0,0 +1,175 @@ +json( + CardBalance::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 9934612100000243 + */ + 'card_number' => ['required', 'digits:16'], + + /** + * @example 12 + */ + 'card_month' => ['required', Rule::in(array_keys(DateHelperRepository::staticNumberMonths()))], + + /** + * @example 2049 + */ + 'card_year' => ['required', Rule::in(array_keys(DateHelperRepository::staticNumberYears()))], + ]); + + CardBalance::forceCreate([ + ...$data, + ...[ + 'user_id' => auth()->id(), + ], + ]); + + return response()->json([ + 'message' => __('Successfully created'), + ], 201); + } + + /** + * SHOW* + * + * ID ugradyp alyan route -da. Soň page-da download button bolmaly, basaňdan soň, modal çykmaly, start date bilen end date ugradyp download basanda `/api/card-transactions-download/{order}` route gelyan pdf download etmeli. + */ + public function show(CardBalance $order): JsonResponse + { + if ($order->user_id != auth()->id()) { + return response()->json(status: 403); + } + + return response()->json($order); + } + + /** + * Download* + * + * Download card transaction file + */ + public function download(Request $request, CardBalance $order) + { + $response = DownloadCardBalance::make()->fetchApi( + passport_serie: $order->passport_serie, + passport_id: $order->passport_id, + card_masked: Str::mask($order->card_number, '*', 6, 6), + card_expire_date: $order->card_month.'/'.substr($order->card_year, 2), + ); + + if ($response->errCode != 0) { + return response()->json([ + 'status' => false, + 'message' => $response->message, + 'url' => '', + ]); + } + + return response()->json([ + 'status' => true, + 'data' => $response + ]); + } + + // /** + // * UPDATE* + // * + // * ID ugradyp `route`-da update edip bilyan. Base App Enum-lardan peydalan. Panelkadan gor. + // */ + // public function update(Request $request, CardTransaction $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 9934612100000243 + // */ + // 'card_number' => ['sometimes', 'digits:16'], + + // /** + // * @example 12 + // */ + // 'card_month' => ['sometimes', Rule::in(array_keys(DateHelperRepository::staticNumberMonths()))], + + // /** + // * @example 2049 + // */ + // 'card_year' => ['sometimes', Rule::in(array_keys(DateHelperRepository::staticNumberYears()))], + // ]); + + // Model::unguarded(function () use ($order, $data) { + // $order->update($data); + // }); + + // return response()->json([ + // 'message' => __('Successfully updated'), + // ]); + // } + + // /** + // * DELETE* + // */ + // public function destroy(CardTransaction $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/Models/Order/Card/CardBalance/CardBalance.php b/app/Models/Order/Card/CardBalance/CardBalance.php index 44ae54a..898f5f1 100644 --- a/app/Models/Order/Card/CardBalance/CardBalance.php +++ b/app/Models/Order/Card/CardBalance/CardBalance.php @@ -9,6 +9,7 @@ use Laravel\Nova\Actions\Actionable; /** * @property int $id + * @property int $user_id * @property string $passport_serie * @property string $passport_id * @property string $card_number diff --git a/routes/api.php b/routes/api.php index ac2c518..05e7146 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,6 +1,7 @@ group(function () { Route::post('card-requisites', [CardRequisiteController::class, 'store']); Route::post('card-requisites/{order}', [CardRequisiteController::class, 'update']); Route::delete('card-requisites/{order}', [CardRequisiteController::class, 'destroy']); + + // Card balances... [tested fully] + Route::get('card-balances', [CardBalanceController::class, 'index']); + Route::get('card-balances/{order}', [CardBalanceController::class, 'show']); + Route::get('card-balances-download/{order}', [CardBalanceController::class, 'download']); + Route::post('card-balances', [CardBalanceController::class, 'store']); + Route::post('card-balances/{order}', [CardBalanceController::class, 'update']); + Route::delete('card-balances/{order}', [CardBalanceController::class, 'destroy']); + });