<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);
include '../db.php';
include 'auth.php';
 
if (!isset($_SESSION['user_id'])) {
    header("Location: /ems/superadmin/index.php");
    exit();
}
 
$current_user_id = $_SESSION['user_id'];
$current_user_role = $_SESSION['user_role'];
// At the top of your file where you initialize session variables

 
// Handle form submissions
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST['send_message'])) {
        handleSendMessage();
    } elseif (isset($_POST['create_group'])) {
        handleCreateGroup();
    } elseif (isset($_POST['update_group'])) {
        handleUpdateGroup();
    } elseif (isset($_POST['remove_member'])) {
        handleRemoveMember();
    } elseif (isset($_POST['delete_group'])) {
        handleDeleteGroup();
    }
}
 
// Get the current chat ID and type from URL or session
$current_chat_id = $_GET['chat_id'] ?? $_SESSION['current_chat_id'] ?? null;
$current_chat_type = $_GET['chat_type'] ?? $_SESSION['current_chat_type'] ?? null;
$_SESSION['current_chat_id'] = $current_chat_id;
$_SESSION['current_chat_type'] = $current_chat_type;
 
// Get user list based on role permissions with last message timestamp
function getUsersForChat($conn, $current_user_id, $current_user_role) {
    $users = [];

    // Only allow if the current user is admin
    if ($current_user_role !== 'admin') {
        return []; // Return empty list for non-admins
    }

    $query = "SELECT u.id, u.name, u.email, u.role, u.profile_pic,
                    (SELECT MAX(created_at) FROM messages m 
                     WHERE ((m.sender_id = u.id AND m.receiver_id = ?) OR 
                            (m.sender_id = ? AND m.receiver_id = u.id))) as last_message_time,
                    (SELECT COUNT(*) FROM messages m 
                     WHERE m.receiver_id = ? AND m.sender_id = u.id AND m.status = 'unread') as unread_count
              FROM users u 
              WHERE u.id != ? AND u.status = 'active'
              ORDER BY last_message_time DESC";

    $stmt = $conn->prepare($query);
    $stmt->bind_param("iiii", $current_user_id, $current_user_id, $current_user_id, $current_user_id);

    $stmt->execute();
    $result = $stmt->get_result();

    while ($row = $result->fetch_assoc()) {
        $users[] = $row;
    }

    return $users;
}

 
// Get total unread messages count
function getTotalUnreadCount($conn, $current_user_id) {
    $total = 0;
    
    // Count unread direct messages
    $dm_query = "SELECT COUNT(*) as count FROM messages 
                 WHERE receiver_id = ? AND status = 'unread' AND is_group = 0";
    $dm_stmt = $conn->prepare($dm_query);
    $dm_stmt->bind_param("i", $current_user_id);
    $dm_stmt->execute();
    $dm_result = $dm_stmt->get_result();
    $total += $dm_result->fetch_assoc()['count'];
    
    // Count unread group messages
    $group_query = "SELECT COUNT(*) as count FROM messages m
                    JOIN group_members gm ON m.group_id = gm.group_id
                    WHERE gm.user_id = ? AND m.status = 'unread' AND m.is_group = 1
                    AND m.sender_id != ?";
    $group_stmt = $conn->prepare($group_query);
    $group_stmt->bind_param("ii", $current_user_id, $current_user_id);
    $group_stmt->execute();
    $group_result = $group_stmt->get_result();
    $total += $group_result->fetch_assoc()['count'];
    
    return $total;
}
 
// Get groups for the current user with last message timestamp
function getUserGroups($conn, $current_user_id) {
    $groups = [];
 
    $query = "SELECT g.id, g.name, g.description, g.created_by, 
                     (SELECT COUNT(*) FROM group_members WHERE group_id = g.id) AS member_count,
                     (SELECT MAX(created_at) FROM messages m WHERE m.group_id = g.id) as last_message_time,
                     (SELECT COUNT(*) FROM messages m 
                      WHERE m.group_id = g.id AND m.status = 'unread' AND m.sender_id != ?) as unread_count
              FROM chat_groups g
              JOIN group_members m ON g.id = m.group_id
              WHERE m.user_id = ? AND g.is_active = 1
              ORDER BY last_message_time DESC";
 
    $stmt = $conn->prepare($query);
    $stmt->bind_param("ii", $current_user_id, $current_user_id);
    $stmt->execute();
    $result = $stmt->get_result();
 
    while ($row = $result->fetch_assoc()) {
        $groups[] = $row;
    }
 
    return $groups;
}
 
// Get members of a group
function getGroupMembers($conn, $group_id) {
    $members = [];
 
    $query = "SELECT u.id, u.name, u.email, u.role, u.profile_pic, gm.is_admin
              FROM group_members gm
              JOIN users u ON gm.user_id = u.id
              WHERE gm.group_id = ?";
 
    $stmt = $conn->prepare($query);
    $stmt->bind_param("i", $group_id);
    $stmt->execute();
    $result = $stmt->get_result();
 
    while ($row = $result->fetch_assoc()) {
        $members[] = $row;
    }
 
    return $members;
}
 
// Get messages for current chat
function getMessages($conn, $chat_id, $chat_type, $current_user_id) {
    $messages = [];
 
    if ($chat_type === 'user') {
        $query = "SELECT m.*, u.name AS sender_name 
                  FROM messages m
                  JOIN users u ON m.sender_id = u.id
                  WHERE ((m.sender_id = ? AND m.receiver_id = ?) OR 
                         (m.sender_id = ? AND m.receiver_id = ?))
                    AND m.is_deleted = 0
                  ORDER BY m.created_at ASC";
        $stmt = $conn->prepare($query);
        $stmt->bind_param("iiii", $current_user_id, $chat_id, $chat_id, $current_user_id);
        
        // Mark messages as read when viewing
        $update_query = "UPDATE messages SET status = 'read' 
                        WHERE receiver_id = ? AND sender_id = ? AND status = 'unread'";
        $update_stmt = $conn->prepare($update_query);
        $update_stmt->bind_param("ii", $current_user_id, $chat_id);
        $update_stmt->execute();
    } elseif ($chat_type === 'group') {
        $query = "SELECT m.*, u.name AS sender_name 
                  FROM messages m
                  JOIN users u ON m.sender_id = u.id
                  WHERE m.group_id = ? AND m.is_deleted = 0
                  ORDER BY m.created_at ASC";
        $stmt = $conn->prepare($query);
        $stmt->bind_param("i", $chat_id);
        
        // Mark group messages as read when viewing
        $update_query = "UPDATE messages SET status = 'read' 
                        WHERE group_id = ? AND status = 'unread' AND sender_id != ?";
        $update_stmt = $conn->prepare($update_query);
        $update_stmt->bind_param("ii", $chat_id, $current_user_id);
        $update_stmt->execute();
    } else {
        return [];
    }
 
    $stmt->execute();
    $result = $stmt->get_result();
 
    while ($row = $result->fetch_assoc()) {
        $messages[] = $row;
    }
 
    return $messages;
}
 
// Get user details for a chat
function getUserDetails($conn, $user_id) {
    $query = "SELECT id, name, email, role, profile_pic, 
                     DATE_FORMAT(last_activity, '%Y-%m-%d %H:%i:%s') AS last_seen
              FROM users 
              WHERE id = ?";
 
    $stmt = $conn->prepare($query);
    $stmt->bind_param("i", $user_id);
    $stmt->execute();
    $result = $stmt->get_result();
 
    return $result->num_rows > 0 ? $result->fetch_assoc() : null;
}
 
// Get group details
function getGroupDetails($conn, $group_id, $current_user_id) {
    // Get group info
    $group_query = "SELECT g.*, 
                   DATE_FORMAT(g.created_at, '%M %d, %Y') as created_date,
                   (SELECT COUNT(*) FROM group_members WHERE group_id = g.id) as member_count,
                   (SELECT COUNT(*) FROM messages WHERE group_id = g.id) as message_count
                   FROM chat_groups g
                   WHERE g.id = ?";
    $group_stmt = $conn->prepare($group_query);
    $group_stmt->bind_param("i", $group_id);
    $group_stmt->execute();
    $group_result = $group_stmt->get_result();
 
    if ($group_result->num_rows === 0) {
        return null;
    }
 
    $group = $group_result->fetch_assoc();
 
    // Get members
    $members = getGroupMembers($conn, $group_id);
 
    // Check if current user is admin
    $is_admin = false;
    foreach ($members as $member) {
        if ($member['id'] == $current_user_id && $member['is_admin']) {
            $is_admin = true;
            break;
        }
    }
 
    return [
        'group' => $group,
        'members' => $members,
        'is_admin' => $is_admin
    ];
}
 
// Handle sending a message
function handleSendMessage() {
    global $conn;
 
    $current_user_id = $_SESSION['user_id'] ?? null;
    $current_chat_id = $_POST['chat_id'] ?? null;
    $current_chat_type = $_POST['chat_type'] ?? null;
    $message = trim($_POST['message'] ?? '');
    $attachment_path = null;
 
    if (!$current_user_id || !$current_chat_id || !$current_chat_type) {
        die("Missing chat ID or type or user.");
    }
 
    // Handle file upload
    if (!empty($_FILES['attachment']['name'])) {
        $upload_dir = 'Uploads/chat_attachments/';
        if (!is_dir($upload_dir)) {
            mkdir($upload_dir, 0755, true);
        }
 
        $file_name = time() . '_' . basename($_FILES['attachment']['name']);
        $target_path = $upload_dir . $file_name;
 
        if (move_uploaded_file($_FILES['attachment']['tmp_name'], $target_path)) {
            $attachment_path = 'chat_attachments/' . $file_name;
        }
    }
 
    if ($current_chat_type === 'user') {
        $query = "INSERT INTO messages (sender_id, receiver_id, subject, body, attachment, status, created_at) 
                  VALUES (?, ?, 'Direct Message', ?, ?, 'unread', NOW())";
        $stmt = $conn->prepare($query);
        $stmt->bind_param("iiss", $current_user_id, $current_chat_id, $message, $attachment_path);
    } elseif ($current_chat_type === 'group') {
        $query = "INSERT INTO messages (sender_id, group_id, subject, body, attachment, status, created_at, is_group) 
                  VALUES (?, ?, 'Group Message', ?, ?, 'unread', NOW(), 1)";
        $stmt = $conn->prepare($query);
        $stmt->bind_param("iiss", $current_user_id, $current_chat_id, $message, $attachment_path);
    } else {
        die("Invalid chat type received: " . htmlspecialchars($current_chat_type));
    }
 
    if (isset($stmt)) {
        $stmt->execute();
    } else {
        die("Failed to prepare statement.");
    }
 
    $conn->query("UPDATE users SET last_activity = NOW() WHERE id = $current_user_id");
 
    header("Location: chat.php?chat_id=$current_chat_id&chat_type=$current_chat_type");
    exit();
}
 
// Handle creating a group
function handleCreateGroup() {
    global $conn;
    $current_user_id = $_SESSION['user_id'] ?? null;
 
    $name = trim($_POST['name'] ?? '');
    $description = trim($_POST['description'] ?? '');
    $members = $_POST['members'] ?? [];
 
    if (!$name || empty($members)) {
        $_SESSION['error'] = 'Group name and at least one member are required';
        header("Location: chat.php");
        exit();
    }
 
    $conn->begin_transaction();
 
    try {
        // Insert group
        $query = "INSERT INTO chat_groups (name, description, created_by, created_at) 
                  VALUES (?, ?, ?, NOW())";
        $stmt = $conn->prepare($query);
        $stmt->bind_param("ssi", $name, $description, $current_user_id);
        $stmt->execute();
        $group_id = $conn->insert_id;
 
        // Add creator as admin
        $admin_query = "INSERT INTO group_members (group_id, user_id, is_admin, joined_at) 
                        VALUES (?, ?, 1, NOW())";
        $admin_stmt = $conn->prepare($admin_query);
        $admin_stmt->bind_param("ii", $group_id, $current_user_id);
        $admin_stmt->execute();
 
        // Add other members
        $member_query = "INSERT INTO group_members (group_id, user_id, joined_at) 
                         VALUES (?, ?, NOW())";
        $member_stmt = $conn->prepare($member_query);
 
        foreach ($members as $member_id) {
            $member_id = intval($member_id);
            if ($member_id !== $current_user_id) {
                $member_stmt->bind_param("ii", $group_id, $member_id);
                $member_stmt->execute();
            }
        }
 
        $conn->commit();
        $_SESSION['success'] = 'Group created successfully';
        header("Location: chat.php?chat_id=$group_id&chat_type=group");
        exit();
    } catch (Exception $e) {
        $conn->rollback();
        $_SESSION['error'] = 'Failed to create group: ' . $e->getMessage();
        header("Location: chat.php");
        exit();
    }
}
 
// Handle updating group info
function handleUpdateGroup() {
    global $conn, $current_user_id;
 
    $group_id = intval($_POST['group_id'] ?? 0);
    $name = trim($_POST['name'] ?? '');
    $description = trim($_POST['description'] ?? '');
    $new_members = $_POST['new_members'] ?? [];
 
    // Verify current user is admin of this group
    $check_query = "SELECT is_admin FROM group_members 
                    WHERE group_id = ? AND user_id = ?";
    $check_stmt = $conn->prepare($check_query);
    $check_stmt->bind_param("ii", $group_id, $current_user_id);
    $check_stmt->execute();
    $check_result = $check_stmt->get_result();
 
    if ($check_result->num_rows === 0 || !$check_result->fetch_assoc()['is_admin']) {
        $_SESSION['error'] = 'You are not authorized to update this group';
        header("Location: chat.php?chat_id=$group_id&chat_type=group");
        exit();
    }
 
    $conn->begin_transaction();
 
    try {
        // Update group info
        $query = "UPDATE chat_groups SET name = ?, description = ? WHERE id = ?";
        $stmt = $conn->prepare($query);
        $stmt->bind_param("ssi", $name, $description, $group_id);
        $stmt->execute();
 
        // Add new members if any
        if (!empty($new_members)) {
            $member_query = "INSERT INTO group_members (group_id, user_id, joined_at) 
                             VALUES (?, ?, NOW())";
            $member_stmt = $conn->prepare($member_query);
 
            foreach ($new_members as $member_id) {
                $member_id = intval($member_id);
                // Check if member already exists
                $check_query = "SELECT COUNT(*) as count FROM group_members 
                                WHERE group_id = ? AND user_id = ?";
                $check_stmt = $conn->prepare($check_query);
                $check_stmt->bind_param("ii", $group_id, $member_id);
                $check_stmt->execute();
                $check_result = $check_stmt->get_result();
                $count = $check_result->fetch_assoc()['count'];
 
                if ($count == 0) {
                    $member_stmt->bind_param("ii", $group_id, $member_id);
                    $member_stmt->execute();
                }
            }
        }
 
        $conn->commit();
        $_SESSION['success'] = 'Group updated successfully';
        header("Location: chat.php?chat_id=$group_id&chat_type=group");
        exit();
    } catch (Exception $e) {
        $conn->rollback();
        $_SESSION['error'] = 'Failed to update group: ' . $e->getMessage();
        header("Location: chat.php?chat_id=$group_id&chat_type=group");
        exit();
    }
}
 
// Handle removing a group member
function handleRemoveMember() {
    global $conn, $current_user_id;
 
    $group_id = intval($_POST['group_id'] ?? 0);
    $user_id = intval($_POST['user_id'] ?? 0);
 
    // Check if current user is admin
    $check_query = "SELECT is_admin FROM group_members 
                    WHERE group_id = ? AND user_id = ?";
    $check_stmt = $conn->prepare($check_query);
    $check_stmt->bind_param("ii", $group_id, $current_user_id);
    $check_stmt->execute();
    $check_result = $check_stmt->get_result();
 
    if ($check_result->num_rows === 0 || !$check_result->fetch_assoc()['is_admin']) {
        $_SESSION['error'] = 'You are not authorized to remove members';
        header("Location: chat.php?chat_id=$group_id&chat_type=group");
        exit();
    }
 
    // Check if target user is admin
    $target_query = "SELECT is_admin FROM group_members 
                     WHERE group_id = ? AND user_id = ?";
    $target_stmt = $conn->prepare($target_query);
    $target_stmt->bind_param("ii", $group_id, $user_id);
    $target_stmt->execute();
    $target_result = $target_stmt->get_result();
 
    if ($target_result->num_rows > 0 && $target_result->fetch_assoc()['is_admin']) {
        $_SESSION['error'] = 'Cannot remove another admin from the group';
        header("Location: chat.php?chat_id=$group_id&chat_type=group");
        exit();
    }
 
    // Remove member
    $delete_query = "DELETE FROM group_members WHERE group_id = ? AND user_id = ?";
    $delete_stmt = $conn->prepare($delete_query);
    $delete_stmt->bind_param("ii", $group_id, $user_id);
 
    if ($delete_stmt->execute()) {
        $_SESSION['success'] = 'Member removed successfully';
    } else {
        $_SESSION['error'] = 'Failed to remove member';
    }
 
    header("Location: chat.php?chat_id=$group_id&chat_type=group");
    exit();
}
 
// Handle deleting a group
function handleDeleteGroup() {
    global $conn, $current_user_id;
 
    $group_id = intval($_POST['group_id'] ?? 0);
 
    // Check if current user is the group creator
    $check_query = "SELECT created_by FROM chat_groups WHERE id = ?";
    $check_stmt = $conn->prepare($check_query);
    $check_stmt->bind_param("i", $group_id);
    $check_stmt->execute();
    $check_result = $check_stmt->get_result();
 
    if ($check_result->num_rows === 0 || $check_result->fetch_assoc()['created_by'] != $current_user_id) {
        $_SESSION['error'] = 'You are not authorized to delete this group';
        header("Location: chat.php");
        exit();
    }
 
    $conn->begin_transaction();
 
    try {
        // Delete group members
        $delete_members = "DELETE FROM group_members WHERE group_id = ?";
        $stmt_members = $conn->prepare($delete_members);
        $stmt_members->bind_param("i", $group_id);
        $stmt_members->execute();
 
        // Mark group as inactive
        $delete_group = "UPDATE chat_groups SET is_active = 0 WHERE id = ?";
        $stmt_group = $conn->prepare($delete_group);
        $stmt_group->bind_param("i", $group_id);
        $stmt_group->execute();
 
        $conn->commit();
        $_SESSION['success'] = 'Group deleted successfully';
        header("Location: chat.php");
        exit();
    } catch (Exception $e) {
        $conn->rollback();
        $_SESSION['error'] = 'Failed to delete group: ' . $e->getMessage();
        header("Location: chat.php?chat_id=$group_id&chat_type=group");
        exit();
    }
}
 
// Get data for current view
$users = getUsersForChat($conn, $current_user_id, $current_user_role);
$groups = getUserGroups($conn, $current_user_id);
$total_unread_count = getTotalUnreadCount($conn, $current_user_id);
 
// Get messages for current chat if one is selected
$messages = [];
$chat_details = null;
$is_group_admin = false;
 
if ($current_chat_id && $current_chat_type) {
    $messages = getMessages($conn, $current_chat_id, $current_chat_type, $current_user_id);
 
    if ($current_chat_type === 'user') {
        $chat_details = getUserDetails($conn, $current_chat_id);
    } elseif ($current_chat_type === 'group') {
        $group_data = getGroupDetails($conn, $current_chat_id, $current_user_id);
        if ($group_data) {
            $chat_details = $group_data['group'];
            $is_group_admin = $group_data['is_admin'];
        }
    }
}
 
// Helper function to escape HTML
function escapeHtml($text) {
    return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
}
 
// Helper function to format message time
function formatMessageTime($datetime) {
    $date = new DateTime($datetime);
    return $date->format('h:i A');
}
 
// Helper function to get filename from path
function getFileName($path) {
    $parts = explode('/', $path);
    $filename = end($parts);
    $filename_parts = explode('_', $filename);
    array_shift($filename_parts); // Remove timestamp
    return implode('_', $filename_parts);
}
?>
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Chat System | Decconz Admin Dashboard</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta content="A fully featured admin theme which can be used to build CRM, CMS, etc." name="description">
    <meta content="Coderthemes" name="author">
 
    <!-- Theme Config Js -->
    <script src="../js/hyper-config.js"></script>
 
    <!-- Vendor css -->
    <link href="../css/vendor.min.css" rel="stylesheet" type="text/css">
 
    <!-- App css -->
    <link href="../css/app.min.css" rel="stylesheet" type="text/css" id="app-style">
 
    <!-- Icons css -->
    <link href="../css/unicons.css" rel="stylesheet" type="text/css">
    <link href="../css/remixicon.css" rel="stylesheet" type="text/css">
    <link href="../css/materialdesignicons.min.css" rel="stylesheet" type="text/css">
 
    <!-- Chat System CSS -->
    <style>
        .chat-container {
            display: flex;
            height: calc(100vh - 180px);
            background-color: #fff;
            border-radius: 0.25rem;
            box-shadow: 0 0 35px 0 rgba(154, 161, 171, 0.15);
            overflow: hidden;
        }
 
        .chat-sidebar {
            width: 280px;
            border-right: 1px solid rgba(0, 0, 0, 0.05);
            background-color: #fafbfe;
            display: flex;
            flex-direction: column;
        }
 
        .chat-main {
            flex: 1;
            display: flex;
            flex-direction: column;
            background-color: #fff;
        }
 
        .chat-messages {
            flex: 1;
            padding: 20px;
            overflow-y: auto;
            background-color: #f5f7fb;
        }
 
        .chat-input {
            padding: 15px;
            border-top: 1px solid rgba(0, 0, 0, 0.05);
            background-color: #fff;
        }
 
        .user-list-item, .group-list-item {
            padding: 12px 16px;
            border-bottom: 1px solid rgba(0, 0, 0, 0.05);
            cursor: pointer;
            transition: all 0.2s;
        }
 
        .user-list-item:hover, .group-list-item:hover {
            background-color: rgba(114, 124, 245, 0.1);
        }
 
        .user-list-item.active, .group-list-item.active {
            background-color: rgba(114, 124, 245, 0.2);
        }
 
        .message {
            margin-bottom: 15px;
            padding: 12px 16px;
            border-radius: 6px;
            max-width: 70%;
            font-size: 0.875rem;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
        }
 
        .message.sent {
            background-color: #727cf5;
            color: white;
            margin-left: auto;
        }
 
        .message.received {
            background-color: #fff;
            border: 1px solid rgba(0, 0, 0, 0.05);
            margin-right: auto;
        }
 
        .message-time {
            font-size: 0.75rem;
            color: #98a6ad;
            margin-top: 4px;
            display: block;
        }
 
        .message.sent .message-time {
            color: rgba(255, 255, 255, 0.7);
        }
 
        .status-indicator {
            display: inline-block;
            width: 8px;
            height: 8px;
            border-radius: 50%;
            margin-right: 8px;
        }
 
        .status-online {
            background-color: #0acf97;
        }
 
        .status-offline {
            background-color: #98a6ad;
        }
 
        .status-away {
            background-color: #ffbc00;
        }
 
        .status-busy {
            background-color: #fa5c7c;
        }
 
        .chat-header {
            padding: 16px;
            border-bottom: 1px solid rgba(0, 0, 0, 0.05);
            background-color: #fff;
        }
 
        #chat-title {
            font-weight: 600;
            color: #6c757d;
        }
 
        .chat-sidebar-header {
            padding: 16px;
            border-bottom: 1px solid rgba(0, 0, 0, 0.05);
            background-color: #fff;
        }
 
        .chat-sidebar-content {
            flex: 1;
            overflow-y: auto;
        }
 
        .section-title {
            font-size: 0.75rem;
            text-transform: uppercase;
            letter-spacing: 0.05em;
            color: #98a6ad;
            font-weight: 600;
            padding: 8px 16px;
        }
 
        .no-conversation {
            display: flex;
            align-items: center;
            justify-content: center;
            height: 100%;
            color: #98a6ad;
            font-size: 0.875rem;
        }
 
        /* User profile image styles */
        .user-avatar {
            width: 36px;
            height: 36px;
            border-radius: 50%;
            object-fit: cover;
            margin-right: 10px;
        }
 
        /* Details sidebar */
        .chat-details {
            width: 280px;
            border-left: 1px solid rgba(0, 0, 0, 0.05);
            background-color: #fafbfe;
            display: flex;
            flex-direction: column;
            overflow-y: auto;
        }
 
        .chat-details-header {
            padding: 16px;
            border-bottom: 1px solid rgba(0, 0, 0, 0.05);
            background-color: #fff;
        }
 
        .chat-details-content {
            flex: 1;
            padding: 16px;
            overflow-y: auto;
        }
 
        .member-item {
            display: flex;
            align-items: center;
            padding: 8px 0;
            border-bottom: 1px solid rgba(0, 0, 0, 0.05);
        }
 
        .member-avatar {
            width: 40px;
            height: 40px;
            border-radius: 50%;
            object-fit: cover;
            margin-right: 10px;
        }
 
        .member-info {
            flex: 1;
        }
 
        .member-name {
            font-weight: 500;
            margin-bottom: 2px;
        }
 
        .member-role {
            font-size: 0.75rem;
            color: #98a6ad;
        }
 
        .admin-badge {
            background-color: #727cf5;
            color: white;
            font-size: 0.65rem;
            padding: 2px 6px;
            border-radius: 10px;
            margin-left: 8px;
        }
 
        .group-info {
            margin-bottom: 20px;
        }
 
        .group-description {
            font-size: 0.875rem;
            color: #6c757d;
            margin-top: 8px;
        }
 
        .group-stats {
            display: flex;
            justify-content: space-between;
            margin-top: 15px;
            font-size: 0.875rem;
        }
 
        .group-stat {
            text-align: center;
        }
 
        .group-stat-value {
            font-weight: 600;
            color: #727cf5;
        }
 
        .group-stat-label {
            color: #98a6ad;
            font-size: 0.75rem;
        }
 
        .action-buttons {
            margin-top: 20px;
        }
 
        /* Last seen time */
        .last-seen {
            font-size: 0.75rem;
            color: #98a6ad;
            margin-top: 4px;
        }
 
        /* Toast notifications */
        .toast-container {
            position: fixed;
            bottom: 20px;
            right: 20px;
            z-index: 1100;
        }
 
        /* Attachment preview */
        .attachment-preview {
            margin-top: 10px;
            padding: 10px;
            background-color: #f8f9fa;
            border-radius: 4px;
            display: none;
        }
 
        .attachment-preview .preview-content {
            display: flex;
            align-items: center;
        }
 
        .attachment-preview .preview-content i {
            font-size: 24px;
            margin-right: 10px;
        }
 
        .attachment-preview .remove-attachment {
            margin-left: auto;
            cursor: pointer;
        }
 
        /* Notification badge */
        .notification-badge {
            background-color: #0acf97;
            color: white;
            font-size: 0.75rem;
            padding: 2px 8px;
            border-radius: 10px;
            margin-left: auto;
        }
    </style>
</head>
 
<body>
   <div class="wrapper">
    <?php include 'super-sidebar.php' ?>
    <?php include 'super-nav.php' ?>
 
    <div class="content-page">
        <div class="content">
            <div class="container-fluid">
                <div class="row">
                    <div class="col-12">
                        <div class="page-title-box">
                            <div class="page-title-right">
                                <ol class="breadcrumb m-0">
                                    <li class="breadcrumb-item"><a href="javascript: void(0);">Decconz</a></li>
                                    <li class="breadcrumb-item active">Chat System</li>
                                </ol>
                            </div>
                            <h4 class="page-title">Chat System</h4>
                        </div>
                    </div>
                </div>
 
                <?php if (isset($_SESSION['success'])): ?>
                    <div class="alert alert-success alert-dismissible fade show" role="alert">
                        <i class="uil uil-check-circle me-2"></i><?= escapeHtml($_SESSION['success']) ?>
                        <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
                    </div>
                    <?php unset($_SESSION['success']); ?>
                <?php endif; ?>
 
                <?php if (isset($_SESSION['error'])): ?>
                    <div class="alert alert-danger alert-dismissible fade show" role="alert">
                        <i class="uil uil-exclamation-octagon me-2"></i><?= escapeHtml($_SESSION['error']) ?>
                        <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
                    </div>
                    <?php unset($_SESSION['error']); ?>
                <?php endif; ?>
 
                <div class="row">
                    <div class="col-12">
                        <div class="card">
                            <div class="card-body p-0">
                                <div class="chat-container">
                                    <div class="chat-sidebar">
                                        <div class="chat-sidebar-header d-flex align-items-center">
                                            <h5 class="mb-0">Chats</h5>
                                            <?php if ($total_unread_count > 0): ?>
                                                <span class="notification-badge ms-2"><?= $total_unread_count ?></span>
                                            <?php endif; ?>
                                        </div>
 
                                        <div class="chat-sidebar-content">
                                            <div class="section-title">Direct Messages</div>
                                            <div class="user-list">
                                                <?php foreach ($users as $user): 
                                                    $profilePic = !empty($user['profile_pic']) ? '../Uploads/profile_pics/' . $user['profile_pic'] : '../images/default-avatar.jpg';
                                                    $userName = escapeHtml($user['name'] ?? '');
                                                    $userRole = ucfirst($user['role'] ?? '');
                                                    $activeClass = ($current_chat_type === 'user' && $current_chat_id == $user['id']) ? 'active' : '';
                                                ?>
                                                    <div class="user-list-item <?= $activeClass ?>" data-user-id="<?= $user['id'] ?>" 
                                                         onclick="window.location.href='chat.php?chat_id=<?= $user['id'] ?>&chat_type=user'">
                                                        <div class="d-flex align-items-center">
                                                            <img src="<?= $profilePic ?>" class="user-avatar" alt="<?= $userName ?>">
                                                            <div class="flex-grow-1">
                                                                <div class="d-flex align-items-center">
                                                                    <span class="status-indicator status-offline" data-user-id="<?= $user['id'] ?>"></span>
                                                                    <span><?= $userName ?></span>
                                                                    <?php if ($user['unread_count'] > 0): ?>
                                                                        <span class="notification-badge ms-auto"><?= $user['unread_count'] ?></span>
                                                                    <?php endif; ?>
                                                                </div>
                                                                <small class="text-muted"><?= $userRole ?></small>
                                                            </div>
                                                        </div>
                                                    </div>
                                                <?php endforeach; ?>
                                            </div>
 
                                            <div class="section-title">Group Chats</div>
                                            <div class="group-list">
                                                <?php foreach ($groups as $group): 
                                                    $activeClass = ($current_chat_type === 'group' && $current_chat_id == $group['id']) ? 'active' : '';
                                                ?>
                                                    <div class="group-list-item <?= $activeClass ?>" data-group-id="<?= $group['id'] ?>" 
                                                         onclick="window.location.href='chat.php?chat_id=<?= $group['id'] ?>&chat_type=group'">
                                                        <div class="d-flex align-items-center">
                                                            <i class="uil uil-users-alt me-2"></i>
                                                            <span><?= escapeHtml($group['name']) ?></span>
                                                            <?php if ($group['unread_count'] > 0): ?>
                                                                <span class="notification-badge ms-auto"><?= $group['unread_count'] ?></span>
                                                            <?php endif; ?>
                                                        </div>
                                                        <small class="text-muted"><?= escapeHtml($group['description']) ?></small>
                                                        <small class="text-muted d-block mt-1"><?= $group['member_count'] ?> members</small>
                                                    </div>
                                                <?php endforeach; ?>
                                            </div>
                                        </div>
 
                                        <?php if ($current_user_role === 'admin' || ($current_user_role === 'employee' && in_array($current_designation, ['manager', 'hr', 'sales']))): ?>
                                            <div class="p-2 border-top">
                                                <button class="btn btn-soft-primary btn-sm w-100" data-bs-toggle="modal" data-bs-target="#createGroupModal">
                                                    <i class="uil uil-plus me-1"></i> Create Group
                                                </button>
                                            </div>
                                        <?php endif; ?>
                                    </div>
 
                                    <div class="chat-main">
                                        <div class="chat-header d-flex align-items-center">
                                            <?php if ($current_chat_id && $current_chat_type): ?>
                                                <?php if ($current_chat_type === 'user' && $chat_details): ?>
                                                    <div id="chat-title">
                                                        <div class="d-flex align-items-center">
                                                            <span class="status-indicator status-online me-2" data-user-id="<?= $current_chat_id ?>"></span>
                                                            <div>
                                                                <div class="fw-semibold"><?= escapeHtml($chat_details['name']) ?></div>
                                                                <div class="text-muted small"><?= escapeHtml(ucfirst($chat_details['role'])) ?></div>
                                                            </div>
                                                        </div>
                                                    </div>
                                                <?php elseif ($current_chat_type === 'group' && $chat_details): ?>
                                                    <div id="chat-title">
                                                        <div class="d-flex align-items-center">
                                                            <i class="uil uil-users-alt me-2"></i>
                                                            <div>
                                                                <div class="fw-semibold"><?= escapeHtml($chat_details['name']) ?></div>
                                                                <div class="text-muted small"><?= escapeHtml($chat_details['description']) ?></div>
                                                            </div>
                                                        </div>
                                                    </div>
                                                <?php endif; ?>
                                            <?php else: ?>
                                                <div id="chat-title">Select a chat to start messaging</div>
                                            <?php endif; ?>
                                            <div class="ms-auto" id="chat-actions">
                                                <?php if ($current_chat_type === 'group' && $is_group_admin): ?>
                                                    <button class="btn btn-sm btn-outline-primary" data-bs-toggle="modal" data-bs-target="#groupManagementModal">
                                                        <i class="uil uil-cog me-1"></i> Manage Group
                                                    </button>
                                                <?php endif; ?>
                                            </div>
                                        </div>
                                        <div class="chat-messages" id="chat-messages">
                                            <?php if ($current_chat_id && $current_chat_type): ?>
                                                <?php if (!empty($messages)): ?>
                                                    <?php foreach ($messages as $message): ?>
                                                        <div class="message <?= $message['sender_id'] == $current_user_id ? 'sent' : 'received' ?>">
                                                            <?php if ($message['sender_id'] != $current_user_id): ?>
                                                                <div class="sender-name small text-muted mb-1"><?= escapeHtml($message['sender_name']) ?></div>
                                                            <?php endif; ?>
                                                            <div class="message-text"><?= nl2br(escapeHtml($message['body'])) ?></div>
                                                            <?php if ($message['attachment']): ?>
                                                                <div class="mt-2">
                                                                    <a href="/uploads/<?= escapeHtml($message['attachment']) ?>" target="_blank" class="d-inline-flex align-items-center text-primary">
                                                                        <i class="uil uil-paperclip me-1"></i>
                                                                        <?= escapeHtml(getFileName($message['attachment'])) ?>
                                                                    </a>
                                                                </div>
                                                            <?php endif; ?>
                                                            <div class="message-time"><?= formatMessageTime($message['created_at']) ?></div>
                                                        </div>
                                                    <?php endforeach; ?>
                                                <?php else: ?>
                                                    <div class="no-conversation">
                                                        <div class="text-center">
                                                            <i class="uil uil-comment-alt-message text-muted" style="font-size: 2rem;"></i>
                                                            <p class="mt-2">No messages yet. Start the conversation!</p>
                                                        </div>
                                                    </div>
                                                <?php endif; ?>
                                            <?php else: ?>
                                                <div class="no-conversation">
                                                    <div class="text-center">
                                                        <i class="uil uil-comment-alt-message text-muted" style="font-size: 2rem;"></i>
                                                        <p class="mt-2">Select a conversation to start chatting</p>
                                                    </div>
                                                </div>
                                            <?php endif; ?>
                                        </div>
                                        <?php if ($current_chat_id && $current_chat_type): ?>
                                            <form method="post" class="chat-input" enctype="multipart/form-data">
                                                <input type="hidden" name="send_message" value="1">
                                                <input type="hidden" name="chat_id" value="<?= htmlspecialchars($current_chat_id) ?>">
                                                <input type="hidden" name="chat_type" value="<?= htmlspecialchars($current_chat_type) ?>">
 
                                                <div class="input-group">
                                                    <input type="text" class="form-control" name="message" id="message-input" placeholder="Type your message...">
                                                    <button type="submit" class="btn btn-primary" id="send-btn">
                                                        <i class="uil uil-message"></i> Send
                                                    </button>
                                                </div>
                                                <div class="mt-2 d-flex justify-content-between">
                                                    <label class="btn btn-sm btn-soft-secondary" for="attachment">
                                                        <i class="uil uil-paperclip"></i> Attach File
                                                    </label>
                                                    <input type="file" name="attachment" id="attachment" style="display: none;" onchange="previewAttachment(this)">
                                                    <small class="text-muted align-self-center">Press Enter to send</small>
                                                </div>
                                                <div class="attachment-preview" id="attachment-preview">
                                                    <div class="preview-content">
                                                        <i class="uil uil-file-alt"></i>
                                                        <span id="attachment-name"></span>
                                                        <span class="remove-attachment" onclick="removeAttachment()">
                                                            <i class="uil uil-times"></i>
                                                        </span>
                                                    </div>
                                                </div>
                                            </form>
                                        <?php else: ?>
                                            <div class="chat-input">
                                                <div class="input-group">
                                                    <input type="text" class="form-control" id="message-input" placeholder="Type your message..." disabled>
                                                    <button class="btn btn-primary" id="send-btn" disabled>
                                                        <i class="uil uil-message"></i> Send
                                                    </button>
                                                </div>
                                            </div>
                                        <?php endif; ?>
                                    </div>
 
                                    <div class="chat-details" id="chat-details">
                                        <div class="chat-details-header">
                                            <h5 class="mb-0">Details</h5>
                                        </div>
                                        <div class="chat-details-content" id="details-content">
                                            <?php if ($current_chat_id && $current_chat_type): ?>
                                                <?php if ($current_chat_type === 'user' && $chat_details): ?>
                                                    <div class="text-center">
                                                        <img src="<?= $chat_details['profile_pic'] ? '../Uploads/profile_pics/' . $chat_details['profile_pic'] : '../images/default-avatar.jpg' ?>" 
                                                             class="member-avatar mb-3" style="width: 80px; height: 80px;">
                                                        <h5><?= escapeHtml($chat_details['name']) ?></h5>
                                                        <div class="text-muted mb-3"><?= escapeHtml(ucfirst($chat_details['role'])) ?></div>
                                                        <div class="last-seen">Last seen: <?= $chat_details['last_seen'] ?? 'Unknown' ?></div>
                                                    </div>
                                                    <div class="mt-4">
                                                        <h6>Contact Information</h6>
                                                        <div class="mb-2"><i class="uil uil-envelope me-2"></i> <?= escapeHtml($chat_details['email']) ?></div>
                                                    </div>
                                                <?php elseif ($current_chat_type === 'group' && $chat_details): ?>
                                                    <div class="group-info">
                                                        <h5><?= escapeHtml($chat_details['name']) ?></h5>
                                                        <div class="group-description"><?= escapeHtml($chat_details['description']) ?></div>
                                                        <div class="group-stats">
                                                            <div class="group-stat">
                                                                <div class="group-stat-value"><?= $chat_details['member_count'] ?></div>
                                                                <div class="group-stat-label">Members</div>
                                                            </div>
                                                            <div class="group-stat">
                                                                <div class="group-stat-value"><?= $chat_details['message_count'] ?></div>
                                                                <div class="group-stat-label">Messages</div>
                                                            </div>
                                                            <div class="group-stat">
                                                                <div class="group-stat-value"><?= $chat_details['created_date'] ?></div>
                                                                <div class="group-stat-label">Created</div>
                                                            </div>
                                                        </div>
                                                    </div>
                                                    <div>
                                                        <h6>Group Members</h6>
                                                        <?php foreach ($group_data['members'] as $member): ?>
                                                            <div class="member-item">
                                                                <img src="<?= $member['profile_pic'] ? '../Uploads/profile_pics/' . $member['profile_pic'] : '../images/default-avatar.jpg' ?>" class="member-avatar">
                                                                <div class="member-info">
                                                                    <div class="member-name"><?= escapeHtml($member['name']) ?>
                                                                        <?php if ($member['is_admin']): ?>
                                                                            <span class="admin-badge">Admin</span>
                                                                        <?php endif; ?>
                                                                    </div>
                                                                    <div class="member-role"><?= escapeHtml($member['role']) ?></div>
                                                                </div>
                                                            </div>
                                                        <?php endforeach; ?>
                                                    </div>
                                                <?php endif; ?>
                                            <?php else: ?>
                                                <div class="text-center text-muted">
                                                    <i class="uil uil-info-circle" style="font-size: 2rem;"></i>
                                                    <p class="mt-2">Select a conversation to view details</p>
                                                </div>
                                            <?php endif; ?>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
 
    <div class="modal fade" id="createGroupModal" tabindex="-1" role="dialog" aria-hidden="true">
        <div class="modal-dialog modal-dialog-centered">
            <div class="modal-content">
                <form method="post">
                    <div class="modal-header">
                        <h4 class="modal-title">Create New Group</h4>
                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                    </div>
                    <div class="modal-body">
                        <input type="hidden" name="create_group" value="1">
                        <div class="mb-3">
                            <label for="group-name" class="form-label">Group Name</label>
                            <input type="text" class="form-control" id="group-name" name="name" required>
                        </div>
                        <div class="mb-3">
                            <label for="group-description" class="form-label">Description</label>
                            <textarea class="form-control" id="group-description" name="description" rows="3"></textarea>
                        </div>
                        <div class="mb-3">
                            <label class="form-label">Add Members</label>
                            <div class="member-selection" style="max-height: 200px; overflow-y: auto;">
                                <?php foreach ($users as $user): ?>
                                    <div class="form-check mb-2">
                                        <input type="checkbox" class="form-check-input" id="user-<?= $user['id'] ?>" 
                                               name="members[]" value="<?= $user['id'] ?>">
                                        <label class="form-check-label" for="user-<?= $user['id'] ?>">
                                            <?= escapeHtml($user['name']) ?> (<?= ucfirst($user['role']) ?>)
                                        </label>
                                    </div>
                                <?php endforeach; ?>
                            </div>
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-light" data-bs-dismiss="modal">Close</button>
                        <button type="submit" class="btn btn-primary">Create Group</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
 
    <div class="modal fade" id="groupManagementModal" tabindex="-1" role="dialog" aria-hidden="true">
        <div class="modal-dialog modal-dialog-centered">
            <div class="modal-content">
                <form method="post">
                    <div class="modal-header">
                        <h4 class="modal-title">Manage Group</h4>
                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                    </div>
                    <div class="modal-body">
                        <input type="hidden" name="update_group" value="1">
                        <input type="hidden" name="group_id" value="<?= $current_chat_id ?>">
 
                        <div class="mb-3">
                            <label class="form-label">Group Name</label>
                            <input type="text" class="form-control" id="edit-group-name" name="name" 
                                   value="<?= $chat_details ? escapeHtml($chat_details['name']) : '' ?>">
                        </div>
                        <div class="mb-3">
                            <label class="form-label">Description</label>
                            <textarea class="form-control" id="edit-group-description" name="description" rows="3"><?= $chat_details ? escapeHtml($chat_details['description']) : '' ?></textarea>
                        </div>
                        <div class="mb-3">
                            <label class="form-label">Current Members</label>
                            <div class="member-list" style="max-height: 200px; overflow-y: auto;">
                                <?php if ($group_data): ?>
                                    <?php foreach ($group_data['members'] as $member): ?>
                                        <div class="member-item">
                                            <img src="<?= $member['profile_pic'] ? '../Uploads/profile_pics/' . $member['profile_pic'] : '../images/default-avatar.jpg' ?>" 
                                                 class="member-avatar">
                                            <div class="member-info">
                                                <div class="member-name"><?= escapeHtml($member['name']) ?>
                                                    <?php if ($member['is_admin']): ?>
                                                        <span class="admin-badge">Admin</span>
                                                    <?php endif; ?>
                                                </div>
                                                <div class="member-role"><?= escapeHtml($member['role']) ?></div>
                                            </div>
                                            <?php if (!$member['is_admin']): ?>
                                                <div class="member-actions">
                                                    <button type="submit" name="remove_member" value="<?= $member['id'] ?>" 
                                                            class="btn btn-sm btn-outline-danger">
                                                        <i class="uil uil-user-times"></i>
                                                    </button>
                                                </div>
                                            <?php endif; ?>
                                        </div>
                                    <?php endforeach; ?>
                                <?php endif; ?>
                            </div>
                        </div>
                        <div class="mb-3">
                            <label class="form-label">Add New Members</label>
                            <select class="form-select" id="new-members-select" name="new_members[]" multiple>
                                <?php foreach ($users as $user): ?>
                                    <?php 
                                    $is_member = false;
                                    if ($group_data) {
                                        foreach ($group_data['members'] as $member) {
                                            if ($member['id'] == $user['id']) {
                                                $is_member = true;
                                                break;
                                            }
                                        }
                                    }
                                    ?>
                                    <?php if (!$is_member): ?>
                                        <option value="<?= $user['id'] ?>"><?= escapeHtml($user['name']) ?> (<?= ucfirst($user['role']) ?>)</option>
                                    <?php endif; ?>
                                <?php endforeach; ?>
                            </select>
                        </div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-light" data-bs-dismiss="modal">Close</button>
                        <button type="submit" class="btn btn-primary">Save Changes</button>
                        <?php if ($group_data && $group_data['group']['created_by'] == $current_user_id): ?>
                            <button type="submit" name="delete_group" value="1" class="btn btn-danger">Delete Group</button>
                        <?php endif; ?>
                    </div>
                </form>
            </div>
        </div>
    </div>
    </div>
 
    <script src="../js/vendor.min.js"></script>
    <script src="../js/app.js"></script>
 
    <script>
        function scrollToBottom() {
            const messagesContainer = document.getElementById('chat-messages');
            if (messagesContainer) {
                messagesContainer.scrollTop = messagesContainer.scrollHeight;
            }
        }
 
        function previewAttachment(input) {
            const preview = document.getElementById('attachment-preview');
            const fileName = document.getElementById('attachment-name');
 
            if (input.files && input.files[0]) {
                fileName.textContent = input.files[0].name;
                preview.style.display = 'block';
            }
        }
 
        function removeAttachment() {
            const input = document.getElementById('attachment');
            const preview = document.getElementById('attachment-preview');
 
            input.value = '';
            preview.style.display = 'none';
        }
 
        $(document).ready(function() {
            $('#new-members-select').select2({
                placeholder: "Select members to add",
                width: '100%'
            });
 
            scrollToBottom();
 
            <?php if ($current_chat_id && $current_chat_type): ?>
                $('#message-input').focus();
            <?php endif; ?>
        });
    </script>
</body>
</html>