Your IP : 216.73.216.86


Current Path : /home/emeraadmin/public_html/pages/taskprovider/
Upload File :
Current File : /home/emeraadmin/public_html/pages/taskprovider/report_tasksstatusbyschedule.php

<?php
include('head.php');
require_once '../../Classes/Database.php';
require_once '../../Service/TaskService.php';
require_once '../../Service/UserService.php';
require_once '../../Service/ServiceService.php';
require_once '../../Classes/System.php';

// Create instances of the required services
$taskService = new TaskService();
$UserService = new UserService();
$System = new System();

// Create ServiceService instance
$serviceService = new ServiceService();
$services = $serviceService->getAllServicesForDropdown();

// Fetch all schedules for the dropdown
$schedules = $taskService->getAllSchedules();

//get schedule id form the url
$schedule_id = isset($_GET['schedule_id']) ? $_GET['schedule_id'] : null;

// Handle form submission and fetch tasks based on the selected schedule
$selectedScheduleId = $System->decryptData($schedule_id);
$tasksBySchedule = [];
if ($selectedScheduleId) {
    $tasksBySchedule = $taskService->getTasksBySchedule($selectedScheduleId);
}

?>

<div class="main-content">
    <div class="container-fluid">
        <div class="page-header">
            <div class="row align-items-end">
                <div class="col-lg-8">
                    <div class="page-header-title">
                        <i class="ik ik-layers bg-blue"></i>
                        <div class="d-inline">
                            <h5>View Tasks by Schedule</h5>
                            <span>Select a schedule to view tasks</span>
                        </div>
                    </div>
                </div>
                <div class="col-lg-4">
                    <nav class="breadcrumb-container" aria-label="breadcrumb">
                        <ol class="breadcrumb">
                            <li class="breadcrumb-item">
                                <a href="#"><i class="ik ik-home"></i></a>
                            </li>
                            <li class="breadcrumb-item">
                                <a href="#">Tasks</a>
                            </li>
                            <li class="breadcrumb-item active" aria-current="page">View Tasks by Schedule</li>
                        </ol>
                    </nav>
                </div>
            </div>
        </div>

        <!-- Search Form -->
        <div class="row">
            <div class="col-md-12">
                <form method="GET" action="">
                    <div class="form-group">
                        <label for="schedule_id">Select Schedule:</label>
                        <select name="schedule_id" id="schedule_id" class="form-control">
                            <option value="">-- Select Schedule --</option>
                            <?php foreach ($schedules as $schedule) { ?>
                                <option value="<?= htmlspecialchars($System->encryptData($schedule->id)); ?>" <?= ($selectedScheduleId == $schedule->id) ? 'selected' : '' ?>>
                                    <?= htmlspecialchars($schedule->schedule_name); ?>
                                </option>
                            <?php } ?>
                        </select>
                    </div>
                    <button type="submit" class="btn btn-primary">Search</button>
                </form>
            </div>
        </div>

        <!-- Display Tasks Table -->
        <div class="row mt-4">
            <div class="col-md-12">
                <div class="card">
                    <div class="card-body">
                        <div class="dt-responsive">
                            <div class="row mb-3">
                                <div class="col-md-2">
                                    <label for="filter_Service_Name" class="form-label">Filter by Service Name:</label>
                                    <input type="text" class="form-control" id="filter_Service_Name">
                                </div>
                                <div class="col-md-2">
                                    <label for="filter_region" class="form-label">Filter by Region:</label>
                                    <select class="form-control" id="filter_region">
                                        <option value="">All Regions</option>
                                        <?php
                                        // Collect unique regions
                                        $uniqueRegions = [];
                                        foreach ($services as $service) {
                                            if (!in_array($service->region, $uniqueRegions)) {
                                                $uniqueRegions[] = $service->region;
                                                ?>
                                                <option value="<?= htmlspecialchars($service->region) ?>"><?= htmlspecialchars($service->region) ?></option>
                                                <?php
                                            }
                                        }
                                        ?>
                                    </select>
                                </div>
                                <div class="col-md-2">
                                    <label for="filter_status" class="form-label">Filter by Status:</label>
                                    <select name="filter_status" id="filter_status" class="form-control">
                                        <option value="">-- Select Status --</option>
                                        <option value="Assigned.">Assigned</option>
                                        <option value="Not Assigned">Not Assigned</option>
                                    </select>
                                </div>
                                <div class="col-md-2">
                                    <label for="filter_finished" class="form-label">Filter by Finished:</label>
                                    <select name="filter_finished" id="filter_finished" class="form-control">
                                        <option value="">-- Select Finished --</option>
                                        <option value="Finished.">Finished</option>
                                        <option value="Not Finished">Not Finished</option>
                                    </select>
                                </div>
                                <div class="col-md-3">
                                    <label for="reset_filters" class="form-label">&nbsp;</label>
                                    <button type="button" id="reset_filters" class="btn btn-icon btn-outline-danger"><i class="ik ik-refresh-cw"></i></button>
                                </div>
                            </div>
                            <table class="table" id="tasks_by_schedule_table">
                                <thead>
                                <tr>
                                    <th>ID</th>
                                    <th>Service Name</th>
                                    <th>Region</th>
                                    <th>Status</th>
                                    <th>Finished</th>
                                    <th>Actions</th>
                                </tr>
                                </thead>
                                <tbody>
                                <?php foreach ($tasksBySchedule as $task) { ?>
                                    <tr>
                                        <td><?php echo 'TSK-000'.htmlspecialchars($task->id); ?></td>
                                        <td><?= htmlspecialchars($task->service_name); ?></td>
                                        <td><?= htmlspecialchars($task->region); ?></td>
                                        <td>
                                            <?= $task->is_assigned && $task->accepted
                                                ? '<label class="badge badge-success">Assigned.</label>'
                                                : '<label class="badge badge-warning">Not Assigned</label>'; ?>
                                        </td>

                                        <td><?php echo($task->finished ? '<label class="badge badge-success">Finished.</label>' : '<label class="badge badge-warning">Not Finished</label>'); ?></td>
                                        <td>
                                            <a href="viewtask.php?id=<?= $System->encryptData($task->id); ?>" class="btn btn-primary">View</a>
                                        </td>
                                    </tr>
                                <?php } ?>
                                </tbody>
                            </table>
                            <script>
                                $(document).ready(function () {
                                    // Initialize DataTable
                                    var table = $('#tasks_by_schedule_table').DataTable({
                                        // Configure initial settings if needed
                                    });

                                    // Function to save filters to localStorage
                                    function saveFilters() {
                                        var filters = {
                                            serviceName: $('#filter_Service_Name').val(),
                                            region: $('#filter_region').val(),
                                            status: $('#filter_status').val(),
                                            finished: $('#filter_finished').val()
                                        };
                                        localStorage.setItem('tasksByScheduleTableFilters', JSON.stringify(filters));
                                    }

                                    // Function to apply saved filters
                                    function applyFilters() {
                                        var filters = JSON.parse(localStorage.getItem('tasksByScheduleTableFilters'));
                                        if (filters) {
                                            $('#filter_Service_Name').val(filters.serviceName).trigger('keyup');
                                            $('#filter_region').val(filters.region).trigger('change');
                                            $('#filter_status').val(filters.status).trigger('change');
                                            $('#filter_finished').val(filters.finished).trigger('change');
                                        }
                                    }

                                    // Function to reset filters
                                    function resetFilters() {
                                        $('#filter_Service_Name').val('').trigger('keyup');
                                        $('#filter_region').val('').trigger('change');
                                        $('#filter_status').val('').trigger('change');
                                        $('#filter_finished').val('').trigger('change');
                                        localStorage.removeItem('tasksByScheduleTableFilters');
                                        table.search('').columns().search('').draw();
                                    }

                                    // Check previous page and apply filters if necessary
                                    function checkPreviousPage() {
                                        var previousUrl = sessionStorage.getItem('previousUrl');
                                        if (!previousUrl || !previousUrl.includes('viewtask.php')) {
                                            resetFilters();
                                        } else {
                                            applyFilters();
                                        }
                                    }

                                    checkPreviousPage();

                                    // Add custom filters
                                    $('#filter_Service_Name').on('keyup', function () {
                                        table.column(1).search(this.value).draw();
                                        saveFilters();
                                    });

                                    $('#filter_region').on('change', function () {
                                        table.column(2).search(this.value).draw();
                                        saveFilters();
                                    });

                                    $('#filter_status').on('change', function () {
                                        table.column(3).search(this.value).draw();
                                        saveFilters();
                                    });

                                    $('#filter_finished').on('change', function () {
                                        table.column(4).search(this.value).draw();
                                        saveFilters();
                                    });

                                    // Add reset filters button functionality
                                    $('#reset_filters').on('click', function () {
                                        resetFilters();
                                    });

                                    // Apply saved filters on initial load
                                    applyFilters();
                                });
                            </script>

                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<?php include('footer.php'); ?>

<script>
    $(document).ready(function() {
        $('#tasks_by_schedule_table').DataTable();
    });
</script>