[ 'super_admin' => 'Super Administrator', 'org_admin' => 'Organization Administrator', 'branch_manager' => 'Branch Manager', 'receptionist' => 'Receptionist', 'queue_operator' => 'Queue Operator', 'counter_staff' => 'Counter Staff', 'department_manager' => 'Department Manager', 'security' => 'Security', 'supervisor' => 'Supervisor', ], 'department_types' => [ 'general' => 'General', 'reception' => 'Reception', 'customer_service' => 'Customer Service', 'cashier' => 'Cashier', 'consultation' => 'Consultation', 'laboratory' => 'Laboratory', 'pharmacy' => 'Pharmacy', 'verification' => 'Document Verification', 'payments' => 'Payments', 'collections' => 'Collections', 'technical_support' => 'Technical Support', 'security' => 'Security', 'triage' => 'Triage', 'imaging' => 'Imaging', 'billing' => 'Billing', ], 'queue_strategies' => [ 'fifo' => 'First In, First Out', 'priority' => 'Priority Queue', 'vip' => 'VIP Queue', 'appointment' => 'Appointment Queue', 'emergency' => 'Emergency Queue', 'department' => 'Department Queue', 'skill' => 'Skill-based Routing', 'dynamic' => 'Dynamic Routing', 'overflow' => 'Overflow Routing', ], 'ticket_priorities' => [ 'emergency' => 'Emergency', 'vip' => 'VIP', 'elderly' => 'Elderly', 'disabled' => 'Disabled', 'appointment' => 'Appointment', 'walk_in' => 'Walk-in', ], 'ticket_statuses' => [ 'waiting' => 'Waiting', 'called' => 'Called', 'serving' => 'Serving', 'on_hold' => 'On Hold', 'completed' => 'Completed', 'no_show' => 'No Show', 'cancelled' => 'Cancelled', 'transferred' => 'Transferred', ], 'ticket_sources' => [ 'kiosk' => 'Kiosk', 'reception' => 'Reception Desk', 'mobile' => 'Mobile App', 'web' => 'Website', 'api' => 'API', 'appointment' => 'Appointment Check-in', 'tablet' => 'Self-service Tablet', ], 'counter_statuses' => [ 'available' => 'Available', 'busy' => 'Busy', 'offline' => 'Offline', 'paused' => 'Paused', ], 'appointment_modes' => [ 'appointment_only' => 'Appointment Only', 'walk_in_only' => 'Walk-in Only', 'hybrid' => 'Hybrid', ], 'device_types' => [ 'kiosk' => 'Touchscreen Kiosk', 'tablet' => 'Tablet', 'printer' => 'Ticket Printer', 'scanner' => 'Barcode/QR Scanner', 'display' => 'Counter Display', 'feedback_tablet' => 'Feedback Tablet', ], 'display_layouts' => [ 'standard' => 'Standard', 'compact' => 'Compact', 'split' => 'Split Screen', 'media' => 'Media + Queue', ], 'announcement_templates' => [ 'en' => 'Ticket :ticket, please proceed to :destination.', 'fr' => 'Ticket :ticket, veuillez vous rendre au :destination.', 'tw' => 'Ticket :ticket, mesrɛ kɔ :destination.', 'with_staff' => ':ticket, :staff, :destination.', ], /* |-------------------------------------------------------------------------- | Industry labels (package definitions live in config/industry_packages.php) |-------------------------------------------------------------------------- */ 'industry_templates' => [ 'healthcare' => 'Healthcare', 'restaurant' => 'Restaurant', 'banking' => 'Banking', 'government' => 'Government Office', 'retail_service' => 'Retail Service Centre', 'vehicle' => 'Vehicle Service Centre', 'hospitality' => 'Hotel / Hospitality', 'logistics' => 'Logistics', 'university' => 'University', 'telecom' => 'Telecom Service Centre', 'events' => 'Events', 'church' => 'Church', 'visitor' => 'Visitor Management', 'retail' => 'Retail', 'custom' => 'Custom', ], 'routing_strategies' => [ 'round_robin' => 'Round robin', 'least_busy' => 'Least busy', 'skill_based' => 'Skill based', 'doctor_assignment' => 'Doctor assignment', 'manual_assignment' => 'Manual assignment', 'priority_assignment' => 'Priority assignment', 'appointment_based' => 'Appointment based', 'random' => 'Random', 'department_rules' => 'Department rules', ], 'audit_actions' => [ 'organization.created' => 'Organization created', 'organization.updated' => 'Organization updated', 'branch.created' => 'Branch created', 'branch.updated' => 'Branch updated', 'department.created' => 'Department created', 'department.updated' => 'Department updated', 'department.deleted' => 'Department deleted', 'member.created' => 'Member added', 'member.updated' => 'Member updated', 'member.deleted' => 'Member removed', 'service_queue.created' => 'Queue created', 'service_queue.updated' => 'Queue updated', 'service_queue.deleted' => 'Queue archived', 'service_queue.paused' => 'Queue paused', 'service_queue.resumed' => 'Queue resumed', 'counter.created' => 'Counter created', 'counter.updated' => 'Counter updated', 'counter.deleted' => 'Counter archived', 'ticket.issued' => 'Ticket issued', 'ticket.called' => 'Ticket called', 'ticket.recalled' => 'Ticket recalled', 'ticket.skipped' => 'Ticket skipped', 'ticket.transferred' => 'Ticket transferred', 'ticket.held' => 'Ticket placed on hold', 'ticket.completed' => 'Service completed', 'ticket.no_show' => 'Ticket marked no-show', 'ticket.cancelled' => 'Ticket cancelled', 'appointment.created' => 'Appointment scheduled', 'appointment.checked_in' => 'Appointment checked in', 'appointment.cancelled' => 'Appointment cancelled', 'workflow.created' => 'Workflow created', 'workflow.updated' => 'Workflow updated', 'display.created' => 'Display screen created', 'display.updated' => 'Display screen updated', 'device.created' => 'Device registered', 'device.updated' => 'Device updated', 'feedback.submitted' => 'Customer feedback submitted', ], 'notification_templates' => [ 'issued' => 'Your ticket :ticket is confirmed for :queue. We will notify you when it is almost your turn.', 'called' => 'Ticket :ticket — please proceed to :counter now.', 'almost_ready' => 'Ticket :ticket — you are :ahead customer(s) away. Please head to the waiting area.', 'completed' => 'Thank you for visiting. Ticket :ticket is complete. Share feedback: :feedback_url', 'missed' => 'Ticket :ticket was marked as missed. Please rejoin the queue if you still need service.', 'transferred' => 'Ticket :ticket has been handed off to :queue. Keep your ticket — your number stays the same.', ], 'report_types' => [ 'tickets' => 'Ticket volume & throughput', 'wait_times' => 'Wait times & peak hours', 'counters' => 'Counter performance', 'appointments' => 'Appointments', 'feedback' => 'Customer satisfaction', 'service_sessions' => 'Service sessions', ], 'plans' => [ 'free' => [ 'label' => 'Free', 'price_minor' => 0, 'max_branches' => 1, 'max_queues' => 5, 'features' => [ 'queues', 'tickets', 'counters', 'displays', ], ], 'pro' => [ 'label' => 'Pro', 'price_minor_per_branch' => (int) env( 'QUEUE_PRO_PRICE_PER_BRANCH_MINOR', env('QUEUE_PRO_PRICE_MINOR', 249000) ), 'max_branches' => null, 'max_queues' => null, 'features' => [ 'queues', 'tickets', 'counters', 'displays', 'branches', 'team', 'transfer', 'routing', 'integrations', 'reports', ], ], 'enterprise' => [ 'label' => 'Enterprise', 'price_minor_per_branch' => (int) env('QUEUE_ENTERPRISE_PRICE_PER_BRANCH_MINOR', 449000), 'max_branches' => null, 'max_queues' => null, 'features' => [ 'queues', 'tickets', 'counters', 'displays', 'branches', 'team', 'transfer', 'routing', 'integrations', 'reports', 'sla', ], ], ], 'pro' => [ 'grace_days' => (int) env('QUEUE_PRO_GRACE_DAYS', 3), 'period_days' => (int) env('QUEUE_PRO_PERIOD_DAYS', 30), ], 'enterprise' => [ 'min_branches' => (int) env('QUEUE_ENTERPRISE_MIN_BRANCHES', 2), ], 'prepaid_months' => [6, 12, 24], 'rule_types' => [ 'overflow' => 'Overflow routing', 'priority_boost' => 'Priority boost', 'routing' => 'Dynamic routing', 'capacity' => 'Capacity limit', ], /* | Legacy thin workflow name lists — prefer industry_packages.stages for installs. */ 'workflow_templates' => [ 'healthcare' => [ ['name' => 'Registration', 'sort_order' => 1], ['name' => 'Triage', 'sort_order' => 2], ['name' => 'Consultation', 'sort_order' => 3], ['name' => 'Laboratory', 'sort_order' => 4], ['name' => 'Pharmacy', 'sort_order' => 5], ['name' => 'Billing', 'sort_order' => 6], ], 'banking' => [ ['name' => 'Reception', 'sort_order' => 1], ['name' => 'Teller', 'sort_order' => 2], ['name' => 'Customer service', 'sort_order' => 3], ], 'government' => [ ['name' => 'Reception', 'sort_order' => 1], ['name' => 'Verification', 'sort_order' => 2], ['name' => 'Processing', 'sort_order' => 3], ['name' => 'Payment', 'sort_order' => 4], ['name' => 'Collection', 'sort_order' => 5], ], 'custom' => [], ], /* |-------------------------------------------------------------------------- | Inbound service API keys (sibling Ladill apps calling Queue) |-------------------------------------------------------------------------- */ 'service_api_keys' => array_filter([ 'pos' => env('QUEUE_API_KEY_POS'), 'crm' => env('QUEUE_API_KEY_CRM'), 'care' => env('QUEUE_API_KEY_CARE'), 'frontdesk' => env('QUEUE_API_KEY_FRONTDESK'), ]), 'display_poll_ms' => (int) env('QUEUE_DISPLAY_POLL_MS', 1200), 'upgrade_banner' => [ 'title' => 'Unlock Queue Pro or Enterprise', 'description' => 'Unlimited branches, advanced routing, Care & Frontdesk integrations — from GHS 2490/branch/mo.', 'route' => 'qms.pro.index', ], ];