Adding new functionality

This commit is contained in:
2025-08-31 06:20:15 -07:00
parent c8c02da433
commit 5b6011bdb8
9 changed files with 1821 additions and 82 deletions

View File

@@ -104,16 +104,22 @@ class TWP_Agent_Manager {
$user_id
));
// Preserve login status if not explicitly changing it
$is_logged_in = $existing ? $existing->is_logged_in : 0;
$logged_in_at = $existing ? $existing->logged_in_at : null;
if ($existing) {
return $wpdb->update(
$table_name,
array(
'status' => $status,
'current_call_sid' => $call_sid,
'last_activity' => current_time('mysql')
'last_activity' => current_time('mysql'),
'is_logged_in' => $is_logged_in,
'logged_in_at' => $logged_in_at
),
array('user_id' => $user_id),
array('%s', '%s', '%s'),
array('%s', '%s', '%s', '%d', '%s'),
array('%d')
);
} else {
@@ -123,13 +129,85 @@ class TWP_Agent_Manager {
'user_id' => $user_id,
'status' => $status,
'current_call_sid' => $call_sid,
'last_activity' => current_time('mysql')
'last_activity' => current_time('mysql'),
'is_logged_in' => 0,
'logged_in_at' => null
),
array('%d', '%s', '%s', '%s')
array('%d', '%s', '%s', '%s', '%d', '%s')
);
}
}
/**
* Set agent login status
*/
public static function set_agent_login_status($user_id, $is_logged_in) {
global $wpdb;
$table_name = $wpdb->prefix . 'twp_agent_status';
$existing = $wpdb->get_row($wpdb->prepare(
"SELECT * FROM $table_name WHERE user_id = %d",
$user_id
));
$logged_in_at = $is_logged_in ? current_time('mysql') : null;
// Update queue timeout based on login status
if (class_exists('TWP_User_Queue_Manager')) {
TWP_User_Queue_Manager::update_queue_timeout_for_login($user_id, $is_logged_in);
}
// Also ensure user has queues created if logging in
if ($is_logged_in && class_exists('TWP_User_Queue_Manager')) {
$extension_data = TWP_User_Queue_Manager::get_user_extension_data($user_id);
if (!$extension_data) {
TWP_User_Queue_Manager::create_user_queues($user_id);
}
}
if ($existing) {
return $wpdb->update(
$table_name,
array(
'is_logged_in' => $is_logged_in ? 1 : 0,
'logged_in_at' => $logged_in_at,
'last_activity' => current_time('mysql'),
'status' => $is_logged_in ? 'available' : 'offline'
),
array('user_id' => $user_id),
array('%d', '%s', '%s', '%s'),
array('%d')
);
} else {
return $wpdb->insert(
$table_name,
array(
'user_id' => $user_id,
'status' => $is_logged_in ? 'available' : 'offline',
'is_logged_in' => $is_logged_in ? 1 : 0,
'logged_in_at' => $logged_in_at,
'last_activity' => current_time('mysql')
),
array('%d', '%s', '%d', '%s', '%s')
);
}
}
/**
* Check if agent is logged in
*/
public static function is_agent_logged_in($user_id) {
global $wpdb;
$table_name = $wpdb->prefix . 'twp_agent_status';
$status = $wpdb->get_row($wpdb->prepare(
"SELECT is_logged_in FROM $table_name WHERE user_id = %d",
$user_id
));
return $status && $status->is_logged_in == 1;
}
/**
* Get agent status
*/