input('per_page', 15); $search = $request->input('search', ''); $query = Tourism::query(); $tourisms = $query->paginate($perPage); $tourisms->getCollection()->transform(function ($tourisms) { $village = DB::table('villages')->where('village_code', $tourisms->village_code)->first(); $tourisms->village_name = $village ? $village->village_name : null; $district = DB::table('districts')->where('district_code', $tourisms->district_code)->first(); $tourisms->district_name = $district ? $district->district_name : null; $business_type = DB::table('business_type')->where('id', $tourisms->business_type_id)->first(); $tourisms->business_type = $business_type ? $business_type->business_type : null; return $tourisms; }); return response()->json([ 'data' => TourismResource::collection($tourisms), 'meta' => [ 'total' => $tourisms->total(), 'per_page' => $tourisms->perPage(), 'current_page' => $tourisms->currentPage(), 'last_page' => $tourisms->lastPage(), ] ]); } /** * Store a newly created resource in storage. */ public function store(TourismRequest $request): Tourism { info($request); $data = $request->validated(); $district_code = DB::table('districts')->where('district_name', $data['district_name'])->value('district_code'); $village_code = DB::table('villages')->where('village_name', $data['village_name'])->where('district_code', $district_code)->value('village_code'); $data['district_code'] = $district_code; $data['village_code'] = $village_code; return Tourism::create($data); } /** * Import advertisements from Excel or CSV */ public function importFromFile(Request $request) { //Validasi file $validator = Validator::make($request->all(), [ 'file' => 'required|mimes:xlsx, xls|max:10240' ]); if ($validator->fails()) { return response()->json([ 'message' => 'File validation failed.', 'errors' => $validator->errors() ], 400); } try { $file = $request->file('file'); Excel::import(new TourismImport, $file); return response()->json([ 'message' => 'File uploaded and imported successfully!' ], 200); } catch (\Exception $e) { return response()->json([ 'message' => 'Error during file import.', 'error' => $e->getMessage() ], 500); } } /** * Display the specified resource. */ public function show(Tourism $tourism): Tourism { return $tourism; } /** * Update the specified resource in storage. */ public function update(TourismRequest $request, Tourism $tourism): Tourism { $tourism->update($request->validated()); return $tourism; } public function destroy(Tourism $tourism): Response { $tourism->delete(); return response()->noContent(); } }