Enums
This section documents all the enums used in the OPBX system for type safety and code clarity.
User & Access Control
| Enum | Description |
|---|---|
| UserRole | User roles: owner, pbx_admin, pbx_user, reporter |
| UserStatus | Account status: active, inactive |
| OrganizationStatus | Organization status: active, inactive, suspended |
Extension & Routing
| Enum | Description |
|---|---|
| ExtensionType | Extension types: user, conference, ring_group, ivr, ai_assistant, etc. |
| RingGroupStrategy | Ring strategies: simultaneous, round_robin, sequential |
| RingGroupFallbackAction | Fallback actions when no answer |
| IvrDestinationType | IVR routing destinations |
AI Features
| Enum | Description |
|---|---|
| AlbsStrategy | AI Load Balancer strategies |
Call Management
| Enum | Description |
|---|---|
| CallStatus | Call lifecycle states |
Security
| Enum | Description |
|---|---|
| InboundBlacklistMatchType | Blacklist matching types |
Common Enum Methods
All enums typically include these methods:
label(): string
Returns a human-readable label.
UserRole::OWNER->label(); // "Owner"
description(): string
Returns a detailed description (when available).
ExtensionType::AI_ASSISTANT->description();
// "AI-powered virtual assistant"
Boolean Check Methods
Most enums include methods for checking specific values:
// UserRole
$user->role->isOwner();
$user->role->canManageUsers();
// UserStatus
$user->status->isActive();
// CallStatus
$call->status->isTerminal();
$call->status->isActive();
values(): array
Returns all enum values as an array.
ExtensionType::values();
// ['user', 'conference', 'ring_group', ...]
Usage in Validation
use App\Enums\UserRole;
use Illuminate\Validation\Rules\Enum;
$validated = $request->validate([
'role' => ['required', new Enum(UserRole::class)],
]);
Database Storage
All enums are stored as VARCHAR strings in the database:
role VARCHAR(50) NOT NULL DEFAULT 'pbx_user'
status VARCHAR(50) NOT NULL DEFAULT 'active'