Fix queue loading, null-safe models, autofill, and add outbound dialer
All checks were successful
Create Release / build (push) Successful in 4s
All checks were successful
Create Release / build (push) Successful in 4s
- Fix queue queries in mobile API and SSE to use twp_group_members (matching browser phone) instead of twp_queue_assignments - Auto-create personal queues if user has no extension - Make all model JSON parsing null-safe (handle null, string ints, bools) - Add AutofillGroup and autofill hints to login form - Add outbound calling with dialpad bottom sheet on dashboard Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -142,38 +142,40 @@ class TWP_Mobile_SSE {
|
||||
global $wpdb;
|
||||
$queues_table = $wpdb->prefix . 'twp_call_queues';
|
||||
$calls_table = $wpdb->prefix . 'twp_queued_calls';
|
||||
$assignments_table = $wpdb->prefix . 'twp_queue_assignments';
|
||||
$groups_table = $wpdb->prefix . 'twp_group_members';
|
||||
|
||||
// Get queue IDs
|
||||
$queue_ids = $wpdb->get_col($wpdb->prepare(
|
||||
"SELECT queue_id FROM $assignments_table WHERE user_id = %d",
|
||||
// Auto-create personal queues if they don't exist
|
||||
$extensions_table = $wpdb->prefix . 'twp_user_extensions';
|
||||
$existing_extension = $wpdb->get_row($wpdb->prepare(
|
||||
"SELECT extension FROM $extensions_table WHERE user_id = %d",
|
||||
$user_id
|
||||
));
|
||||
|
||||
$personal_queue_ids = $wpdb->get_col($wpdb->prepare(
|
||||
"SELECT id FROM $queues_table WHERE user_id = %d",
|
||||
$user_id
|
||||
));
|
||||
|
||||
$all_queue_ids = array_unique(array_merge($queue_ids, $personal_queue_ids));
|
||||
|
||||
if (empty($all_queue_ids)) {
|
||||
return array();
|
||||
if (!$existing_extension) {
|
||||
TWP_User_Queue_Manager::create_user_queues($user_id);
|
||||
}
|
||||
|
||||
$queue_ids_str = implode(',', array_map('intval', $all_queue_ids));
|
||||
|
||||
$queues = $wpdb->get_results("
|
||||
SELECT
|
||||
// Get queues where user is a member of the assigned agent group OR personal/hold queues
|
||||
$queues = $wpdb->get_results($wpdb->prepare("
|
||||
SELECT DISTINCT
|
||||
q.id,
|
||||
q.queue_name,
|
||||
COUNT(c.id) as waiting_count,
|
||||
MIN(c.enqueued_at) as oldest_call_time
|
||||
FROM $queues_table q
|
||||
LEFT JOIN $groups_table gm ON gm.group_id = q.agent_group_id
|
||||
LEFT JOIN $calls_table c ON q.id = c.queue_id AND c.status = 'waiting'
|
||||
WHERE q.id IN ($queue_ids_str)
|
||||
WHERE (gm.user_id = %d AND gm.is_active = 1)
|
||||
OR (q.user_id = %d AND q.queue_type IN ('personal', 'hold'))
|
||||
GROUP BY q.id
|
||||
");
|
||||
ORDER BY
|
||||
CASE
|
||||
WHEN q.queue_type = 'personal' THEN 1
|
||||
WHEN q.queue_type = 'hold' THEN 2
|
||||
ELSE 3
|
||||
END,
|
||||
q.queue_name ASC
|
||||
", $user_id, $user_id));
|
||||
|
||||
$result = array();
|
||||
foreach ($queues as $queue) {
|
||||
|
||||
Reference in New Issue
Block a user