json(CardRequisiteIndexResource::collection( CardRequisite::query() ->with(['cardType', 'branch']) ->where('user_id', auth()->id()) ->latest() ->get() )); } /** * SAVE* */ public function store(CardRequisiteStoreRequest $request): JsonResponse { $data = $request->validated(); $model = CardRequisite::forceCreate([ ...$data, ...[ 'user_id' => auth()->id(), 'status' => OrderRepo::PENDING, ], ...$this->uploadedFiles($request), ]); $model->update(['unique_id' => CardOrderRepo::fillUniqueId($model)]); return response()->json([ 'message' => __('Successfully created'), ], 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. Soň page-da download button bolmaly, basaňdan soň, `/api/card-requisites-download/{order}` route gelyan file download etmeli. */ public function show(CardRequisite $order): JsonResponse { if ($order->user_id != auth()->id()) { return response()->json(status: 403); } return response()->json(new CardRequisiteIndexResource($order)); } /** * Download* * * Download card transaction file */ public function download(Request $request, CardRequisite $order) { $date = today()->format('d.m.Y'); $response = vp_fetch_ClientInfoAll($order, $date, $date); if ($response->errCode != 0) { return response()->json([ 'status' => false, 'message' => $response->message, 'url' => '', ]); } $path = DownloadCardRequisite::make()->generateFile($order, $response); return response()->json([ 'status' => true, 'message' => $response->message, 'url' => url($path), ]); } /** * UPDATE* * * ID ugradyp `route`-da update edip bilyan. Base App Enum-lardan peydalan. Panelkadan gor. */ public function update(CardRequisiteUpdateRequest $request, CardRequisite $order): JsonResponse { $data = array_merge($request->validated(), $this->uploadedFiles($request)); Model::unguarded(function () use ($order, $data) { $order->update($data); }); return response()->json([ 'message' => __('Successfully updated'), ]); } /** * DELETE* */ public function destroy(CardRequisite $order): JsonResponse { if ($order->user_id != auth()->id()) { return response()->json(status: 403); } $order->delete(); return response()->json([ 'message' => __('Successfully deleted'), ]); } }