Company::withCount(['users', 'warehouses', 'licenseKeys'])->latest('id')->paginate(20), ]); } /** * Create a company tenant. */ public function store(Request $request) { $data = $request->validate([ 'name' => ['required', 'string', 'max:255'], 'billing_email' => ['nullable', 'email', 'max:255'], 'status' => ['required', 'in:active,suspended'], ]); Company::create([ ...$data, 'slug' => Str::slug($data['name']), 'timezone' => 'Europe/London', ]); return back()->with('status', 'Company created.'); } public function create() { return view('company::create', [ 'company' => new Company, ]); } public function show(Company $company) { return view('company::show', [ 'company' => $company, ]); } public function edit(Company $company) { return view('company::edit', [ 'company' => $company, ]); } public function update(Request $request, Company $company) { $company->update($this->validated($request, $company)); return redirect() ->route('platform.companies.show', $company) ->with('status', 'Company updated.'); } public function destroy(Company $company) { $company->delete(); return redirect() ->route('platform.companies.index') ->with('status', 'Company deleted.'); } private function validated(Request $request, ?Company $company = null): array { return $request->validate([ 'name' => ['required', 'string', 'max:255'], 'billing_email' => ['required', 'email', 'max:255'], 'status' => ['required', Rule::in(['active', 'inactive'])], ]); } }