refactor: rename namespace from Core\Mod\Tenant to Core\Tenant

Simplifies the namespace hierarchy by removing the intermediate Mod
segment. Updates all 118 files including models, services, controllers,
middleware, tests, and composer.json autoload configuration.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Snider 2026-01-27 16:30:46 +00:00
parent 68525ca247
commit d0ad2737cb
121 changed files with 1189 additions and 460 deletions

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant;
namespace Core\Tenant;
use Core\Events\AdminPanelBooting;
use Core\Events\ApiRoutesRegistering;
@ -40,48 +40,48 @@ class Boot extends ServiceProvider
public function register(): void
{
$this->app->singleton(
\Core\Mod\Tenant\Contracts\TwoFactorAuthenticationProvider::class,
\Core\Mod\Tenant\Services\TotpService::class
\Core\Tenant\Contracts\TwoFactorAuthenticationProvider::class,
\Core\Tenant\Services\TotpService::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\EntitlementService::class,
\Core\Mod\Tenant\Services\EntitlementService::class
\Core\Tenant\Services\EntitlementService::class,
\Core\Tenant\Services\EntitlementService::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\WorkspaceManager::class,
\Core\Mod\Tenant\Services\WorkspaceManager::class
\Core\Tenant\Services\WorkspaceManager::class,
\Core\Tenant\Services\WorkspaceManager::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\UserStatsService::class,
\Core\Mod\Tenant\Services\UserStatsService::class
\Core\Tenant\Services\UserStatsService::class,
\Core\Tenant\Services\UserStatsService::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\WorkspaceService::class,
\Core\Mod\Tenant\Services\WorkspaceService::class
\Core\Tenant\Services\WorkspaceService::class,
\Core\Tenant\Services\WorkspaceService::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\WorkspaceCacheManager::class,
\Core\Mod\Tenant\Services\WorkspaceCacheManager::class
\Core\Tenant\Services\WorkspaceCacheManager::class,
\Core\Tenant\Services\WorkspaceCacheManager::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\UsageAlertService::class,
\Core\Mod\Tenant\Services\UsageAlertService::class
\Core\Tenant\Services\UsageAlertService::class,
\Core\Tenant\Services\UsageAlertService::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\EntitlementWebhookService::class,
\Core\Mod\Tenant\Services\EntitlementWebhookService::class
\Core\Tenant\Services\EntitlementWebhookService::class,
\Core\Tenant\Services\EntitlementWebhookService::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\WorkspaceTeamService::class,
\Core\Mod\Tenant\Services\WorkspaceTeamService::class
\Core\Tenant\Services\WorkspaceTeamService::class,
\Core\Tenant\Services\WorkspaceTeamService::class
);
$this->registerBackwardCompatAliases();
@ -91,28 +91,28 @@ class Boot extends ServiceProvider
{
if (! class_exists(\App\Services\WorkspaceManager::class)) {
class_alias(
\Core\Mod\Tenant\Services\WorkspaceManager::class,
\Core\Tenant\Services\WorkspaceManager::class,
\App\Services\WorkspaceManager::class
);
}
if (! class_exists(\App\Services\UserStatsService::class)) {
class_alias(
\Core\Mod\Tenant\Services\UserStatsService::class,
\Core\Tenant\Services\UserStatsService::class,
\App\Services\UserStatsService::class
);
}
if (! class_exists(\App\Services\WorkspaceService::class)) {
class_alias(
\Core\Mod\Tenant\Services\WorkspaceService::class,
\Core\Tenant\Services\WorkspaceService::class,
\App\Services\WorkspaceService::class
);
}
if (! class_exists(\App\Services\WorkspaceCacheManager::class)) {
class_alias(
\Core\Mod\Tenant\Services\WorkspaceCacheManager::class,
\Core\Tenant\Services\WorkspaceCacheManager::class,
\App\Services\WorkspaceCacheManager::class
);
}

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Concerns;
namespace Core\Tenant\Concerns;
use Core\Mod\Tenant\Models\Namespace_;
use Core\Mod\Tenant\Models\User;
use Core\Tenant\Models\Namespace_;
use Core\Tenant\Models\User;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Support\Collection;

View file

@ -2,12 +2,12 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Concerns;
namespace Core\Tenant\Concerns;
use Core\Mod\Tenant\Exceptions\MissingWorkspaceContextException;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Scopes\WorkspaceScope;
use Core\Mod\Tenant\Services\WorkspaceCacheManager;
use Core\Tenant\Exceptions\MissingWorkspaceContextException;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Scopes\WorkspaceScope;
use Core\Tenant\Services\WorkspaceCacheManager;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Support\Collection;

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Concerns;
namespace Core\Tenant\Concerns;
use Closure;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Services\WorkspaceCacheManager;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\WorkspaceCacheManager;
use Illuminate\Support\Collection;
/**

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Concerns;
namespace Core\Tenant\Concerns;
use Core\Mod\Tenant\Contracts\TwoFactorAuthenticationProvider;
use Core\Mod\Tenant\Models\UserTwoFactorAuth;
use Core\Mod\Tenant\Services\TotpService;
use Core\Tenant\Contracts\TwoFactorAuthenticationProvider;
use Core\Tenant\Models\UserTwoFactorAuth;
use Core\Tenant\Services\TotpService;
use Illuminate\Database\Eloquent\Relations\HasOne;
/**

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Console\Commands;
namespace Core\Tenant\Console\Commands;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Services\UsageAlertService;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\UsageAlertService;
use Illuminate\Console\Command;
/**

View file

@ -2,9 +2,9 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Console\Commands;
namespace Core\Tenant\Console\Commands;
use Core\Mod\Tenant\Models\AccountDeletionRequest;
use Core\Tenant\Models\AccountDeletionRequest;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Console\Commands;
namespace Core\Tenant\Console\Commands;
use Core\Mod\Tenant\Jobs\ComputeUserStats;
use Core\Mod\Tenant\Models\User;
use Core\Tenant\Jobs\ComputeUserStats;
use Core\Tenant\Models\User;
use Illuminate\Console\Command;
class RefreshUserStats extends Command

View file

@ -2,14 +2,14 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Console\Commands;
namespace Core\Tenant\Console\Commands;
use Core\Mod\Tenant\Models\Boost;
use Core\Mod\Tenant\Models\EntitlementLog;
use Core\Mod\Tenant\Models\UsageRecord;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Notifications\BoostExpiredNotification;
use Core\Mod\Tenant\Services\EntitlementService;
use Core\Tenant\Models\Boost;
use Core\Tenant\Models\EntitlementLog;
use Core\Tenant\Models\UsageRecord;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Notifications\BoostExpiredNotification;
use Core\Tenant\Services\EntitlementService;
use Illuminate\Console\Command;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Contracts;
namespace Core\Tenant\Contracts;
/**
* Contract for entitlement webhook events.

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Contracts;
namespace Core\Tenant\Contracts;
/**
* Contract for two-factor authentication providers.

View file

@ -2,12 +2,12 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Controllers\Api;
namespace Core\Tenant\Controllers\Api;
use Core\Mod\Tenant\Models\EntitlementWebhook;
use Core\Mod\Tenant\Models\EntitlementWebhookDelivery;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Services\EntitlementWebhookService;
use Core\Tenant\Models\EntitlementWebhook;
use Core\Tenant\Models\EntitlementWebhookDelivery;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\EntitlementWebhookService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Controllers;
namespace Core\Tenant\Controllers;
use Core\Front\Controller;
use Illuminate\Auth\Events\Registered;

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Controllers;
namespace Core\Tenant\Controllers;
use Core\Helpers\PrivacyHelper;
use Core\Mod\Trees\Models\TreePlanting;

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Controllers;
namespace Core\Tenant\Controllers;
use Core\Front\Controller;
use Illuminate\Http\JsonResponse;

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Controllers;
namespace Core\Tenant\Controllers;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Models\WorkspaceInvitation;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspaceInvitation;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;

View file

@ -1,13 +1,13 @@
<?php
namespace Core\Mod\Tenant\Database\Factories;
namespace Core\Tenant\Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Mod\Tenant\Models\User>
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Tenant\Models\User>
*/
class UserFactory extends Factory
{
@ -17,7 +17,7 @@ class UserFactory extends Factory
* Uses the backward-compatible alias class to ensure type compatibility
* with existing code that expects Mod\Tenant\Models\User.
*/
protected $model = \Core\Mod\Tenant\Models\User::class;
protected $model = \Core\Tenant\Models\User::class;
/**
* The current password being used by the factory.

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Database\Factories;
namespace Core\Tenant\Database\Factories;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\UserToken;
use Core\Tenant\Models\User;
use Core\Tenant\Models\UserToken;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

View file

@ -2,13 +2,13 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Database\Factories;
namespace Core\Tenant\Database\Factories;
use Core\Mod\Tenant\Models\WaitlistEntry;
use Core\Tenant\Models\WaitlistEntry;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Mod\Tenant\Models\WaitlistEntry>
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Tenant\Models\WaitlistEntry>
*/
class WaitlistEntryFactory extends Factory
{

View file

@ -1,12 +1,12 @@
<?php
namespace Core\Mod\Tenant\Database\Factories;
namespace Core\Tenant\Database\Factories;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Models\Workspace;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Mod\Tenant\Models\Workspace>
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Tenant\Models\Workspace>
*/
class WorkspaceFactory extends Factory
{

View file

@ -2,14 +2,14 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Database\Factories;
namespace Core\Tenant\Database\Factories;
use Core\Mod\Tenant\Models\WorkspaceInvitation;
use Core\Tenant\Models\WorkspaceInvitation;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Mod\Tenant\Models\WorkspaceInvitation>
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Tenant\Models\WorkspaceInvitation>
*/
class WorkspaceInvitationFactory extends Factory
{

View file

@ -1,10 +1,10 @@
<?php
namespace Core\Mod\Tenant\Database\Seeders;
namespace Core\Tenant\Database\Seeders;
use Core\Mod\Tenant\Models\Package;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Models\Package;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;

View file

@ -1,12 +1,12 @@
<?php
namespace Core\Mod\Tenant\Database\Seeders;
namespace Core\Tenant\Database\Seeders;
use Core\Mod\Tenant\Models\Feature;
use Core\Mod\Tenant\Models\Package;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Services\EntitlementService;
use Core\Tenant\Models\Feature;
use Core\Tenant\Models\Package;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\EntitlementService;
use Illuminate\Database\Seeder;
/**

View file

@ -1,8 +1,8 @@
<?php
namespace Core\Mod\Tenant\Database\Seeders;
namespace Core\Tenant\Database\Seeders;
use Core\Mod\Tenant\Models\Feature;
use Core\Tenant\Models\Feature;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Schema;

View file

@ -1,10 +1,10 @@
<?php
namespace Core\Mod\Tenant\Database\Seeders;
namespace Core\Tenant\Database\Seeders;
use Core\Mod\Tenant\Models\Package;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Models\WorkspacePackage;
use Core\Tenant\Models\Package;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspacePackage;
use Illuminate\Database\Seeder;
class SystemWorkspaceSeeder extends Seeder

View file

@ -1,12 +1,12 @@
<?php
namespace Core\Mod\Tenant\Database\Seeders;
namespace Core\Tenant\Database\Seeders;
use Core\Mod\Tenant\Enums\UserTier;
use Core\Mod\Tenant\Models\Package;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Models\WorkspacePackage;
use Core\Tenant\Enums\UserTier;
use Core\Tenant\Models\Package;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspacePackage;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Schema;

View file

@ -1,6 +1,6 @@
<?php
namespace Core\Mod\Tenant\Enums;
namespace Core\Tenant\Enums;
enum UserTier: string
{

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Enums;
namespace Core\Tenant\Enums;
enum WebhookDeliveryStatus: string
{

View file

@ -2,12 +2,12 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Events\Webhook;
namespace Core\Tenant\Events\Webhook;
use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Mod\Tenant\Models\Boost;
use Core\Mod\Tenant\Models\Feature;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Tenant\Models\Boost;
use Core\Tenant\Models\Feature;
use Core\Tenant\Models\Workspace;
/**
* Event fired when a boost is activated for a workspace.

View file

@ -2,12 +2,12 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Events\Webhook;
namespace Core\Tenant\Events\Webhook;
use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Mod\Tenant\Models\Boost;
use Core\Mod\Tenant\Models\Feature;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Tenant\Models\Boost;
use Core\Tenant\Models\Feature;
use Core\Tenant\Models\Workspace;
/**
* Event fired when a boost expires for a workspace.

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Events\Webhook;
namespace Core\Tenant\Events\Webhook;
use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Mod\Tenant\Models\Feature;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Tenant\Models\Feature;
use Core\Tenant\Models\Workspace;
/**
* Event fired when workspace usage reaches 100% of the limit.

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Events\Webhook;
namespace Core\Tenant\Events\Webhook;
use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Mod\Tenant\Models\Feature;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Tenant\Models\Feature;
use Core\Tenant\Models\Workspace;
/**
* Event fired when workspace usage reaches the warning threshold (80%).

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Events\Webhook;
namespace Core\Tenant\Events\Webhook;
use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Mod\Tenant\Models\Package;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Tenant\Models\Package;
use Core\Tenant\Models\Workspace;
/**
* Event fired when a workspace's package changes (upgrade, downgrade, or new assignment).

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Exceptions;
namespace Core\Tenant\Exceptions;
use Exception;

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Exceptions;
namespace Core\Tenant\Exceptions;
use Exception;
use Illuminate\Http\Request;

View file

@ -2,12 +2,12 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Features;
namespace Core\Tenant\Features;
use Core\Mod\Tenant\Enums\UserTier;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Services\EntitlementService;
use Core\Tenant\Enums\UserTier;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\EntitlementService;
class ApolloTier
{

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Features;
namespace Core\Tenant\Features;
use Illuminate\Support\Lottery;

View file

@ -2,12 +2,12 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Features;
namespace Core\Tenant\Features;
use Core\Mod\Tenant\Enums\UserTier;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Services\EntitlementService;
use Core\Tenant\Enums\UserTier;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\EntitlementService;
class HadesTier
{

View file

@ -2,12 +2,12 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Features;
namespace Core\Tenant\Features;
use Core\Mod\Tenant\Enums\UserTier;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Services\EntitlementService;
use Core\Tenant\Enums\UserTier;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\EntitlementService;
class UnlimitedWorkspaces
{

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Jobs;
namespace Core\Tenant\Jobs;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Services\UserStatsService;
use Core\Tenant\Models\User;
use Core\Tenant\Services\UserStatsService;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Jobs;
namespace Core\Tenant\Jobs;
use Core\Mod\Tenant\Enums\WebhookDeliveryStatus;
use Core\Mod\Tenant\Models\EntitlementWebhook;
use Core\Tenant\Enums\WebhookDeliveryStatus;
use Core\Tenant\Models\EntitlementWebhook;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

View file

@ -2,9 +2,9 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Jobs;
namespace Core\Tenant\Jobs;
use Core\Mod\Tenant\Models\AccountDeletionRequest;
use Core\Tenant\Models\AccountDeletionRequest;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

View file

@ -2,9 +2,9 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Listeners;
namespace Core\Tenant\Listeners;
use Core\Mod\Tenant\Notifications\WelcomeNotification;
use Core\Tenant\Notifications\WelcomeNotification;
use Illuminate\Auth\Events\Registered;
use Illuminate\Contracts\Queue\ShouldQueue;

View file

@ -2,9 +2,9 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Mail;
namespace Core\Tenant\Mail;
use Core\Mod\Tenant\Models\AccountDeletionRequest;
use Core\Tenant\Models\AccountDeletionRequest;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Middleware;
namespace Core\Tenant\Middleware;
use Closure;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Services\WorkspaceTeamService;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\WorkspaceTeamService;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Middleware;
namespace Core\Tenant\Middleware;
use Closure;
use Illuminate\Http\Request;

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Middleware;
namespace Core\Tenant\Middleware;
use Closure;
use Core\Mod\Tenant\Exceptions\MissingWorkspaceContextException;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Exceptions\MissingWorkspaceContextException;
use Core\Tenant\Models\Workspace;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
@ -26,7 +26,7 @@ use Symfony\Component\HttpFoundation\Response;
* });
*
* Register in Kernel.php:
* 'workspace.required' => \Core\Mod\Tenant\Middleware\RequireWorkspaceContext::class,
* 'workspace.required' => \Core\Tenant\Middleware\RequireWorkspaceContext::class,
*/
class RequireWorkspaceContext
{

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Middleware;
namespace Core\Tenant\Middleware;
use Closure;
use Core\Mod\Tenant\Services\NamespaceService;
use Core\Tenant\Services\NamespaceService;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Middleware;
namespace Core\Tenant\Middleware;
use Closure;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Services\WorkspaceService;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\WorkspaceService;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

View file

@ -1,6 +1,6 @@
<?php
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;

View file

@ -1,6 +1,6 @@
<?php
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

View file

@ -1,6 +1,6 @@
<?php
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Mod\Tenant\Enums\WebhookDeliveryStatus;
use Core\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Tenant\Enums\WebhookDeliveryStatus;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

View file

@ -2,9 +2,9 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Core\Mod\Tenant\Enums\WebhookDeliveryStatus;
use Core\Tenant\Enums\WebhookDeliveryStatus;
use DateTimeInterface;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;

View file

@ -1,6 +1,6 @@
<?php
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

View file

@ -1,6 +1,6 @@
<?php
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

View file

@ -1,6 +1,6 @@
<?php
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

View file

@ -1,8 +1,8 @@
<?php
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Core\Mod\Tenant\Enums\UserTier;
use Core\Tenant\Enums\UserTier;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
@ -20,9 +20,9 @@ class User extends Authenticatable implements MustVerifyEmail
/**
* Create a new factory instance for the model.
*/
protected static function newFactory(): \Core\Mod\Tenant\Database\Factories\UserFactory
protected static function newFactory(): \Core\Tenant\Database\Factories\UserFactory
{
return \Core\Mod\Tenant\Database\Factories\UserFactory::new();
return \Core\Tenant\Database\Factories\UserFactory::new();
}
/**

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
@ -18,9 +18,9 @@ class UserToken extends Model
{
use HasFactory;
protected static function newFactory(): \Core\Mod\Tenant\Database\Factories\UserTokenFactory
protected static function newFactory(): \Core\Tenant\Database\Factories\UserTokenFactory
{
return \Core\Mod\Tenant\Database\Factories\UserTokenFactory::new();
return \Core\Tenant\Database\Factories\UserTokenFactory::new();
}
/**

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

View file

@ -1,6 +1,6 @@
<?php
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
@ -13,9 +13,9 @@ class WaitlistEntry extends Model
use HasFactory;
use Notifiable;
protected static function newFactory(): \Core\Mod\Tenant\Database\Factories\WaitlistEntryFactory
protected static function newFactory(): \Core\Tenant\Database\Factories\WaitlistEntryFactory
{
return \Core\Mod\Tenant\Database\Factories\WaitlistEntryFactory::new();
return \Core\Tenant\Database\Factories\WaitlistEntryFactory::new();
}
protected $fillable = [

View file

@ -1,9 +1,9 @@
<?php
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Core\Mod\Tenant\Services\EntitlementResult;
use Core\Mod\Tenant\Services\EntitlementService;
use Core\Tenant\Services\EntitlementResult;
use Core\Tenant\Services\EntitlementService;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
@ -14,9 +14,9 @@ class Workspace extends Model
{
use HasFactory;
protected static function newFactory(): \Core\Mod\Tenant\Database\Factories\WorkspaceFactory
protected static function newFactory(): \Core\Tenant\Database\Factories\WorkspaceFactory
{
return \Core\Mod\Tenant\Database\Factories\WorkspaceFactory::new();
return \Core\Tenant\Database\Factories\WorkspaceFactory::new();
}
protected $fillable = [
@ -577,7 +577,7 @@ class Workspace extends Model
}
// Try to get from authenticated user's default workspace
if (auth()->check() && auth()->user() instanceof \Core\Mod\Tenant\Models\User) {
if (auth()->check() && auth()->user() instanceof \Core\Tenant\Models\User) {
return auth()->user()->defaultHostWorkspace();
}
@ -680,7 +680,7 @@ class Workspace extends Model
]);
// Send notification
$invitation->notify(new \Core\Mod\Tenant\Notifications\WorkspaceInvitationNotification($invitation));
$invitation->notify(new \Core\Tenant\Notifications\WorkspaceInvitationNotification($invitation));
return $invitation;
}

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
@ -15,9 +15,9 @@ class WorkspaceInvitation extends Model
use HasFactory;
use Notifiable;
protected static function newFactory(): \Core\Mod\Tenant\Database\Factories\WorkspaceInvitationFactory
protected static function newFactory(): \Core\Tenant\Database\Factories\WorkspaceInvitationFactory
{
return \Core\Mod\Tenant\Database\Factories\WorkspaceInvitationFactory::new();
return \Core\Tenant\Database\Factories\WorkspaceInvitationFactory::new();
}
protected $fillable = [

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

View file

@ -1,6 +1,6 @@
<?php
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

View file

@ -2,9 +2,9 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Models;
namespace Core\Tenant\Models;
use Core\Mod\Tenant\Concerns\BelongsToWorkspace;
use Core\Tenant\Concerns\BelongsToWorkspace;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Notifications;
namespace Core\Tenant\Notifications;
use Core\Mod\Tenant\Models\Boost;
use Core\Mod\Tenant\Models\Feature;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Models\Boost;
use Core\Tenant\Models\Feature;
use Core\Tenant\Models\Workspace;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Notifications;
namespace Core\Tenant\Notifications;
use Core\Mod\Tenant\Models\Feature;
use Core\Mod\Tenant\Models\UsageAlertHistory;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Models\Feature;
use Core\Tenant\Models\UsageAlertHistory;
use Core\Tenant\Models\Workspace;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

View file

@ -2,9 +2,9 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Notifications;
namespace Core\Tenant\Notifications;
use Core\Mod\Tenant\Models\WaitlistEntry;
use Core\Tenant\Models\WaitlistEntry;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Notifications;
namespace Core\Tenant\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;

View file

@ -2,9 +2,9 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Notifications;
namespace Core\Tenant\Notifications;
use Core\Mod\Tenant\Models\WorkspaceInvitation;
use Core\Tenant\Models\WorkspaceInvitation;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

View file

@ -15,10 +15,10 @@ use Illuminate\Support\Facades\Route;
Route::middleware(['web', 'auth', 'admin.domain'])->prefix('admin/tenant')->name('hub.admin.tenant.')->group(function () {
// Team Manager
Route::get('/teams', \Core\Mod\Tenant\View\Modal\Admin\TeamManager::class)
Route::get('/teams', \Core\Tenant\View\Modal\Admin\TeamManager::class)
->name('teams');
// Member Manager
Route::get('/members', \Core\Mod\Tenant\View\Modal\Admin\MemberManager::class)
Route::get('/members', \Core\Tenant\View\Modal\Admin\MemberManager::class)
->name('members');
});

View file

@ -10,7 +10,7 @@ declare(strict_types=1);
*/
use Core\Mod\Api\Controllers\WorkspaceController;
use Core\Mod\Tenant\Controllers\Api\EntitlementWebhookController;
use Core\Tenant\Controllers\Api\EntitlementWebhookController;
use Illuminate\Support\Facades\Route;
/*

View file

@ -8,9 +8,9 @@ declare(strict_types=1);
* Account management and workspace routes.
*/
use Core\Mod\Tenant\View\Modal\Web\CancelDeletion;
use Core\Mod\Tenant\View\Modal\Web\ConfirmDeletion;
use Core\Mod\Tenant\View\Modal\Web\WorkspaceHome;
use Core\Tenant\View\Modal\Web\CancelDeletion;
use Core\Tenant\View\Modal\Web\ConfirmDeletion;
use Core\Tenant\View\Modal\Web\WorkspaceHome;
use Illuminate\Support\Facades\Route;
/*
@ -41,7 +41,7 @@ Route::prefix('account')->name('account.')->group(function () {
|
*/
Route::get('/workspace/invitation/{token}', \Core\Mod\Tenant\Controllers\WorkspaceInvitationController::class)
Route::get('/workspace/invitation/{token}', \Core\Tenant\Controllers\WorkspaceInvitationController::class)
->name('workspace.invitation.accept');
/*

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Rules;
namespace Core\Tenant\Rules;
use Closure;
use Core\Mod\Tenant\Models\User;
use Core\Tenant\Models\User;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Support\Facades\Hash;

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Rules;
namespace Core\Tenant\Rules;
use Closure;
use Core\Mod\Social\Enums\ResourceStatus;

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Scopes;
namespace Core\Tenant\Scopes;
use Core\Mod\Tenant\Exceptions\MissingWorkspaceContextException;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Exceptions\MissingWorkspaceContextException;
use Core\Tenant\Models\Workspace;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;

View file

@ -1,6 +1,6 @@
<?php
namespace Core\Mod\Tenant\Services;
namespace Core\Tenant\Services;
/**
* Value object representing the result of an entitlement check.

View file

@ -1,17 +1,17 @@
<?php
namespace Core\Mod\Tenant\Services;
namespace Core\Tenant\Services;
use Core\Mod\Tenant\Models\Boost;
use Core\Mod\Tenant\Models\EntitlementLog;
use Core\Mod\Tenant\Models\Feature;
use Core\Mod\Tenant\Models\Namespace_;
use Core\Mod\Tenant\Models\NamespacePackage;
use Core\Mod\Tenant\Models\Package;
use Core\Mod\Tenant\Models\UsageRecord;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Models\WorkspacePackage;
use Core\Tenant\Models\Boost;
use Core\Tenant\Models\EntitlementLog;
use Core\Tenant\Models\Feature;
use Core\Tenant\Models\Namespace_;
use Core\Tenant\Models\NamespacePackage;
use Core\Tenant\Models\Package;
use Core\Tenant\Models\UsageRecord;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspacePackage;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Cache;

View file

@ -2,19 +2,19 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Services;
namespace Core\Tenant\Services;
use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Mod\Tenant\Enums\WebhookDeliveryStatus;
use Core\Mod\Tenant\Events\Webhook\BoostActivatedEvent;
use Core\Mod\Tenant\Events\Webhook\BoostExpiredEvent;
use Core\Mod\Tenant\Events\Webhook\LimitReachedEvent;
use Core\Mod\Tenant\Events\Webhook\LimitWarningEvent;
use Core\Mod\Tenant\Events\Webhook\PackageChangedEvent;
use Core\Mod\Tenant\Jobs\DispatchEntitlementWebhook;
use Core\Mod\Tenant\Models\EntitlementWebhook;
use Core\Mod\Tenant\Models\EntitlementWebhookDelivery;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Tenant\Enums\WebhookDeliveryStatus;
use Core\Tenant\Events\Webhook\BoostActivatedEvent;
use Core\Tenant\Events\Webhook\BoostExpiredEvent;
use Core\Tenant\Events\Webhook\LimitReachedEvent;
use Core\Tenant\Events\Webhook\LimitWarningEvent;
use Core\Tenant\Events\Webhook\PackageChangedEvent;
use Core\Tenant\Jobs\DispatchEntitlementWebhook;
use Core\Tenant\Models\EntitlementWebhook;
use Core\Tenant\Models\EntitlementWebhookDelivery;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Services;
namespace Core\Tenant\Services;
use Core\Mod\Tenant\Models\Namespace_;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Models\Namespace_;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Str;
/**

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Services;
namespace Core\Tenant\Services;
use Core\Mod\Tenant\Models\Namespace_;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Models\Namespace_;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Cache;

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Services;
namespace Core\Tenant\Services;
use chillerlan\QRCode\QRCode;
use chillerlan\QRCode\QROptions;
use Core\Mod\Tenant\Contracts\TwoFactorAuthenticationProvider;
use Core\Tenant\Contracts\TwoFactorAuthenticationProvider;
/**
* TOTP (Time-based One-Time Password) service.

View file

@ -2,15 +2,15 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Services;
namespace Core\Tenant\Services;
use Core\Mod\Tenant\Events\Webhook\LimitReachedEvent;
use Core\Mod\Tenant\Events\Webhook\LimitWarningEvent;
use Core\Mod\Tenant\Models\Feature;
use Core\Mod\Tenant\Models\UsageAlertHistory;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Notifications\UsageAlertNotification;
use Core\Tenant\Events\Webhook\LimitReachedEvent;
use Core\Tenant\Events\Webhook\LimitWarningEvent;
use Core\Tenant\Models\Feature;
use Core\Tenant\Models\UsageAlertHistory;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Notifications\UsageAlertNotification;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Services;
namespace Core\Tenant\Services;
use Core\Mod\Tenant\Enums\UserTier;
use Core\Mod\Tenant\Models\User;
use Core\Tenant\Enums\UserTier;
use Core\Tenant\Models\User;
use Illuminate\Support\Facades\Cache;
class UserStatsService
@ -44,7 +44,7 @@ class UserStatsService
// For page loads, return cached data immediately and queue refresh
if ($user->cached_stats) {
// Queue background refresh
dispatch(new \Core\Mod\Tenant\Jobs\ComputeUserStats($user->id))->onQueue('stats');
dispatch(new \Core\Tenant\Jobs\ComputeUserStats($user->id))->onQueue('stats');
return $user->cached_stats;
}

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Services;
namespace Core\Tenant\Services;
use Closure;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Models\Workspace;
use Illuminate\Cache\TaggableStore;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Cache;

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Services;
namespace Core\Tenant\Services;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\Cache;
use Illuminate\Validation\Rule;

View file

@ -2,9 +2,9 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Services;
namespace Core\Tenant\Services;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Session;
/**

View file

@ -2,12 +2,12 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\Services;
namespace Core\Tenant\Services;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Models\WorkspaceMember;
use Core\Mod\Tenant\Models\WorkspaceTeam;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspaceMember;
use Core\Tenant\Models\WorkspaceTeam;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

View file

@ -1,7 +1,7 @@
@php
$appName = config('core.app.name', __('core::core.brand.name'));
$isLimit = $threshold === \Core\Mod\Tenant\Models\UsageAlertHistory::THRESHOLD_LIMIT;
$isCritical = $threshold === \Core\Mod\Tenant\Models\UsageAlertHistory::THRESHOLD_CRITICAL;
$isLimit = $threshold === \Core\Tenant\Models\UsageAlertHistory::THRESHOLD_LIMIT;
$isCritical = $threshold === \Core\Tenant\Models\UsageAlertHistory::THRESHOLD_CRITICAL;
@endphp
<x-mail::message>

View file

@ -2,12 +2,12 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\View\Modal\Admin;
namespace Core\Tenant\View\Modal\Admin;
use Core\Mod\Tenant\Models\EntitlementWebhook;
use Core\Mod\Tenant\Models\EntitlementWebhookDelivery;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Services\EntitlementWebhookService;
use Core\Tenant\Models\EntitlementWebhook;
use Core\Tenant\Models\EntitlementWebhookDelivery;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\EntitlementWebhookService;
use Illuminate\Contracts\View\View;
use Livewire\Attributes\Computed;
use Livewire\Attributes\Title;

View file

@ -2,11 +2,11 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\View\Modal\Admin;
namespace Core\Tenant\View\Modal\Admin;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Models\WorkspaceMember;
use Core\Mod\Tenant\Models\WorkspaceTeam;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspaceMember;
use Core\Tenant\Models\WorkspaceTeam;
use Illuminate\Contracts\View\View;
use Livewire\Attributes\Computed;
use Livewire\Component;

View file

@ -2,12 +2,12 @@
declare(strict_types=1);
namespace Core\Mod\Tenant\View\Modal\Admin;
namespace Core\Tenant\View\Modal\Admin;
use Core\Mod\Tenant\Models\Workspace;
use Core\Mod\Tenant\Models\WorkspaceMember;
use Core\Mod\Tenant\Models\WorkspaceTeam;
use Core\Mod\Tenant\Services\WorkspaceTeamService;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspaceMember;
use Core\Tenant\Models\WorkspaceTeam;
use Core\Tenant\Services\WorkspaceTeamService;
use Illuminate\Contracts\View\View;
use Livewire\Attributes\Computed;
use Livewire\Component;

View file

@ -1,9 +1,9 @@
<?php
namespace Core\Mod\Tenant\View\Modal\Admin;
namespace Core\Tenant\View\Modal\Admin;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Livewire\Attributes\Computed;
use Livewire\Component;
@ -125,7 +125,7 @@ class WorkspaceDetails extends Component
$activities = collect();
// Entitlement logs
if (class_exists(\Core\Mod\Tenant\Models\EntitlementLog::class)) {
if (class_exists(\Core\Tenant\Models\EntitlementLog::class)) {
try {
$logs = $this->workspace->entitlementLogs()
->with('user', 'feature')
@ -147,7 +147,7 @@ class WorkspaceDetails extends Component
}
// Usage records
if (class_exists(\Core\Mod\Tenant\Models\UsageRecord::class)) {
if (class_exists(\Core\Tenant\Models\UsageRecord::class)) {
try {
$usage = $this->workspace->usageRecords()
->with('user', 'feature')
@ -325,7 +325,7 @@ class WorkspaceDetails extends Component
#[Computed]
public function allPackages()
{
return \Core\Mod\Tenant\Models\Package::active()
return \Core\Tenant\Models\Package::active()
->ordered()
->get();
}
@ -333,7 +333,7 @@ class WorkspaceDetails extends Component
#[Computed]
public function allFeatures()
{
return \Core\Mod\Tenant\Models\Feature::active()
return \Core\Tenant\Models\Feature::active()
->orderBy('category')
->orderBy('sort_order')
->get();
@ -403,7 +403,7 @@ class WorkspaceDetails extends Component
public function resolvedEntitlements()
{
try {
return app(\Core\Mod\Tenant\Services\EntitlementService::class)
return app(\Core\Tenant\Services\EntitlementService::class)
->getUsageSummary($this->workspace);
} catch (\Exception $e) {
return collect();
@ -431,7 +431,7 @@ class WorkspaceDetails extends Component
return;
}
$package = \Core\Mod\Tenant\Models\Package::findOrFail($this->selectedPackageId);
$package = \Core\Tenant\Models\Package::findOrFail($this->selectedPackageId);
// Check if already assigned
$existing = $this->workspace->workspacePackages()
@ -446,7 +446,7 @@ class WorkspaceDetails extends Component
return;
}
\Core\Mod\Tenant\Models\WorkspacePackage::create([
\Core\Tenant\Models\WorkspacePackage::create([
'workspace_id' => $this->workspace->id,
'package_id' => $package->id,
'status' => 'active',
@ -461,7 +461,7 @@ class WorkspaceDetails extends Component
public function removePackage(int $workspacePackageId): void
{
$wp = \Core\Mod\Tenant\Models\WorkspacePackage::where('workspace_id', $this->workspace->id)
$wp = \Core\Tenant\Models\WorkspacePackage::where('workspace_id', $this->workspace->id)
->findOrFail($workspacePackageId);
$packageName = $wp->package?->name ?? 'Package';
@ -474,7 +474,7 @@ class WorkspaceDetails extends Component
public function suspendPackage(int $workspacePackageId): void
{
$wp = \Core\Mod\Tenant\Models\WorkspacePackage::where('workspace_id', $this->workspace->id)
$wp = \Core\Tenant\Models\WorkspacePackage::where('workspace_id', $this->workspace->id)
->findOrFail($workspacePackageId);
$wp->suspend();
@ -486,7 +486,7 @@ class WorkspaceDetails extends Component
public function reactivatePackage(int $workspacePackageId): void
{
$wp = \Core\Mod\Tenant\Models\WorkspacePackage::where('workspace_id', $this->workspace->id)
$wp = \Core\Tenant\Models\WorkspacePackage::where('workspace_id', $this->workspace->id)
->findOrFail($workspacePackageId);
$wp->reactivate();
@ -523,7 +523,7 @@ class WorkspaceDetails extends Component
return;
}
$feature = \Core\Mod\Tenant\Models\Feature::where('code', $this->selectedFeatureCode)->first();
$feature = \Core\Tenant\Models\Feature::where('code', $this->selectedFeatureCode)->first();
if (! $feature) {
$this->actionMessage = 'Feature not found.';
@ -534,24 +534,24 @@ class WorkspaceDetails extends Component
// Map type to boost type constant
$boostType = match ($this->entitlementType) {
'enable' => \Core\Mod\Tenant\Models\Boost::BOOST_TYPE_ENABLE,
'add_limit' => \Core\Mod\Tenant\Models\Boost::BOOST_TYPE_ADD_LIMIT,
'unlimited' => \Core\Mod\Tenant\Models\Boost::BOOST_TYPE_UNLIMITED,
default => \Core\Mod\Tenant\Models\Boost::BOOST_TYPE_ENABLE,
'enable' => \Core\Tenant\Models\Boost::BOOST_TYPE_ENABLE,
'add_limit' => \Core\Tenant\Models\Boost::BOOST_TYPE_ADD_LIMIT,
'unlimited' => \Core\Tenant\Models\Boost::BOOST_TYPE_UNLIMITED,
default => \Core\Tenant\Models\Boost::BOOST_TYPE_ENABLE,
};
$durationType = $this->entitlementDuration === 'permanent'
? \Core\Mod\Tenant\Models\Boost::DURATION_PERMANENT
: \Core\Mod\Tenant\Models\Boost::DURATION_DURATION;
? \Core\Tenant\Models\Boost::DURATION_PERMANENT
: \Core\Tenant\Models\Boost::DURATION_DURATION;
\Core\Mod\Tenant\Models\Boost::create([
\Core\Tenant\Models\Boost::create([
'workspace_id' => $this->workspace->id,
'feature_code' => $this->selectedFeatureCode,
'boost_type' => $boostType,
'duration_type' => $durationType,
'limit_value' => $this->entitlementType === 'add_limit' ? $this->entitlementLimit : null,
'consumed_quantity' => 0,
'status' => \Core\Mod\Tenant\Models\Boost::STATUS_ACTIVE,
'status' => \Core\Tenant\Models\Boost::STATUS_ACTIVE,
'starts_at' => now(),
'expires_at' => $this->entitlementExpiresAt ? \Carbon\Carbon::parse($this->entitlementExpiresAt) : null,
'metadata' => ['granted_by' => auth()->id(), 'granted_at' => now()->toDateTimeString()],
@ -565,7 +565,7 @@ class WorkspaceDetails extends Component
public function removeBoost(int $boostId): void
{
$boost = \Core\Mod\Tenant\Models\Boost::where('workspace_id', $this->workspace->id)
$boost = \Core\Tenant\Models\Boost::where('workspace_id', $this->workspace->id)
->findOrFail($boostId);
$featureCode = $boost->feature_code;

View file

@ -1,9 +1,9 @@
<?php
namespace Core\Mod\Tenant\View\Modal\Admin;
namespace Core\Tenant\View\Modal\Admin;
use Core\Mod\Tenant\Models\User;
use Core\Mod\Tenant\Models\Workspace;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Facades\DB;
use Livewire\Attributes\Computed;
use Livewire\Component;

View file

@ -1,8 +1,8 @@
<?php
namespace Core\Mod\Tenant\View\Modal\Web;
namespace Core\Tenant\View\Modal\Web;
use Core\Mod\Tenant\Models\AccountDeletionRequest;
use Core\Tenant\Models\AccountDeletionRequest;
use Livewire\Attributes\Layout;
use Livewire\Component;

Some files were not shown because too many files have changed in this diff Show more