query('q', '')); $countries = Country::query() ->when($search !== '', function ($query) use ($search): void { $query->where(function ($countryQuery) use ($search): void { $countryQuery ->where('iso2', 'like', '%'.$search.'%') ->orWhere('iso3', 'like', '%'.$search.'%') ->orWhere('name_common', 'like', '%'.$search.'%') ->orWhere('name_official', 'like', '%'.$search.'%'); }); }) ->ordered() ->paginate(50) ->withQueryString(); return view('admin.countries.index', [ 'countries' => $countries, 'search' => $search, ]); } public function sync(Request $request, CountrySyncService $countrySyncService): RedirectResponse { try { $summary = $countrySyncService->sync(); } catch (Throwable $exception) { return redirect() ->route('admin.countries.index') ->with('error', $exception->getMessage()); } $message = sprintf( 'Countries synced from %s. Inserted %d, updated %d, skipped %d, deactivated %d.', (string) ($summary['source'] ?? 'unknown'), (int) ($summary['inserted'] ?? 0), (int) ($summary['updated'] ?? 0), (int) ($summary['skipped'] ?? 0), (int) ($summary['deactivated'] ?? 0), ); return redirect() ->route('admin.countries.index') ->with('success', $message); } public function cpMain(Request $request): View { $view = $this->index($request); return view('admin.countries.cpad', $view->getData()); } public function cpSync(Request $request, CountrySyncService $countrySyncService): RedirectResponse { try { $summary = $countrySyncService->sync(); } catch (Throwable $exception) { return redirect() ->route('admin.cp.countries.main') ->with('msg_error', $exception->getMessage()); } $message = sprintf( 'Countries synced from %s. Inserted %d, updated %d, skipped %d, deactivated %d.', (string) ($summary['source'] ?? 'unknown'), (int) ($summary['inserted'] ?? 0), (int) ($summary['updated'] ?? 0), (int) ($summary['skipped'] ?? 0), (int) ($summary['deactivated'] ?? 0), ); return redirect() ->route('admin.cp.countries.main') ->with('msg_success', $message); } }