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'] ?? 'offline') as String), isLoggedIn: json['is_logged_in'] == true || json['is_logged_in'] == 1 || json['is_logged_in'] == '1', currentCallSid: json['current_call_sid'] as String?, lastActivity: json['last_activity'] as String?, availableForQueues: json['available_for_queues'] != false && json['available_for_queues'] != 0 && json['available_for_queues'] != '0', ); } static AgentStatusValue _parseStatus(String s) { switch (s) { case 'available': return AgentStatusValue.available; case 'busy': return AgentStatusValue.busy; default: return AgentStatusValue.offline; } } }