diff --git a/Modules/Company/Http/Controllers/CompanyController.php b/Modules/Company/Http/Controllers/CompanyController.php index 5d727101..042dc401 100644 --- a/Modules/Company/Http/Controllers/CompanyController.php +++ b/Modules/Company/Http/Controllers/CompanyController.php @@ -2,78 +2,40 @@ namespace Modules\Company\Http\Controllers; -use Illuminate\Contracts\Support\Renderable; +use App\Http\Controllers\Controller; use Illuminate\Http\Request; -use Illuminate\Routing\Controller; +use Illuminate\Support\Str; +use Modules\Company\Models\Company; class CompanyController extends Controller { /** - * Display a listing of the resource. - * @return Renderable + * Display companies. */ public function index() { - return view('company::index'); + return view('company::index', [ + 'companies' => Company::withCount(['users', 'warehouses', 'licenseKeys'])->latest('id')->paginate(20), + ]); } /** - * Show the form for creating a new resource. - * @return Renderable - */ - public function create() - { - return view('company::create'); - } - - /** - * Store a newly created resource in storage. - * @param Request $request - * @return Renderable + * 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'], + ]); - /** - * Show the specified resource. - * @param int $id - * @return Renderable - */ - public function show($id) - { - return view('company::show'); - } + Company::create([ + ...$data, + 'slug' => Str::slug($data['name']), + 'timezone' => 'Europe/London', + ]); - /** - * Show the form for editing the specified resource. - * @param int $id - * @return Renderable - */ - public function edit($id) - { - return view('company::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 back()->with('status', 'Company created.'); } } diff --git a/Modules/Platform/app/Models/Company.php b/Modules/Company/Models/Company.php similarity index 92% rename from Modules/Platform/app/Models/Company.php rename to Modules/Company/Models/Company.php index a05711f8..3457f8a3 100644 --- a/Modules/Platform/app/Models/Company.php +++ b/Modules/Company/Models/Company.php @@ -1,18 +1,19 @@ Hello World - -

- This view is loaded from module: {!! config('company.name') !!} -

-@endsection + +
+ +
+

Create company

+
+ @csrf + + + + +
+
+
+ + + + + + + + + + + + @foreach ($companies as $company) + + + + + + + + @endforeach + +
NameUsersWarehousesLicencesStatus
{{ $company->name }}{{ $company->users_count }}{{ $company->warehouses_count }}{{ $company->license_keys_count }}{{ $company->is_system_company ? 'System' : $company->status }}
+
+ {{ $companies->links() }} +
+
diff --git a/Modules/Company/Resources/views/layouts/master.blade.php b/Modules/Company/Resources/views/layouts/master.blade.php deleted file mode 100644 index a937600e..00000000 --- a/Modules/Company/Resources/views/layouts/master.blade.php +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - Module Company - - {{-- Laravel Mix - CSS File --}} - {{-- --}} - - - - @yield('content') - - {{-- Laravel Mix - JS File --}} - {{-- --}} - - diff --git a/Modules/Company/Routes/web.php b/Modules/Company/Routes/web.php index 58a46570..0ba7ab0a 100644 --- a/Modules/Company/Routes/web.php +++ b/Modules/Company/Routes/web.php @@ -11,6 +11,12 @@ | */ -Route::prefix('company')->group(function() { - Route::get('/', 'CompanyController@index'); -}); +use Modules\Company\Http\Controllers\CompanyController; + +Route::middleware(['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'); + }); diff --git a/Modules/Helpdesk/Database/factories/TicketFactory.php b/Modules/Helpdesk/Database/factories/TicketFactory.php index 4ccf4aff..04fdff77 100644 --- a/Modules/Helpdesk/Database/factories/TicketFactory.php +++ b/Modules/Helpdesk/Database/factories/TicketFactory.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace Modules\Helpdesk\Database\factories; -use App\Models\Company; +use Modules\Company\Models\Company use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Facades\Schema; diff --git a/Modules/Helpdesk/Models/Category.php b/Modules/Helpdesk/Models/Category.php index 2d643b37..936800b9 100644 --- a/Modules/Helpdesk/Models/Category.php +++ b/Modules/Helpdesk/Models/Category.php @@ -4,17 +4,15 @@ declare(strict_types=1); namespace Modules\Helpdesk\Models; -use App\Models\Company; use App\Models\User; -use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; +use Modules\Company\Models\Company; final class Category extends Model { - use HasFactory; protected $table = 'helpdesk_categories'; diff --git a/Modules/Helpdesk/Models/Project.php b/Modules/Helpdesk/Models/Project.php index 8004fe8c..c0308bdc 100644 --- a/Modules/Helpdesk/Models/Project.php +++ b/Modules/Helpdesk/Models/Project.php @@ -4,8 +4,7 @@ declare(strict_types=1); namespace Modules\Helpdesk\Models; -use App\Models\Company; -use Illuminate\Database\Eloquent\Factories\HasFactory; +use Modules\Company\Models\Company; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -13,7 +12,6 @@ use Illuminate\Database\Eloquent\SoftDeletes; final class Project extends Model { - use HasFactory; use SoftDeletes; protected $table = 'helpdesk_projects'; diff --git a/Modules/Helpdesk/Models/Team.php b/Modules/Helpdesk/Models/Team.php index 9152efec..52536a3d 100644 --- a/Modules/Helpdesk/Models/Team.php +++ b/Modules/Helpdesk/Models/Team.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace Modules\Helpdesk\Models; -use App\Models\Company; +use Modules\Company\Models\Company; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; diff --git a/Modules/Helpdesk/Tests/Feature/TicketConversationTest.php b/Modules/Helpdesk/Tests/Feature/TicketConversationTest.php index 061c3f8b..872890f0 100644 --- a/Modules/Helpdesk/Tests/Feature/TicketConversationTest.php +++ b/Modules/Helpdesk/Tests/Feature/TicketConversationTest.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace Modules\Helpdesk\Tests\Feature; -use App\Models\Company; +use Modules\Company\Models\Company use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Mail; diff --git a/Modules/InternalApi/app/Http/Controllers/CompanySummaryController.php b/Modules/InternalApi/app/Http/Controllers/CompanySummaryController.php index cdb39d47..81150dc0 100644 --- a/Modules/InternalApi/app/Http/Controllers/CompanySummaryController.php +++ b/Modules/InternalApi/app/Http/Controllers/CompanySummaryController.php @@ -3,7 +3,7 @@ namespace Modules\InternalApi\app\Http\Controllers; use App\Http\Controllers\Controller; -use Modules\Platform\app\Models\Company; +use Modules\Company\Models\Company; class CompanySummaryController extends Controller { diff --git a/Modules/Platform/app/Http/Controllers/CompanyController.php b/Modules/Platform/app/Http/Controllers/CompanyController.php deleted file mode 100644 index 8f91ecbf..00000000 --- a/Modules/Platform/app/Http/Controllers/CompanyController.php +++ /dev/null @@ -1,41 +0,0 @@ - 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.'); - } -} diff --git a/Modules/Platform/app/Http/Controllers/LicenseKeyController.php b/Modules/Platform/app/Http/Controllers/LicenseKeyController.php index 3e8abf0e..b7115f90 100644 --- a/Modules/Platform/app/Http/Controllers/LicenseKeyController.php +++ b/Modules/Platform/app/Http/Controllers/LicenseKeyController.php @@ -4,7 +4,7 @@ namespace Modules\Platform\app\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; -use Modules\Platform\app\Models\Company; +use Modules\Company\Models\Company; use Modules\Platform\app\Models\LicenseKey; class LicenseKeyController extends Controller diff --git a/Modules/Platform/app/Http/Controllers/PaymentController.php b/Modules/Platform/app/Http/Controllers/PaymentController.php index 4103960c..df91d120 100644 --- a/Modules/Platform/app/Http/Controllers/PaymentController.php +++ b/Modules/Platform/app/Http/Controllers/PaymentController.php @@ -4,7 +4,7 @@ namespace Modules\Platform\app\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; -use Modules\Platform\app\Models\Company; +use Modules\Company\Models\Company; use Modules\Platform\app\Models\Payment; class PaymentController extends Controller diff --git a/Modules/Platform/app/Http/Controllers/PlatformDashboardController.php b/Modules/Platform/app/Http/Controllers/PlatformDashboardController.php index b046aef8..caa75ff4 100644 --- a/Modules/Platform/app/Http/Controllers/PlatformDashboardController.php +++ b/Modules/Platform/app/Http/Controllers/PlatformDashboardController.php @@ -5,7 +5,7 @@ namespace Modules\Platform\app\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Contracts\View\View; use Illuminate\Support\Facades\Schema; -use Modules\Platform\app\Models\Company; +use Modules\Company\Models\Company; use Modules\Platform\app\Models\LicenseKey; use Modules\Platform\app\Models\Payment; use Modules\Platform\app\Models\PlatformPrice; diff --git a/Modules/Platform/app/Http/Controllers/StripeWebhookController.php b/Modules/Platform/app/Http/Controllers/StripeWebhookController.php index c870b28a..6816772c 100644 --- a/Modules/Platform/app/Http/Controllers/StripeWebhookController.php +++ b/Modules/Platform/app/Http/Controllers/StripeWebhookController.php @@ -4,7 +4,7 @@ namespace Modules\Platform\app\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; -use Modules\Platform\app\Models\Company; +use Modules\Company\Models\Company; use Modules\Platform\app\Models\Payment; class StripeWebhookController extends Controller diff --git a/Modules/Platform/app/Models/LicenseKey.php b/Modules/Platform/app/Models/LicenseKey.php index fc1ce73a..cdc1334e 100644 --- a/Modules/Platform/app/Models/LicenseKey.php +++ b/Modules/Platform/app/Models/LicenseKey.php @@ -5,6 +5,7 @@ namespace Modules\Platform\app\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Support\Str; +use Modules\Company\Models\Company; class LicenseKey extends Model { diff --git a/Modules/Platform/app/Models/Payment.php b/Modules/Platform/app/Models/Payment.php index 056cc7ca..2cea8549 100644 --- a/Modules/Platform/app/Models/Payment.php +++ b/Modules/Platform/app/Models/Payment.php @@ -4,6 +4,7 @@ namespace Modules\Platform\app\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Modules\Company\Models\Company; class Payment extends Model { diff --git a/Modules/Platform/database/seeders/PlatformSeeder.php b/Modules/Platform/database/seeders/PlatformSeeder.php index eaa61e3a..a00d7d9a 100644 --- a/Modules/Platform/database/seeders/PlatformSeeder.php +++ b/Modules/Platform/database/seeders/PlatformSeeder.php @@ -6,7 +6,7 @@ use App\Models\User; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; -use Modules\Platform\app\Models\Company; +use Modules\Company\Models\Company; use Modules\Warehouse\app\Models\Warehouse; use Modules\Warehouse\app\Models\WarehouseValidationRule; use Spatie\Permission\Models\Role; diff --git a/Modules/Platform/resources/views/companies/index.blade.php b/Modules/Platform/resources/views/companies/index.blade.php deleted file mode 100644 index f9974c2c..00000000 --- a/Modules/Platform/resources/views/companies/index.blade.php +++ /dev/null @@ -1,49 +0,0 @@ - -
- -
-

Create company

-
- @csrf - - - - -
-
-
- - - - - - - - - - - - @foreach ($companies as $company) - - - - - - - - @endforeach - -
NameUsersWarehousesLicencesStatus
{{ $company->name }}{{ $company->users_count }}{{ $company->warehouses_count }}{{ $company->license_keys_count }}{{ $company->is_system_company ? 'System' : $company->status }}
-
- {{ $companies->links() }} -
-
diff --git a/Modules/Platform/routes/web.php b/Modules/Platform/routes/web.php index 48356b83..217792e3 100644 --- a/Modules/Platform/routes/web.php +++ b/Modules/Platform/routes/web.php @@ -1,7 +1,7 @@ name('platform.') ->group(function (): void { Route::get('/', PlatformDashboardController::class)->name('dashboard'); - Route::get('/companies', [CompanyController::class, 'index'])->name('companies.index'); - Route::post('/companies', [CompanyController::class, 'store'])->name('companies.store'); Route::get('/licenses', [LicenseKeyController::class, 'index'])->name('licenses.index'); Route::post('/licenses', [LicenseKeyController::class, 'store'])->name('licenses.store'); Route::get('/payments', [PaymentController::class, 'index'])->name('payments.index'); diff --git a/Modules/Platform/tests/Feature/LicenseKeyTest.php b/Modules/Platform/tests/Feature/LicenseKeyTest.php index 7b1452b5..063525f0 100644 --- a/Modules/Platform/tests/Feature/LicenseKeyTest.php +++ b/Modules/Platform/tests/Feature/LicenseKeyTest.php @@ -3,7 +3,7 @@ namespace Modules\Platform\tests\Feature; use Illuminate\Foundation\Testing\RefreshDatabase; -use Modules\Platform\app\Models\Company; +use Modules\Company\Models\Company; use Modules\Platform\app\Models\LicenseKey; use Tests\TestCase; diff --git a/Modules/Platform/tests/Feature/PlatformAccessTest.php b/Modules/Platform/tests/Feature/PlatformAccessTest.php index 28cb93c4..e4f909ef 100644 --- a/Modules/Platform/tests/Feature/PlatformAccessTest.php +++ b/Modules/Platform/tests/Feature/PlatformAccessTest.php @@ -4,7 +4,7 @@ namespace Modules\Platform\tests\Feature; use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; -use Modules\Platform\app\Models\Company; +use Modules\Company\Models\Company; use Tests\TestCase; class PlatformAccessTest extends TestCase diff --git a/Modules/Warehouse/app/Models/Warehouse.php b/Modules/Warehouse/app/Models/Warehouse.php index 5d66bd60..361ec75c 100644 --- a/Modules/Warehouse/app/Models/Warehouse.php +++ b/Modules/Warehouse/app/Models/Warehouse.php @@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Support\Str; -use Modules\Platform\app\Models\Company; +use Modules\Company\Models\Company; class Warehouse extends Model { diff --git a/Modules/Warehouse/tests/Feature/WarehouseIsolationTest.php b/Modules/Warehouse/tests/Feature/WarehouseIsolationTest.php index 08aec28b..53688607 100644 --- a/Modules/Warehouse/tests/Feature/WarehouseIsolationTest.php +++ b/Modules/Warehouse/tests/Feature/WarehouseIsolationTest.php @@ -4,7 +4,7 @@ namespace Modules\Warehouse\tests\Feature; use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; -use Modules\Platform\app\Models\Company; +use Modules\Company\Models\Company; use Modules\Platform\app\Models\LicenseKey; use Modules\Warehouse\app\Models\Warehouse; use Tests\TestCase; diff --git a/app/Actions/Fortify/CreateNewUser.php b/app/Actions/Fortify/CreateNewUser.php index 0119989a..8578db89 100644 --- a/app/Actions/Fortify/CreateNewUser.php +++ b/app/Actions/Fortify/CreateNewUser.php @@ -9,7 +9,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; use Laravel\Fortify\Contracts\CreatesNewUsers; -use Modules\Platform\app\Models\Company; +use Modules\Company\Models\Company; class CreateNewUser implements CreatesNewUsers { diff --git a/app/Models/Company.php b/app/Models/Company.php deleted file mode 100644 index f855dc7f..00000000 --- a/app/Models/Company.php +++ /dev/null @@ -1,5 +0,0 @@ -