MMCT TEAM
Server IP : 217.21.85.138  /  Your IP : 216.73.216.103
Web Server : LiteSpeed
System : Linux in-mum-web906.main-hosting.eu 4.18.0-553.37.1.lve.el8.x86_64 #1 SMP Mon Feb 10 22:45:17 UTC 2025 x86_64
User : u915722082 ( 915722082)
PHP Version : 7.4.33
Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF
Directory (0755) :  /home/u915722082/public_html/js/../pms/config/../admin/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/u915722082/public_html/js/../pms/config/../admin/tasks.php
<?php
session_start();

if (!isset($_SESSION['admin_id'])) {
    header("Location: login.php");
    exit;
}

// ADMIN/MANAGER ONLY ACCESS
if ($_SESSION['role'] === 'Employee') {
    header("Location: employee.php");
    exit;
}

require_once '../config/config.php';
require_once '../config/db.php';

$current_user_role = $_SESSION['role'] ?? 'Manager';
$current_user_id = $_SESSION['admin_id'];
$current_user_name = $_SESSION['user_name'] ?? 'Admin';

// Only CEO and Manager can assign tasks
if ($current_user_role !== 'CEO' && $current_user_role !== 'Manager') {
    header("Location: dashboard.php");
    exit;
}

// Get all employees for assignment
$employees_query = "SELECT uid, fname, email, role FROM tbl_user WHERE status = 'active' AND role = 'Employee' ORDER BY fname ASC";
$employees_result = mysqli_query($con, $employees_query);

// Get all proposals for dropdown
$proposals_query = "SELECT proposal_id, proposal_code, proposal_title, customer_id, 
                    (SELECT customer_name FROM tbl_customers WHERE customer_id = tbl_proposals.customer_id) as customer_name
                    FROM tbl_proposals 
                    WHERE status IN ('Accepted', 'Sent', 'Negotiate')
                    ORDER BY created_at DESC";
$proposals_result = mysqli_query($con, $proposals_query);

// Get all categories
$categories_query = "SELECT DISTINCT category_name FROM tbl_categories ORDER BY category_name ASC";
$categories_result = mysqli_query($con, $categories_query);

// Get all tasks with proposal details
$tasks_query = "SELECT t.*, 
                e.fname as employee_name, 
                e.email as employee_email,
                a.fname as assigned_by_name,
                p.proposal_code,
                p.proposal_title,
                (SELECT customer_name FROM tbl_customers WHERE customer_id = p.customer_id) as customer_name,
                DATEDIFF(t.end_date, CURDATE()) as days_remaining
                FROM tbl_tasks t
                LEFT JOIN tbl_user e ON t.employee_id = e.uid
                LEFT JOIN tbl_user a ON t.assigned_by = a.uid
                LEFT JOIN tbl_proposals p ON t.proposal_id = p.proposal_id
                ORDER BY t.end_date ASC, t.created_at DESC";
$tasks_result = mysqli_query($con, $tasks_query);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <base href="../" />
    <title>Task Assignment - TDS Admin Hub</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,400,500,600,700" />
    <link href="assets/plugins/global/plugins.bundle.css" rel="stylesheet" type="text/css" />
    <link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
    <!-- Flatpickr CSS (Metronic Date Picker) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
    <!-- Tagify CSS for Tags Input -->
    <link href="https://cdn.jsdelivr.net/npm/@yaireo/tagify/dist/tagify.css" rel="stylesheet" type="text/css" />
    
    <style>
    .tagify {
        border: 1px solid #e4e6ef;
        border-radius: 0.475rem;
    }
    </style>
</head>

<body id="kt_app_body" data-kt-app-layout="dark-sidebar" data-kt-app-header-fixed="true" 
      data-kt-app-sidebar-enabled="true" data-kt-app-sidebar-fixed="true" 
      data-kt-app-sidebar-hoverable="true" data-kt-app-sidebar-push-header="true" 
      data-kt-app-sidebar-push-toolbar="true" data-kt-app-sidebar-push-footer="true" 
      data-kt-app-toolbar-enabled="true" class="app-default">
    
    <script>
        var defaultThemeMode = "light"; 
        var themeMode; 
        if (document.documentElement) { 
            if (document.documentElement.hasAttribute("data-bs-theme-mode")) { 
                themeMode = document.documentElement.getAttribute("data-bs-theme-mode"); 
            } else { 
                if (localStorage.getItem("data-bs-theme") !== null) { 
                    themeMode = localStorage.getItem("data-bs-theme"); 
                } else { 
                    themeMode = defaultThemeMode; 
                } 
            } 
            if (themeMode === "system") { 
                themeMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; 
            } 
            document.documentElement.setAttribute("data-bs-theme", themeMode); 
        }
    </script>
    
    <div class="d-flex flex-column flex-root app-root" id="kt_app_root">
        <div class="app-page flex-column flex-column-fluid" id="kt_app_page">
            
            <?php include 'includes/header.php'; ?>
            
            <div class="app-wrapper flex-column flex-row-fluid" id="kt_app_wrapper">
                
                <?php include 'includes/sidebar.php'; ?>
                
                <div class="app-main flex-column flex-row-fluid" id="kt_app_main">
                    <div class="d-flex flex-column flex-column-fluid">
                        
                        <div id="kt_app_toolbar" class="app-toolbar py-3 py-lg-6">
                            <div id="kt_app_toolbar_container" class="app-container container-xxl d-flex flex-stack">
                                <div class="page-title d-flex flex-column justify-content-center flex-wrap me-3">
                                    <h1 class="page-heading d-flex text-gray-900 fw-bold fs-3 flex-column my-0">
                                        📋 Task Assignment
                                    </h1>
                                    <ul class="breadcrumb breadcrumb-separatorless fw-semibold fs-7 my-0 pt-1">
                                        <li class="breadcrumb-item text-muted">
                                            <a href="admin/dashboard.php" class="text-muted text-hover-primary">Home</a>
                                        </li>
                                        <li class="breadcrumb-item">
                                            <span class="bullet bg-gray-500 w-5px h-2px"></span>
                                        </li>
                                        <li class="breadcrumb-item text-muted">Tasks</li>
                                    </ul>
                                </div>
                            </div>
                        </div>
                        
                        <div id="kt_app_content" class="app-content flex-column-fluid">
                            <div id="kt_app_content_container" class="app-container container-xxl">
                                
                                <div class="card">
                                    <div class="card-header border-0 pt-6">
                                        <div class="card-title">
                                            <div class="d-flex align-items-center position-relative my-1">
                                                <i class="ki-duotone ki-magnifier fs-3 position-absolute ms-5">
                                                    <span class="path1"></span>
                                                    <span class="path2"></span>
                                                </i>
                                                <input type="text" id="searchTask" 
                                                       class="form-control form-control-solid w-250px ps-13" 
                                                       placeholder="Search tasks..." />
                                            </div>
                                        </div>
                                        
                                        <div class="card-toolbar">
                                            <button type="button" class="btn btn-sm btn-primary" 
                                                    data-bs-toggle="modal" data-bs-target="#taskModal" 
                                                    onclick="openAddModal()">
                                                <i class="ki-duotone ki-plus fs-2"></i>
                                                Assign Task
                                            </button>
                                        </div>
                                    </div>
                                    
                                    <div class="card-body py-4">
                                        <div class="table-responsive">
                                            <table class="table align-middle table-row-dashed fs-6 gy-5" id="tasksTable">
                                                <thead>
                                                    <tr class="text-start text-muted fw-bold fs-7 text-uppercase gs-0">
                                                        <th class="min-w-125px">Employee</th>
                                                        <th class="min-w-200px">Project/Proposal</th>
                                                        <th class="min-w-150px">Task Title</th>
                                                        <th class="min-w-125px">Category</th>
                                                        <th class="min-w-100px">Priority</th>
                                                        <th class="min-w-100px">Start Date</th>
                                                        <th class="min-w-100px">End Date</th>
                                                        <th class="min-w-100px">Status</th>
                                                        <th class="text-end min-w-150px">Actions</th>
                                                    </tr>
                                                </thead>
                                                <tbody class="text-gray-600 fw-semibold">
                                                    <?php while ($task = mysqli_fetch_assoc($tasks_result)): 
                                                        $is_delayed = ($task['days_remaining'] < 0 && $task['status'] !== 'Completed');
                                                    ?>
                                                    <tr class="<?php echo $is_delayed ? 'bg-light-dange' : ''; ?>">
                                                        <td>
                                                            <div class="d-flex align-items-center">
                                                                <div class="symbol symbol-circle symbol-40px overflow-hidden me-3">
                                                                    <div class="symbol-label fs-3 bg-light-info text-info">
                                                                        <?php echo strtoupper(substr($task['employee_name'], 0, 1)); ?>
                                                                    </div>
                                                                </div>
                                                                <div class="d-flex flex-column">
                                                                    <span class="text-gray-800 mb-1">
                                                                        <?php echo htmlspecialchars($task['employee_name']); ?>
                                                                    </span>
                                                                </div>
                                                            </div>
                                                        </td>
                                                        <td>
                                                            <?php if ($task['proposal_id']): ?>
                                                                <div class="d-flex flex-column">
                                                                    <span class="text-gray-800 fw-bold">
                                                                        <?php echo htmlspecialchars($task['proposal_code']); ?>
                                                                    </span>
                                                                    <span class="text-muted fs-7">
                                                                        <?php echo htmlspecialchars($task['customer_name']); ?>
                                                                    </span>
                                                                </div>
                                                            <?php else: ?>
                                                                <span class="badge badge-light-secondary">No Project</span>
                                                            <?php endif; ?>
                                                        </td>
                                                        <td>
                                                            <span class="text-gray-800 fw-bold">
                                                                <?php echo htmlspecialchars($task['task_title']); ?>
                                                            </span>
                                                        </td>
                                                        <td>
                                                            <?php if ($task['category']): ?>
                                                                <div class="d-flex flex-column">
                                                                    <span class="badge badge-light-primary mb-1">
                                                                        <?php echo htmlspecialchars($task['category']); ?>
                                                                    </span>
                                                                    <?php if ($task['subcategory']): ?>
                                                                        <span class="badge badge-light-info">
                                                                            <?php echo htmlspecialchars($task['subcategory']); ?>
                                                                        </span>
                                                                    <?php endif; ?>
                                                                </div>
                                                            <?php else: ?>
                                                                <span class="text-muted">-</span>
                                                            <?php endif; ?>
                                                        </td>
                                                        <td>
                                                            <span class="badge badge-light-<?php 
                                                                echo $task['priority'] === 'Urgent' ? 'danger' : 
                                                                    ($task['priority'] === 'High' ? 'warning' : 
                                                                    ($task['priority'] === 'Medium' ? 'info' : 'secondary')); 
                                                            ?>">
                                                                <?php echo htmlspecialchars($task['priority']); ?>
                                                            </span>
                                                        </td>
                                                        <td>
                                                            <?php echo $task['start_date'] ? date('M d, Y', strtotime($task['start_date'])) : '-'; ?>
                                                        </td>
                                                        <td>
                                                            <?php echo date('M d, Y', strtotime($task['end_date'])); ?>
                                                        </td>
                                                        <td>
                                                            <?php if ($is_delayed): ?>
                                                                <span class="badge badge-danger">Delayed</span>
                                                            <?php else: ?>
                                                                <span class="badge badge-light-<?php 
                                                                    echo $task['status'] === 'Completed' ? 'success' : 
                                                                        ($task['status'] === 'In Progress' ? 'primary' : 
                                                                        ($task['status'] === 'On Hold' ? 'warning' : 'secondary')); 
                                                                ?>">
                                                                    <?php echo htmlspecialchars($task['status']); ?>
                                                                </span>
                                                            <?php endif; ?>
                                                        </td>
                                                        <td class="text-end">
                                                            <!-- Invoice Button (Only for Completed Tasks) -->
                                                            <?php if ($task['status'] === 'Completed'): ?>
                                                                <button class="btn btn-icon btn-light btn-active-light-success btn-sm me-1" 
                                                                        onclick="downloadInvoice(<?php echo $task['task_id']; ?>)"
                                                                        title="Download Invoice">
                                                                    <i class="ki-duotone ki-document fs-3">
                                                                        <span class="path1"></span>
                                                                        <span class="path2"></span>
                                                                    </i>
                                                                </button>
                                                            <?php endif; ?>
                                                            
                                                            <!-- Edit Button -->
                                                            <button class="btn btn-icon btn-light btn-active-light-primary btn-sm me-1" 
                                                                    onclick='editTask(<?php echo json_encode($task); ?>)'>
                                                                <i class="ki-duotone ki-pencil fs-3">
                                                                    <span class="path1"></span>
                                                                    <span class="path2"></span>
                                                                </i>
                                                            </button>
                                                            
                                                            <!-- Delete Button -->
                                                            <button class="btn btn-icon btn-light btn-active-light-danger btn-sm" 
                                                                    onclick="deleteTask(<?php echo $task['task_id']; ?>, '<?php echo htmlspecialchars($task['task_title']); ?>')">
                                                                <i class="ki-duotone ki-trash fs-3">
                                                                    <span class="path1"></span>
                                                                    <span class="path2"></span>
                                                                    <span class="path3"></span>
                                                                    <span class="path4"></span>
                                                                    <span class="path5"></span>
                                                                </i>
                                                            </button>
                                                        </td>
                                                    </tr>
                                                    <?php endwhile; ?>
                                                </tbody>
                                            </table>
                                        </div>
                                    </div>
                                </div>
                                
                            </div>
                        </div>
                        
                    </div>
                    
                    <?php include 'includes/footer.php'; ?>
                    
                </div>
            </div>
        </div>
    </div>
    
    <!-- Add/Edit Task Modal -->
   <!-- Add/Edit Task Modal -->
<div class="modal fade" id="taskModal" tabindex="-1" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered mw-900px modal-dialog-scrollable">
        <div class="modal-content">
            <div class="modal-header">
                <h2 class="fw-bolder" id="modalTitle">Assign New Task</h2>
                <div class="btn btn-icon btn-sm btn-active-icon-primary" data-bs-dismiss="modal">
                    <i class="ki-duotone ki-cross fs-1">
                        <span class="path1"></span>
                        <span class="path2"></span>
                    </i>
                </div>
            </div>
            
            <form id="taskForm" method="POST">
                <div class="modal-body py-10 px-lg-17" style="max-height: 70vh; overflow-y: auto;">
                    <input type="hidden" name="action" id="action" value="add">
                    <input type="hidden" name="task_id" id="task_id" value="">
                    
                    <div id="alertBox"></div>
                    
                    <div class="row">
                        <!-- Employee Selection -->
                        <div class="col-md-6 fv-row mb-7">
                            <label class="required fs-6 fw-semibold mb-2">Select Employee</label>
                            <select class="form-select form-select-solid" 
                                    name="employee_id" 
                                    id="employee_id" 
                                    data-control="select2" 
                                    data-placeholder="Select an employee" 
                                    data-dropdown-parent="#taskModal"
                                    required>
                                <option value="">Select Employee</option>
                                <?php 
                                mysqli_data_seek($employees_result, 0);
                                while ($emp = mysqli_fetch_assoc($employees_result)): 
                                ?>
                                <option value="<?php echo $emp['uid']; ?>"><?php echo htmlspecialchars($emp['fname']); ?></option>
                                <?php endwhile; ?>
                            </select>
                        </div>
                        
                        <!-- Proposal/Project Selection -->
                        <div class="col-md-6 fv-row mb-7">
                            <label class="required fs-6 fw-semibold mb-2">Select Project</label>
                            <select class="form-select form-select-solid" 
                                    name="proposal_id" 
                                    id="proposal_id" 
                                    data-control="select2" 
                                    data-placeholder="Select a proposal/project"
                                    data-dropdown-parent="#taskModal"
                                    onchange="loadProposalDetails()"
                                    required>
                                <option value="">Select Project</option>
                                <?php 
                                mysqli_data_seek($proposals_result, 0);
                                while ($prop = mysqli_fetch_assoc($proposals_result)): 
                                ?>
                                <option value="<?php echo $prop['proposal_id']; ?>" 
                                        data-title="<?php echo htmlspecialchars($prop['proposal_title']); ?>"
                                        data-customer="<?php echo htmlspecialchars($prop['customer_name']); ?>">
                                    <?php echo htmlspecialchars($prop['proposal_code']); ?> - <?php echo htmlspecialchars($prop['customer_name']); ?>
                                </option>
                                <?php endwhile; ?>
                            </select>
                        </div>
                    </div>
                    
                    <!-- Task Title -->
                    <div class="fv-row mb-7">
                        <label class="required fs-6 fw-semibold mb-2">Task Title</label>
                        <input type="text" class="form-control form-control-solid" 
                               name="task_title" id="task_title" 
                               placeholder="Enter task title" required />
                    </div>
                    
                    <!-- Task Description -->
                    <div class="fv-row mb-7">
                        <label class="required fs-6 fw-semibold mb-2">Task Description</label>
                        <textarea class="form-control form-control-solid" 
                                  name="task_description" id="task_description" 
                                  rows="3" placeholder="Enter task description" required></textarea>
                    </div>
                    
                    <div class="row">
                        <!-- Category -->
                        <div class="col-md-6 fv-row mb-7">
                            <label class="required fs-6 fw-semibold mb-2">Category</label>
                            <select class="form-select form-select-solid" 
                                    name="category" 
                                    id="category" 
                                    data-control="select2" 
                                    data-placeholder="Select or type category"
                                    data-dropdown-parent="#taskModal"
                                    data-tags="true"
                                    onchange="loadSubcategories()"
                                    required>
                                <option value="">Select Category</option>
                                <?php 
                                mysqli_data_seek($categories_result, 0);
                                while ($cat = mysqli_fetch_assoc($categories_result)): 
                                ?>
                                <option value="<?php echo htmlspecialchars($cat['category_name']); ?>">
                                    <?php echo htmlspecialchars($cat['category_name']); ?>
                                </option>
                                <?php endwhile; ?>
                            </select>
                        </div>
                        
                        <!-- Subcategory -->
                        <div class="col-md-6 fv-row mb-7">
                            <label class="required fs-6 fw-semibold mb-2">Subcategory</label>
                            <select class="form-select form-select-solid" 
                                    name="subcategory" 
                                    id="subcategory" 
                                    data-control="select2" 
                                    data-placeholder="Select or type subcategory"
                                    data-dropdown-parent="#taskModal"
                                    data-tags="true"
                                    required>
                                <option value="">Select Subcategory</option>
                            </select>
                        </div>
                    </div>
                    
                    <div class="row">
                        <!-- Priority -->
                        <div class="col-md-4 fv-row mb-7">
                            <label class="required fs-6 fw-semibold mb-2">Priority</label>
                            <select class="form-select form-select-solid" 
                                    name="priority" 
                                    id="priority" 
                                    data-control="select2" 
                                    data-placeholder="Select priority" 
                                    data-dropdown-parent="#taskModal"
                                    data-hide-search="true"
                                    required>
                                <option value="">Select Priority</option>
                                <option value="Low">Low</option>
                                <option value="Medium" selected>Medium</option>
                                <option value="High">High</option>
                                <option value="Urgent">Urgent</option>
                            </select>
                        </div>
                        
                        <!-- Start Date -->
                        <div class="col-md-4 fv-row mb-7">
                            <label class="required fs-6 fw-semibold mb-2">Start Date</label>
                            <input type="text" class="form-control form-control-solid" 
                                   name="start_date" id="start_date" 
                                   placeholder="Select start date" 
                                   readonly
                                   required />
                        </div>
                        
                        <!-- End Date -->
                        <div class="col-md-4 fv-row mb-7">
                            <label class="required fs-6 fw-semibold mb-2">End Date</label>
                            <input type="text" class="form-control form-control-solid" 
                                   name="end_date" id="end_date" 
                                   placeholder="Select end date" 
                                   readonly
                                   required />
                        </div>
                    </div>
                    
                    <!-- Tags -->
                    <div class="fv-row mb-7">
                        <label class="fs-6 fw-semibold mb-2">Tags (Optional)</label>
                        <input type="text" class="form-control form-control-solid" 
                               name="tags" id="tags" 
                               placeholder="Add tags" 
                               value="" />
                        <div class="form-text">Press Enter or comma to add multiple tags</div>
                    </div>
                    
                    <!-- Status (Only in Edit Mode) -->
                    <div class="fv-row mb-7" id="statusField" style="display: none;">
                        <label class="required fs-6 fw-semibold mb-2">Status</label>
                        <select class="form-select form-select-solid" 
                                name="status" 
                                id="status" 
                                data-control="select2" 
                                data-placeholder="Select status" 
                                data-dropdown-parent="#taskModal"
                                data-hide-search="true">
                            <option value="Pending">Pending</option>
                            <option value="In Progress">In Progress</option>
                            <option value="Completed">Completed</option>
                            <option value="On Hold">On Hold</option>
                        </select>
                    </div>
                    
                </div>
                
                <div class="modal-footer flex-center">
                    <button type="reset" class="btn btn-light me-3" data-bs-dismiss="modal">Cancel</button>
                    <button type="submit" class="btn btn-primary" id="submitBtn">
                        <span class="indicator-label">Assign Task</span>
                        <span class="indicator-progress">Please wait...
                            <span class="spinner-border spinner-border-sm align-middle ms-2"></span>
                        </span>
                    </button>
                </div>
            </form>
            
        </div>
    </div>
</div>
    
<!-- Scripts -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="assets/plugins/global/plugins.bundle.js"></script>
    <script src="assets/js/scripts.bundle.js"></script>
    
    <!-- Flatpickr JS (Metronic Date Picker) -->
    <script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
    
    <!-- Tagify JS -->
    <script src="https://cdn.jsdelivr.net/npm/@yaireo/tagify"></script>
    
    <!-- Tasks JS - ONLY ONCE -->
    <script src="admin/js/tasks.js?v=<?php echo time(); ?>"></script>
    
    <?php include 'includes/chat_widget.php'; ?>
</body>
</html>

MMCT - 2023