json(CardOrderIndexResource::collection( CardOrder::query() ->with(['branch', 'cardState', 'cardType']) ->where('user_id', auth()->id()) ->get() )); } /** * 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 { $data = $request->validated(); $model = CardOrder::forceCreate([ ...$data, ...[ 'user_id' => auth()->id(), 'citizenship' => 'TM', 'status' => OrderRepo::PENDING, ], ...$this->uploadedFiles($request), ]); CardOrderRepo::created()($model); $payment = (new OnlinePaymentRepo)->payCardOrder($model); return response()->json([ 'message' => __('Successfully created'), 'payment' => [ 'status' => $payment['status'] === 'success', 'url' => $payment['status'] === 'success' ? $payment['url'] : '', ], ], 201); } /** * Upload files * * @return array */ public function uploadedFiles(Request $request): array { $files = []; foreach (['passport_one', 'passport_two', 'passport_three', 'passport_four'] as $field) { if ($request->hasFile($field)) { $files[$field] = Str::after($request->file($field)->store('public'), 'public/'); } } return $files; } /** * SHOW* * * ID ugradyp alyan route -da. */ public function show(CardOrder $cardOrder) { if ($cardOrder->user_id != auth()->id()) { return response()->json(status: 403); } return response()->json(new CardOrderIndexResource($cardOrder)); } /** * UPDATE* * * ID ugradyp `route`-da update edip bilyan. Base App Enum-lardan peydalan. Panelkadan gor. */ public function update(CardOrderUpdateRequest $request, CardOrder $cardOrder): JsonResponse { $data = array_merge($request->validated(), $this->uploadedFiles($request)); Model::unguarded(function () use ($cardOrder, $data) { $cardOrder->update($data); }); return response()->json([ 'message' => __('Successfully updated'), ]); } /** * DELETE* */ public function destroy(CardOrder $cardOrder): JsonResponse { if ($cardOrder->user_id !== auth()->id()) { return response()->json(status: 403); } $cardOrder->delete(); return response()->json([ 'message' => __('Successfully deleted'), ]); } }