enum AgentStatusValue { available, busy, offline } class AgentStatus { final AgentStatusValue status; final bool isLoggedIn; final String? currentCallSid; final String? lastActivity; final bool availableForQueues; AgentStatus({ required this.status, required this.isLoggedIn, this.currentCallSid, this.lastActivity, this.availableForQueues = true, }); factory AgentStatus.fromJson(Map json) { return AgentStatus( status: _parseStatus(json['status'] as String), isLoggedIn: json['is_logged_in'] as bool, currentCallSid: json['current_call_sid'] as String?, lastActivity: json['last_activity'] as String?, availableForQueues: json['available_for_queues'] as bool? ?? true, ); } static AgentStatusValue _parseStatus(String s) { switch (s) { case 'available': return AgentStatusValue.available; case 'busy': return AgentStatusValue.busy; default: return AgentStatusValue.offline; } } }