added countries support

This commit is contained in:
Mark Gregory
2026-06-15 09:05:15 +01:00
parent e91b4251fd
commit 63a9981c7c
21 changed files with 653 additions and 284 deletions
@@ -2,78 +2,63 @@
namespace Modules\Countries\Http\Controllers;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\Countries\Http\Requests\UpdateCountryRequest;
use Modules\Countries\Models\Country;
class CountriesController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index()
public function index(Request $request): View
{
return view('countries::index');
$search = trim((string) $request->query('search', ''));
$status = (string) $request->query('status', 'all');
$countries = Country::query()
->when($search !== '', function ($query) use ($search): void {
$query->where(function ($nested) use ($search): void {
$nested->where('name', 'ilike', "%{$search}%")
->orWhere('official_name', 'ilike', "%{$search}%")
->orWhere('common_name', 'ilike', "%{$search}%")
->orWhere('display_name', 'ilike', "%{$search}%")
->orWhere('alpha2', 'ilike', "%{$search}%")
->orWhere('alpha3', 'ilike', "%{$search}%")
->orWhere('numeric', 'ilike', "%{$search}%");
});
})
->when($status === 'active', fn ($query) => $query->where('is_active', true))
->when($status === 'inactive', fn ($query) => $query->where('is_active', false))
->ordered()
->paginate(50)
->withQueryString();
$activeCount = Country::query()->where('is_active', true)->count();
$inactiveCount = Country::query()->where('is_active', false)->count();
$totalCount = Country::query()->count();
return view('countries::index', compact('countries', 'activeCount', 'inactiveCount', 'totalCount', 'search', 'status'));
}
/**
* Show the form for creating a new resource.
* @return Renderable
*/
public function create()
public function show(Country $country): View
{
return view('countries::create');
return view('countries::show', compact('country'));
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Renderable
*/
public function store(Request $request)
public function edit(Country $country): View
{
//
return view('countries::edit', compact('country'));
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($id)
public function update(UpdateCountryRequest $request, Country $country): RedirectResponse
{
return view('countries::show');
}
$country->update([
'display_name' => $request->validated('display_name'),
'is_active' => $request->boolean('is_active'),
'sort_order' => (int) ($request->validated('sort_order') ?? 0),
]);
/**
* Show the form for editing the specified resource.
* @param int $id
* @return Renderable
*/
public function edit($id)
{
return view('countries::edit');
}
/**
* Update the specified resource in storage.
* @param Request $request
* @param int $id
* @return Renderable
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
return redirect()->route('countries.show', $country)->with('success', 'Country settings updated.');
}
}