countries selection fixed

This commit is contained in:
Mark Gregory
2026-07-07 15:55:17 +01:00
parent d90c945e83
commit ec27834043
20 changed files with 945 additions and 299 deletions
@@ -4,7 +4,6 @@ namespace Modules\Company\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Str;
use Illuminate\Validation\Rule;
use Modules\Company\Models\Company;
@@ -17,24 +16,12 @@ class CompanyController extends Controller
*/
public function index()
{
$counts = ['users', 'warehouses', 'licenseKeys'];
if (Schema::hasTable('company_divisions')) {
$counts[] = 'divisions';
}
$companies = Company::query()
->with(['country'])
->withCount($counts)
->orderBy('name')
->paginate(20);
$companies->getCollection()->each(function (Company $company): void {
$company->setAttribute('divisions_count', $company->getAttribute('divisions_count') ?? 0);
});
return view('company::index', [
'companies' => $companies,
'companies' => Company::query()
->with(['address.country', 'country'])
->withCount(['users', 'warehouses', 'licenseKeys', 'divisions'])
->orderBy('name')
->paginate(20),
'countries' => $this->countries(),
]);
}
@@ -70,20 +57,17 @@ class CompanyController extends Controller
*/
public function show(Company $company)
{
$loads = ['country'];
$counts = ['users', 'warehouses', 'licenseKeys', 'payments'];
if (Schema::hasTable('company_divisions')) {
$loads[] = 'divisions';
$counts[] = 'divisions';
}
if (Schema::hasTable('company_director_assignments')) {
$loads[] = 'directorAssignments.user';
}
$company->load($loads)->loadCount($counts);
$company->setAttribute('divisions_count', $company->getAttribute('divisions_count') ?? 0);
$company->load([
'address.country',
'country',
'divisions.address.country',
'divisions.warehouses',
'divisions.users',
'warehouses.address.country',
'warehouses.division',
'directorAssignments.user',
'directorAssignments.division',
])->loadCount(['users', 'warehouses', 'licenseKeys', 'payments', 'divisions']);
return view('company::show', [
'company' => $company,
@@ -91,6 +75,8 @@ class CompanyController extends Controller
'recentWarehouses' => $company->warehouses()->latest('id')->limit(5)->get(),
'recentLicenseKeys' => $company->licenseKeys()->latest('id')->limit(5)->get(),
'countries' => $this->countries(),
'companyUsers' => $company->users()->orderBy('name')->get(['id', 'name', 'email', 'company_id']),
'unassignedWarehouses' => $company->warehouses()->whereNull('division_id')->orderBy('name')->get(),
]);
}
@@ -100,7 +86,7 @@ class CompanyController extends Controller
public function edit(Company $company)
{
return view('company::edit', [
'company' => $company->loadMissing('country'),
'company' => $company->loadMissing(['address.country', 'country']),
'countries' => $this->countries(),
]);
}
@@ -140,14 +126,10 @@ class CompanyController extends Controller
'country_id' => ['nullable', Rule::exists('countries', 'id')->where('is_active', true)],
]);
return [
'name' => $data['name'],
'billing_email' => $data['billing_email'] ?? null,
'status' => $data['status'],
'country_id' => $data['country_id'] ?? null,
'slug' => Str::slug($data['name']),
'timezone' => $company?->timezone ?: 'Europe/London',
];
$data['slug'] = Str::slug($data['name']);
$data['timezone'] = $company?->timezone ?: 'Europe/London';
return $data;
}
private function countries()
@@ -155,6 +137,6 @@ class CompanyController extends Controller
return Country::query()
->active()
->orderByRaw("LOWER(COALESCE(NULLIF(display_name, ''), NULLIF(common_name, ''), name)) ASC")
->get(['id', 'alpha2', 'name', 'display_name', 'common_name']);
->get(['id', 'alpha2', 'name', 'display_name', 'common_name', 'sort_order']);
}
}