interim fix for drop downs
This commit is contained in:
@@ -18,11 +18,11 @@ class CompanyController extends Controller
|
||||
{
|
||||
return view('company::index', [
|
||||
'companies' => Company::query()
|
||||
->with(['address.country', 'country'])
|
||||
->with(['address.country'])
|
||||
->withCount(['users', 'warehouses', 'licenseKeys', 'divisions'])
|
||||
->latest('id')
|
||||
->paginate(20),
|
||||
'countries' => $this->countries(),
|
||||
'countries' => $this->countriesForSelect(),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ class CompanyController extends Controller
|
||||
'status' => 'active',
|
||||
'timezone' => 'Europe/London',
|
||||
]),
|
||||
'countries' => $this->countries(),
|
||||
'countries' => $this->countriesForSelect(),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -45,7 +45,10 @@ class CompanyController extends Controller
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
$company = Company::create($this->validated($request));
|
||||
$validated = $this->validated($request);
|
||||
|
||||
$company = Company::create($validated['company']);
|
||||
$this->syncAddressCountry($company, $validated['country_id']);
|
||||
|
||||
return redirect()
|
||||
->route('platform.companies.index')
|
||||
@@ -73,7 +76,7 @@ class CompanyController extends Controller
|
||||
'recentUsers' => $company->users()->latest('id')->limit(5)->get(),
|
||||
'recentWarehouses' => $company->warehouses()->latest('id')->limit(5)->get(),
|
||||
'recentLicenseKeys' => $company->licenseKeys()->latest('id')->limit(5)->get(),
|
||||
'countries' => Country::query()->active()->orderBy('sort_order')->orderBy('name')->get(['id', 'alpha2', 'name', 'display_name', 'common_name']),
|
||||
'countries' => $this->countriesForSelect(),
|
||||
'companyUsers' => $company->users()->orderBy('name')->get(['id', 'name', 'email', 'company_id']),
|
||||
'unassignedWarehouses' => $company->warehouses()->whereNull('division_id')->orderBy('name')->get(),
|
||||
]);
|
||||
@@ -85,8 +88,8 @@ class CompanyController extends Controller
|
||||
public function edit(Company $company)
|
||||
{
|
||||
return view('company::edit', [
|
||||
'company' => $company->loadMissing(['address.country', 'country']),
|
||||
'countries' => $this->countries(),
|
||||
'company' => $company->loadMissing('address.country'),
|
||||
'countries' => $this->countriesForSelect(),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -95,7 +98,10 @@ class CompanyController extends Controller
|
||||
*/
|
||||
public function update(Request $request, Company $company)
|
||||
{
|
||||
$company->update($this->validated($request, $company));
|
||||
$validated = $this->validated($request, $company);
|
||||
|
||||
$company->update($validated['company']);
|
||||
$this->syncAddressCountry($company, $validated['country_id']);
|
||||
|
||||
return redirect()
|
||||
->route('platform.companies.show', $company)
|
||||
@@ -122,20 +128,44 @@ class CompanyController extends Controller
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'billing_email' => ['nullable', 'email', 'max:255'],
|
||||
'status' => ['required', Rule::in(['active', 'suspended', 'inactive'])],
|
||||
'country_id' => ['nullable', Rule::exists('countries', 'id')->where('is_active', true)],
|
||||
'country_id' => ['nullable', 'integer', Rule::exists('countries', 'id')],
|
||||
]);
|
||||
|
||||
$data['slug'] = Str::slug($data['name']);
|
||||
$data['timezone'] = $company?->timezone ?: 'Europe/London';
|
||||
|
||||
return $data;
|
||||
return [
|
||||
'company' => [
|
||||
'name' => $data['name'],
|
||||
'billing_email' => $data['billing_email'] ?? null,
|
||||
'status' => $data['status'],
|
||||
'slug' => Str::slug($data['name']),
|
||||
'timezone' => $company?->timezone ?: 'Europe/London',
|
||||
],
|
||||
'country_id' => $data['country_id'] ?? null,
|
||||
];
|
||||
}
|
||||
|
||||
private function countries()
|
||||
private function countriesForSelect()
|
||||
{
|
||||
return Country::query()
|
||||
->active()
|
||||
->ordered()
|
||||
->get(['id', 'alpha2', 'name', 'display_name', 'common_name', 'sort_order']);
|
||||
->orderByRaw("LOWER(COALESCE(NULLIF(display_name, ''), NULLIF(common_name, ''), name)) ASC")
|
||||
->get(['id', 'alpha2', 'name', 'display_name', 'common_name']);
|
||||
}
|
||||
|
||||
private function syncAddressCountry(Company $company, ?int $countryId): void
|
||||
{
|
||||
if ($countryId === null) {
|
||||
$company->address()?->delete();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$company->address()->updateOrCreate(
|
||||
[],
|
||||
[
|
||||
'country_id' => $countryId,
|
||||
'label' => 'Registered address',
|
||||
'is_primary' => true,
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user