From 7505ea4c05aafe3fc64499e95ddde1da69c86dfa Mon Sep 17 00:00:00 2001 From: Nurmuhammet Allanov Date: Thu, 12 Jun 2025 11:43:50 +0500 Subject: [PATCH] wip --- .../Api/CardOrder/CardOrderController.php | 2 + .../CardTransactionsController.php | 146 ++++++++++++++++++ .../Card/CardTransaction/CardTransaction.php | 1 + .../Order/Card/Requisite/CardRequisite.php | 5 + routes/api.php | 10 +- 5 files changed, 163 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/Api/CardTransaction/CardTransactionsController.php diff --git a/app/Http/Controllers/Api/CardOrder/CardOrderController.php b/app/Http/Controllers/Api/CardOrder/CardOrderController.php index 72e2312..8fd739e 100644 --- a/app/Http/Controllers/Api/CardOrder/CardOrderController.php +++ b/app/Http/Controllers/Api/CardOrder/CardOrderController.php @@ -34,6 +34,8 @@ class CardOrderController extends Controller /** * SAVE* + * + * POST ugradanyňdan soň, halkbank toleg link berer, webwiew -da açmaly. Şul route-da ýetende, break etse bolyar, `https://online.tbbank.gov.tm/online-payment-store` */ public function store(CardOrderStoreRequest $request): JsonResponse { diff --git a/app/Http/Controllers/Api/CardTransaction/CardTransactionsController.php b/app/Http/Controllers/Api/CardTransaction/CardTransactionsController.php new file mode 100644 index 0000000..5a04f29 --- /dev/null +++ b/app/Http/Controllers/Api/CardTransaction/CardTransactionsController.php @@ -0,0 +1,146 @@ +json( + CardTransaction::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()))] + ]); + + CardTransaction::forceCreate([ + ...$data, + ...[ + 'user_id' => auth()->id(), + ], + ]); + + return response()->json([ + 'message' => __('Successfully created'), + ], 201); + } + + /** + * SHOW* + * + * ID ugradyp alyan route -da. + */ + public function show(CardTransaction $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, 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(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/Models/Order/Card/CardTransaction/CardTransaction.php b/app/Models/Order/Card/CardTransaction/CardTransaction.php index 9597520..15fb0da 100644 --- a/app/Models/Order/Card/CardTransaction/CardTransaction.php +++ b/app/Models/Order/Card/CardTransaction/CardTransaction.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/app/Nova/Resources/Order/Card/Requisite/CardRequisite.php b/app/Nova/Resources/Order/Card/Requisite/CardRequisite.php index 7686910..4c37aca 100644 --- a/app/Nova/Resources/Order/Card/Requisite/CardRequisite.php +++ b/app/Nova/Resources/Order/Card/Requisite/CardRequisite.php @@ -9,6 +9,7 @@ use App\Nova\Filters\RegionFilter; use App\Nova\Filters\StatusFilter; use App\Nova\Nova; use App\Nova\Resource; +use App\Nova\Resources\Order\Card\CardType; use App\Nova\Resources\Order\Card\Requisite\Actions\DownloadCardRequisite; use App\Nova\Resources\Order\Card\Requisite\Concerns\CardRequisiteFieldsForDetail; use App\Nova\Resources\Order\Card\Requisite\Concerns\CardRequisiteFieldsForIndex; @@ -21,6 +22,7 @@ use App\Rules\OnlyLetters; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Gate; +use Laravel\Nova\Fields\BelongsTo; use Laravel\Nova\Fields\Date; use Laravel\Nova\Fields\Hidden; use Laravel\Nova\Fields\ID; @@ -205,6 +207,9 @@ class CardRequisite extends Resource ->canSeeWhen('systemUser', $this), new Panel(__('Card'), [ + BelongsTo::make(__('Type'), 'cardType', CardType::class) + ->sortable(), + NovaInputmask::make(__('Card number'), 'card_number') ->mask('9999 9999 9999 9999') ->storeRawValue() diff --git a/routes/api.php b/routes/api.php index ef79f38..cd719c4 100644 --- a/routes/api.php +++ b/routes/api.php @@ -2,6 +2,7 @@ use App\Http\Controllers\AlertController; use App\Http\Controllers\Api\CardOrder\CardOrderController; +use App\Http\Controllers\Api\CardTransaction\CardTransactionsController; use App\Http\Controllers\Api\FetchLoanHistoryController; use App\Http\Controllers\Api\LoanOrder\Remaining\LoanOrderRemainingOrderController; use App\Http\Controllers\Api\LoanPaidOffLetterOrderController; @@ -91,10 +92,17 @@ Route::middleware(['auth:sanctum', 'not_banned'])->group(function () { // Alerts... Route::get('alerts', [AlertController::class, 'index']); - // Card order... [tested fully] + // Card orders... [tested fully] 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']); + + // Card transactions... + Route::get('card-transactions', [CardTransactionsController::class, 'index']); + Route::get('card-transactions/{order}', [CardTransactionsController::class, 'show']); + Route::post('card-transactions', [CardTransactionsController::class, 'store']); + Route::post('card-transactions/{order}', [CardTransactionsController::class, 'update']); + Route::delete('card-transactions/{order}', [CardTransactionsController::class, 'destroy']); });