From 82772a511c94e08087ba957cfcf479afa7660bc6 Mon Sep 17 00:00:00 2001 From: Mark Gregory Date: Thu, 2 Jul 2026 11:23:34 +0100 Subject: [PATCH] Addec crud entries for a company / companies --- .../Http/Controllers/CompanyController.php | 53 +++++++ .../Providers/RouteServiceProvider.php | 3 +- .../Company/Resources/views/_form.blade.php | 47 ++++++ .../Company/Resources/views/create.blade.php | 9 ++ .../Company/Resources/views/edit.blade.php | 17 +++ .../Company/Resources/views/index.blade.php | 135 +++++++++++++----- .../Company/Resources/views/show.blade.php | 52 +++++++ Modules/Company/Routes/web.php | 7 +- 8 files changed, 283 insertions(+), 40 deletions(-) create mode 100644 Modules/Company/Resources/views/_form.blade.php create mode 100644 Modules/Company/Resources/views/create.blade.php create mode 100644 Modules/Company/Resources/views/edit.blade.php create mode 100644 Modules/Company/Resources/views/show.blade.php diff --git a/Modules/Company/Http/Controllers/CompanyController.php b/Modules/Company/Http/Controllers/CompanyController.php index 042dc401..dcb586a8 100644 --- a/Modules/Company/Http/Controllers/CompanyController.php +++ b/Modules/Company/Http/Controllers/CompanyController.php @@ -5,6 +5,7 @@ namespace Modules\Company\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Str; +use Illuminate\Validation\Rule; use Modules\Company\Models\Company; class CompanyController extends Controller @@ -38,4 +39,56 @@ class CompanyController extends Controller 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'])], + ]); + } } diff --git a/Modules/Company/Providers/RouteServiceProvider.php b/Modules/Company/Providers/RouteServiceProvider.php index 0e0adf2b..8d38c074 100644 --- a/Modules/Company/Providers/RouteServiceProvider.php +++ b/Modules/Company/Providers/RouteServiceProvider.php @@ -12,7 +12,8 @@ class RouteServiceProvider extends ServiceProvider * * @var string */ - protected $moduleNamespace = 'Modules\Company\Http\Controllers'; + protected $moduleNamespace = ''; + // this must be blank for resource routes !! /** * Called before routes are registered. diff --git a/Modules/Company/Resources/views/_form.blade.php b/Modules/Company/Resources/views/_form.blade.php new file mode 100644 index 00000000..cf989ca7 --- /dev/null +++ b/Modules/Company/Resources/views/_form.blade.php @@ -0,0 +1,47 @@ +{{-- Modules/Company/resources/views/companies/_form.blade.php --}} + +@csrf + +
+
+ + + @error('name')

{{ $message }}

@enderror +
+ +
+ + + @error('billing_email')

{{ $message }}

@enderror +
+ +
+ + + @error('status')

{{ $message }}

@enderror +
+ +
+ + + + Cancel + +
+
diff --git a/Modules/Company/Resources/views/create.blade.php b/Modules/Company/Resources/views/create.blade.php new file mode 100644 index 00000000..1f6e641e --- /dev/null +++ b/Modules/Company/Resources/views/create.blade.php @@ -0,0 +1,9 @@ +{{-- Modules/Company/resources/views/companies/create.blade.php --}} + + + + +
+ @include('company::companies._form') +
+
diff --git a/Modules/Company/Resources/views/edit.blade.php b/Modules/Company/Resources/views/edit.blade.php new file mode 100644 index 00000000..42ec6a62 --- /dev/null +++ b/Modules/Company/Resources/views/edit.blade.php @@ -0,0 +1,17 @@ + +
+ + +
+
+ @method('PUT') + @include('company::_form') +
+
+
+
diff --git a/Modules/Company/Resources/views/index.blade.php b/Modules/Company/Resources/views/index.blade.php index f9974c2c..357d551d 100644 --- a/Modules/Company/Resources/views/index.blade.php +++ b/Modules/Company/Resources/views/index.blade.php @@ -1,49 +1,114 @@
- -
-

Create company

-
- @csrf - - - - -
+ icon="fa-solid fa-building" + /> + + -
+ +
- - - - - - - + + + + + + + + + - @foreach ($companies as $company) - - - - - - - - @endforeach + @forelse ($companies as $company) + + + + + + + + + + + + + + @empty + + + + @endforelse
NameUsersWarehousesLicencesStatus
NameUsersWarehousesLicencesStatusActions
{{ $company->name }}{{ $company->users_count }}{{ $company->warehouses_count }}{{ $company->license_keys_count }}{{ $company->is_system_company ? 'System' : $company->status }}
+ {{ $company->name }} + + {{ $company->users_count }} + + {{ $company->warehouses_count }} + + {{ $company->license_keys_count }} + + + {{ $company->is_system_company ? 'System' : ucfirst($company->status) }} + + +
+ + View + + + + Edit + + + @unless ($company->is_system_company) +
+ @csrf + @method('DELETE') + + +
+ @endunless +
+
+ No companies found. +
+ {{ $companies->links() }}
diff --git a/Modules/Company/Resources/views/show.blade.php b/Modules/Company/Resources/views/show.blade.php new file mode 100644 index 00000000..54a1fb18 --- /dev/null +++ b/Modules/Company/Resources/views/show.blade.php @@ -0,0 +1,52 @@ + +
+ + +
+
+
+
Billing email
+
{{ $company->billing_email ?? '—' }}
+
+ +
+
Status
+
+ {{ $company->is_system_company ? 'System' : ucfirst($company->status) }} +
+
+ +
+
Timezone
+
{{ $company->timezone }}
+
+ +
+
Slug
+
{{ $company->slug }}
+
+
+ + +
+
+
diff --git a/Modules/Company/Routes/web.php b/Modules/Company/Routes/web.php index 0ba7ab0a..cc7e8e11 100644 --- a/Modules/Company/Routes/web.php +++ b/Modules/Company/Routes/web.php @@ -13,10 +13,9 @@ use Modules\Company\Http\Controllers\CompanyController; -Route::middleware(['auth', 'verified', 'tenant.assigned', 'platform.admin']) +Route::middleware(['web', 'auth', 'verified', 'tenant.assigned', 'platform.admin']) ->prefix('admin') ->name('platform.') - ->group(function (): void { - Route::get('/companies', [CompanyController::class, 'index'])->name('companies.index'); - Route::post('/companies', [CompanyController::class, 'store'])->name('companies.store'); + ->group(function () { + Route::resource('companies', CompanyController::class); });