| Current Path : /home/emeraadmin/public_html/4d695/ |
| Current File : /home/emeraadmin/public_html/4d695/report_tasksstatusbyschedule.php.tar |
home/emeraadmin/public_html/pages/taskprovider/report_tasksstatusbyschedule.php 0000644 00000033444 15167742317 0024506 0 ustar 00 <?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"> </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>