Skip to main content

Enums

This section documents all the enums used in the OPBX system for type safety and code clarity.

User & Access Control

EnumDescription
UserRoleUser roles: owner, pbx_admin, pbx_user, reporter
UserStatusAccount status: active, inactive
OrganizationStatusOrganization status: active, inactive, suspended

Extension & Routing

EnumDescription
ExtensionTypeExtension types: user, conference, ring_group, ivr, ai_assistant, etc.
RingGroupStrategyRing strategies: simultaneous, round_robin, sequential
RingGroupFallbackActionFallback actions when no answer
IvrDestinationTypeIVR routing destinations

AI Features

EnumDescription
AlbsStrategyAI Load Balancer strategies

Call Management

EnumDescription
CallStatusCall lifecycle states

Security

EnumDescription
InboundBlacklistMatchTypeBlacklist 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'