new companies Module now with full spoort migrated

This commit is contained in:
Mark Gregory
2026-07-02 11:06:52 +01:00
parent b87036e1a2
commit 7f5572989e
34 changed files with 107 additions and 215 deletions
@@ -1,41 +0,0 @@
<?php
namespace Modules\Platform\app\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Modules\Platform\app\Models\Company;
class CompanyController extends Controller
{
/**
* Display companies.
*/
public function index()
{
return view('platform::companies.index', [
'companies' => 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.');
}
}
@@ -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
@@ -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
@@ -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;
@@ -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
-74
View File
@@ -1,74 +0,0 @@
<?php
namespace Modules\Platform\app\Models;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Str;
use Modules\Warehouse\app\Models\Warehouse;
class Company extends Model
{
use HasFactory, SoftDeletes;
protected $fillable = [
'uuid', 'name', 'slug', 'status', 'timezone', 'settings',
'is_system_company', 'stripe_customer_id', 'billing_email',
];
protected $casts = [
'settings' => 'array',
'is_system_company' => 'boolean',
];
protected static function booted(): void
{
static::creating(function (Company $company): void {
$company->uuid ??= (string) Str::uuid();
$company->slug ??= Str::slug($company->name);
$company->status ??= 'active';
$company->timezone ??= 'Europe/London';
});
}
public function users(): HasMany
{
return $this->hasMany(User::class);
}
public function licenseKeys(): HasMany
{
return $this->hasMany(LicenseKey::class);
}
public function payments(): HasMany
{
return $this->hasMany(Payment::class);
}
public function warehouses(): HasMany
{
return $this->hasMany(Warehouse::class);
}
public function hasActiveLicense(): bool
{
if ($this->is_system_company) {
return true;
}
return $this->licenseKeys()
->where('is_active', true)
->where(function ($query): void {
$query->whereNull('starts_at')->orWhere('starts_at', '<=', now());
})
->where(function ($query): void {
$query->whereNull('expires_at')->orWhere('expires_at', '>=', now());
})
->whereNull('revoked_at')
->exists();
}
}
@@ -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
{
+1
View File
@@ -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
{