File: /home/xedaptot/be.naniguide.com/app/ActivityLog/ActivityRegistry.php
<?php
namespace App\ActivityLog;
use App\ActivityLog\Activities;
class ActivityRegistry
{
private static array $map = [
// Campaign
'campaign.created' => Activities\CampaignCreated::class,
'campaign.updated' => Activities\CampaignUpdated::class,
'campaign.deleted' => Activities\CampaignDeleted::class,
'campaign.started' => Activities\CampaignStarted::class,
'campaign.paused' => Activities\CampaignPaused::class,
'campaign.restarted' => Activities\CampaignRestarted::class,
'campaign.sent' => Activities\CampaignSent::class,
// Subscriber
'subscriber.created' => Activities\SubscriberCreated::class,
'subscriber.updated' => Activities\SubscriberUpdated::class,
'subscriber.deleted' => Activities\SubscriberDeleted::class,
'subscriber.subscribed' => Activities\SubscriberSubscribed::class,
'subscriber.unsubscribed' => Activities\SubscriberUnsubscribed::class,
// List
'list.created' => Activities\ListCreated::class,
'list.updated' => Activities\ListUpdated::class,
'list.deleted' => Activities\ListDeleted::class,
'list.copied' => Activities\ListCopied::class,
'list.moved' => Activities\ListMoved::class,
'list.import_started' => Activities\ListImportStarted::class,
'list.import_success' => Activities\ListImportSuccess::class,
'list.import_max_error' => Activities\ListImportMaxError::class,
'list.export_started' => Activities\ListExportStarted::class,
'list.export_success' => Activities\ListExportSuccess::class,
// Segment
'segment.created' => Activities\SegmentCreated::class,
'segment.updated' => Activities\SegmentUpdated::class,
'segment.deleted' => Activities\SegmentDeleted::class,
// Page
'page.updated' => Activities\PageUpdated::class,
// Automation
'automation.created' => Activities\AutomationCreated::class,
'automation.updated' => Activities\AutomationUpdated::class,
'automation.deleted' => Activities\AutomationDeleted::class,
'automation.started' => Activities\AutomationStarted::class,
'automation.triggered' => Activities\AutomationTriggered::class,
// Sending Server
'sending_server.created' => Activities\SendingServerCreated::class,
'sending_server.updated' => Activities\SendingServerUpdated::class,
'sending_server.deleted' => Activities\SendingServerDeleted::class,
// Sending Domain
'sending_domain.created' => Activities\SendingDomainCreated::class,
'sending_domain.updated' => Activities\SendingDomainUpdated::class,
'sending_domain.deleted' => Activities\SendingDomainDeleted::class,
// Email Verification Server
'email_verification_server.created' => Activities\EmailVerificationServerCreated::class,
'email_verification_server.updated' => Activities\EmailVerificationServerUpdated::class,
'email_verification_server.deleted' => Activities\EmailVerificationServerDeleted::class,
// Subscription events (every subscription.* type dispatches to SubscriptionEvent,
// which switches on $log->type to pick the render. Writers emit these directly via
// ActivityLog::create() rather than through BaseActivity::record to keep the
// SubscriptionManagementService::log() signature unchanged.)
'subscription.select_plan' => Activities\SubscriptionEvent::class,
'subscription.pay_success' => Activities\SubscriptionEvent::class,
'subscription.pay_failed' => Activities\SubscriptionEvent::class,
'subscription.admin_approve' => Activities\SubscriptionEvent::class,
'subscription.admin_reject' => Activities\SubscriptionEvent::class,
'subscription.renew_order' => Activities\SubscriptionEvent::class,
'subscription.change_plan' => Activities\SubscriptionEvent::class,
'subscription.cancel_order' => Activities\SubscriptionEvent::class,
'subscription.cancelled' => Activities\SubscriptionEvent::class,
'subscription.disable_recurring' => Activities\SubscriptionEvent::class,
'subscription.enable_recurring' => Activities\SubscriptionEvent::class,
'subscription.ended' => Activities\SubscriptionEvent::class,
'subscription.terminated' => Activities\SubscriptionEvent::class,
'subscription.remote_sync' => Activities\SubscriptionEvent::class,
'subscription.remote_change_plan' => Activities\SubscriptionEvent::class,
'subscription.remote_cancel' => Activities\SubscriptionEvent::class,
'subscription.remote_activate' => Activities\SubscriptionEvent::class,
'subscription.remote_payment_failed' => Activities\SubscriptionEvent::class,
'subscription.credit_modified' => Activities\SubscriptionEvent::class,
];
/**
* Resolve a type string to its activity class.
*/
public static function resolve(string $type): ?string
{
return self::$map[$type] ?? null;
}
/**
* Get all registered type strings.
*/
public static function allTypes(): array
{
return array_keys(self::$map);
}
/**
* Get unique subject types for filter dropdown.
*/
public static function allSubjectTypes(): array
{
return array_values(array_unique(array_map(
fn ($class) => $class::subjectType(),
self::$map
)));
}
}