| Current Path : /home/emeraadmin/public_html/4d695/ |
| Current File : /home/emeraadmin/public_html/4d695/report_viewsubtasksdaywise.php.tar |
home/emeraadmin/public_html/pages/taskprovider/report_viewsubtasksdaywise.php 0000644 00000035656 15167742313 0024170 0 ustar 00 <?php
include('head.php');
require_once '../../Classes/Database.php';
require_once '../../Service/TaskService.php';
require_once '../../Classes/System.php';
require_once '../../Service/ServiceService.php';
$serviceService = new ServiceService();
$services = $serviceService->getAllServicesForDropdown();
// Fetch assigned user ID from session or request
$assignedUserId = $_SESSION['user_id'] ?? ($_GET['user_id'] ?? 1); // Default to 1 if not set
// Create TaskService instance
$taskService = new TaskService();
$System = new System(); // Assuming System class is correctly defined and used
$TaskProviderId = $_SESSION['user_id'];
// Fetch all subtasks grouped by date
$startDate = $_GET['start_date'] ?? null;
$endDate = $_GET['end_date'] ?? null;
$serviceLocationId = $_GET['service_location_id'] ?? null;
if ($_GET['filter_today'] ?? false) {
$startDate = date('Y-m-d');
$endDate = date('Y-m-d');
}
// Correctly call the function with the right parameters
//$subtasks = $taskService->getAllSubtasksForTaskProviderGroupByDate($startDate, $endDate, $serviceLocationId, $TaskProviderId);
$subtasks = $taskService->getAllSubtasksGroupByDate($startDate, $endDate, $serviceLocationId);
$CompletedSubtaskcount = 0;
$IncompletedSubtaskcount = 0;
foreach ($subtasks as $date => $subtaskList) {
foreach ($subtaskList as $subtask) {
if ($subtask['completed']) {
$CompletedSubtaskcount++;
} else {
$IncompletedSubtaskcount++;
}
}
}
?>
<!-- Include Bootstrap Datepicker CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker.min.css" />
<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>Tasks</h5>
<span>Assign Tasks to Cleaner</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="../../index.html"><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">All Subtasks</li>
</ol>
</nav>
</div>
</div>
</div>
<!-- Banner Section -->
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-footer">
<div class="d-flex">
<div class="col-lg-3 col-md-6 col-sm-12">
<div class="widget bg-success">
<div class="widget-body">
<div class="d-flex justify-content-between align-items-center">
<div class="state">
<h6>Completed Subtasks</h6>
<h2><?= $CompletedSubtaskcount; ?></h2>
</div>
<div class="icon">
<i class="ik ik-shopping-cart"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-md-6 col-sm-12">
<div class="widget bg-warning">
<div class="widget-body">
<div class="d-flex justify-content-between align-items-center">
<div class="state">
<h6>Incomplete Subtasks</h6>
<h2><?= $IncompletedSubtaskcount; ?></h2>
</div>
<div class="icon">
<i class="ik ik-inbox"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Date Filter and Today Checkbox -->
<div class="row mb-4">
<div class="col-md-3">
<div class="form-group">
<label for="startDate">Start Date</label>
<input type="text" id="startDate" class="form-control datepicker" placeholder="Select start date" value="<?= htmlspecialchars($startDate) ?>">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="endDate">End Date</label>
<input type="text" id="endDate" class="form-control datepicker" placeholder="Select end date" value="<?= htmlspecialchars($endDate) ?>">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="serviceLocationId">Select a Service Location:</label>
<select id="serviceLocationId" name="serviceLocationId" class="form-control select2">
<option value="">All Locations</option>
<?php
foreach ($services as $service) {
$selected = '';
if (isset($_GET['service_location_id']) && $_GET['service_location_id'] == $service->id) {
$selected = 'selected';
}
echo '<option value="' . htmlspecialchars($service->id) . '" ' . $selected . '>' . htmlspecialchars($service->name) . '</option>';
}
?>
</select>
</div>
</div>
<div class="col-md-3 d-flex align-items-center">
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="todayCheckbox" value="today" <?= ($startDate == date('Y-m-d') && $endDate == date('Y-m-d')) ? 'checked' : '' ?>>
<label class="form-check-label" for="todayCheckbox">Today</label>
</div>
</div>
<div class="col-md-3 d-flex align-items-center">
<button id="applyFilter" class="btn btn-primary">Apply Filter</button>
<button type="button" id="reset_filters" class="btn btn-icon btn-outline-danger"><i class="ik ik-refresh-cw"></i></button>
</div>
</div>
<?php foreach ($subtasks as $date => $subtaskList) { ?>
<div class="row subtask-row" data-date="<?php echo $date; ?>">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h3>Subtasks for <?php
if ($date == date('Y-m-d')) {
echo 'Today';
} else if ($date == date('Y-m-d', strtotime('tomorrow'))) {
echo 'Tomorrow';
} else {
echo date('l, F j, Y', strtotime($date));
}
?></h3>
<div class="card-header-right">
<ul class="list-unstyled card-option">
<li><i class="ik ik-chevron-left action-toggle" data-toggle="tooltip" title="Collapse"></i></li>
<li><i class="ik ik-minus minimize-card" data-toggle="tooltip" title="Minimize"></i></li>
</ul>
</div>
</div>
<div class="card-body">
<div class="dt-responsive">
<table class="table" id="advanced_table_<?php echo strtotime($date); ?>">
<thead>
<tr>
<th>ID</th>
<th>Service Name</th>
<th>Date</th>
<th>Time</th>
<th>Assigned</th>
<th>Completed</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($subtaskList as $subtask) { ?>
<tr>
<td>ST-000<?= $subtask['id']; ?></td>
<td><?= $subtask['service_name']; ?></td>
<td><?= $subtask['subtask_date']; ?></td>
<td><?= $subtask['subtask_time'] ? date('h:i A', strtotime($subtask['subtask_time'])) : ''; ?></td>
<td><?= $subtask['assigned'] ? '<span class="badge badge-success">Assigned</span>' : '<span class="badge badge-danger">Not Assigned</span>'; ?></td>
<td>
<?php
if ($subtask['ignored']) {
echo '<span class="badge badge-warning">Ignored</span>';
} else {
echo $subtask['completed']
? '<span class="badge badge-success">Completed</span>'
: '<span class="badge badge-danger">Not Completed</span>';
}
?>
</td>
<td>
<a href="viewsubtask.php?id=<?= $System->encryptData($subtask['id']); ?>" class="btn btn-primary">View</a>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<?php } ?>
</div>
</div>
<!-- Include jQuery and Bootstrap Datepicker JS -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js"></script>
<script>
$(document).ready(function() {
// Initialize datepickers
$('.datepicker').datepicker({
format: 'yyyy-mm-dd',
autoclose: true,
todayHighlight: true
});
// Function to save filters to localStorage
function saveFilters() {
var filters = {
startDate: $('#startDate').val(),
endDate: $('#endDate').val(),
serviceLocationId: $('#serviceLocationId').val(),
todayCheckbox: $('#todayCheckbox').is(':checked')
};
localStorage.setItem('dateRangeFilters', JSON.stringify(filters));
}
// Function to apply saved filters
function applyFilters() {
var filters = JSON.parse(localStorage.getItem('dateRangeFilters'));
if (filters) {
$('#startDate').val(filters.startDate);
$('#endDate').val(filters.endDate);
$('#serviceLocationId').val(filters.serviceLocationId);
$('#todayCheckbox').prop('checked', filters.todayCheckbox);
}
}
// Function to reset filters
function resetFilters() {
$('#startDate').val('');
$('#endDate').val('');
$('#serviceLocationId').val('');
$('#todayCheckbox').prop('checked', false);
localStorage.removeItem('dateRangeFilters');
applyDateRangeFilter();
}
// Apply date range filter by modifying the URL
function applyDateRangeFilter() {
var startDate = $('#startDate').val();
var endDate = $('#endDate').val();
var serviceLocationId = $('#serviceLocationId').val();
var url = window.location.href.split('?')[0] + '?start_date=' + startDate + '&end_date=' + endDate + '&service_location_id=' + serviceLocationId;
window.location.href = url;
}
// Event handler for applyFilter button
$('#applyFilter').on('click', function() {
saveFilters();
applyDateRangeFilter();
});
// Event handler for todayCheckbox
$('#todayCheckbox').on('change', function() {
if ($(this).is(':checked')) {
var today = '<?= date('Y-m-d') ?>';
$('#startDate').val(today);
$('#endDate').val(today);
} else {
$('#startDate').val('');
$('#endDate').val('');
}
saveFilters();
applyDateRangeFilter();
});
// Add reset filters button functionality
$('#reset_filters').on('click', function() {
resetFilters();
});
// Apply saved filters on initial load
applyFilters();
});
</script>
<?php include('footer.php'); ?>
home/emeraadmin/public_html/pages/subcontractor/report_viewsubtasksdaywise.php 0000644 00000035472 15170146752 0024336 0 ustar 00 <?php
include('head.php');
require_once '../../Classes/Database.php';
require_once '../../Service/TaskService.php';
require_once '../../Classes/System.php';
require_once '../../Service/ServiceService.php';
$serviceService = new ServiceService();
$services = $serviceService->getAllServicesForDropdown();
// Fetch assigned user ID from session or request
$assignedUserId = $_SESSION['user_id'] ?? ($_GET['user_id'] ?? 1); // Default to 1 if not set
// Create TaskService instance
$taskService = new TaskService();
$System = new System(); // Assuming System class is correctly defined and used
// Fetch all subtasks grouped by date
$startDate = $_GET['start_date'] ?? null;
$endDate = $_GET['end_date'] ?? null;
$serviceLocationId = $_GET['service_location_id'] ?? null;
if ($_GET['filter_today'] ?? false) {
$startDate = date('Y-m-d');
$endDate = date('Y-m-d');
}
$currentUserId = $_SESSION['user_id'];
$subtasks = $taskService->getAllSubtasksForSubContractorsGroupByDateReport($startDate, $endDate, $serviceLocationId, $currentUserId);
$CompletedSubtaskcount = 0;
$IncompletedSubtaskcount = 0;
foreach ($subtasks as $date => $subtaskList) {
foreach ($subtaskList as $subtask) {
if ($subtask['completed']) {
$CompletedSubtaskcount++;
} else {
$IncompletedSubtaskcount++;
}
}
}
?>
<!-- Include Bootstrap Datepicker CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker.min.css" />
<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>Tasks</h5>
<span>Assign Tasks to Cleaner</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="../../index.html"><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">All Subtasks</li>
</ol>
</nav>
</div>
</div>
</div>
<!-- Task Summary -->
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-footer">
<div class="d-flex">
<div class="col-lg-3 col-md-6 col-sm-12">
<div class="widget bg-success">
<div class="widget-body">
<div class="d-flex justify-content-between align-items-center">
<div class="state">
<h6>Completed Subtasks</h6>
<h2><?= $CompletedSubtaskcount; ?></h2>
</div>
<div class="icon">
<i class="ik ik-shopping-cart"></i>
</div>
</div>
</div>
</div>
</div>
<div class="col-lg-3 col-md-6 col-sm-12">
<div class="widget bg-warning">
<div class="widget-body">
<div class="d-flex justify-content-between align-items-center">
<div class="state">
<h6>Incomplete Subtasks</h6>
<h2><?= $IncompletedSubtaskcount; ?></h2>
</div>
<div class="icon">
<i class="ik ik-inbox"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Date Filter and Today Checkbox -->
<div class="row mb-4">
<div class="col-md-3">
<div class="form-group">
<label for="startDate">Start Date</label>
<input type="text" id="startDate" class="form-control datepicker" placeholder="Select start date" value="<?= htmlspecialchars($startDate) ?>">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="endDate">End Date</label>
<input type="text" id="endDate" class="form-control datepicker" placeholder="Select end date" value="<?= htmlspecialchars($endDate) ?>">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="serviceLocationId">Select a Service Location:</label>
<select id="serviceLocationId" name="serviceLocationId" class="form-control select2">
<option value="">All Locations</option>
<?php
foreach ($services as $service) {
$selected = '';
if (isset($_GET['service_location_id']) && $_GET['service_location_id'] == $service->id) {
$selected = 'selected';
}
echo '<option value="' . htmlspecialchars($service->id) . '" ' . $selected . '>' . htmlspecialchars($service->name) . '</option>';
}
?>
</select>
</div>
</div>
<div class="col-md-3 d-flex align-items-center">
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="todayCheckbox" value="today" <?= ($startDate == date('Y-m-d') && $endDate == date('Y-m-d')) ? 'checked' : '' ?>>
<label class="form-check-label" for="todayCheckbox">Today</label>
</div>
</div>
<div class="col-md-3 d-flex align-items-center">
<button id="applyFilter" class="btn btn-primary">Apply Filter</button>
<button type="button" id="reset_filters" class="btn btn-icon btn-outline-danger"><i class="ik ik-refresh-cw"></i></button>
</div>
</div>
<!-- Subtask Table -->
<?php foreach ($subtasks as $date => $subtaskList) { ?>
<div class="row subtask-row" data-date="<?php echo $date; ?>">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h3>Subtasks for <?php
if ($date == date('Y-m-d')) {
echo 'Today';
} else if ($date == date('Y-m-d', strtotime('tomorrow'))) {
echo 'Tomorrow';
} else {
echo date('l, F j, Y', strtotime($date));
}
?></h3>
<div class="card-header-right">
<ul class="list-unstyled card-option">
<li><i class="ik ik-chevron-left action-toggle" data-toggle="tooltip" title="Collapse"></i></li>
<li><i class="ik ik-minus minimize-card" data-toggle="tooltip" title="Minimize"></i></li>
</ul>
</div>
</div>
<div class="card-body">
<div class="dt-responsive">
<table class="table" id="advanced_table_<?php echo strtotime($date); ?>">
<thead>
<tr>
<th>ID</th>
<th>Service Name</th>
<th>Date</th>
<th>Time</th>
<th>Assigned</th>
<th>Completed</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($subtaskList as $subtask) { ?>
<tr>
<td>ST-000<?= $subtask['id']; ?></td>
<td><?= $subtask['service_name']; ?></td>
<td><?= $subtask['subtask_date']; ?></td>
<td><?= $subtask['subtask_time'] ? date('h:i A', strtotime($subtask['subtask_time'])) : ''; ?></td>
<td><?= $subtask['assigned'] ? '<span class="badge badge-success">Assigned</span>' : '<span class="badge badge-danger">Not Assigned</span>'; ?></td>
<td>
<?php
if ($subtask['ignored']) {
echo '<span class="badge badge-warning">Ignored</span>';
} else {
echo $subtask['completed']
? '<span class="badge badge-success">Completed</span>'
: '<span class="badge badge-danger">Not Completed</span>';
}
?>
</td>
<td>
<a href="viewsubtask.php?id=<?= $System->encryptData($subtask['id']); ?>" class="btn btn-primary">View</a>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<?php } ?>
</div>
</div>
<!-- Include jQuery and Bootstrap Datepicker JS -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js"></script>
<script>
$(document).ready(function() {
// Initialize datepickers
$('.datepicker').datepicker({
format: 'yyyy-mm-dd',
autoclose: true,
todayHighlight: true
});
// Function to save filters to localStorage
function saveFilters() {
var filters = {
startDate: $('#startDate').val(),
endDate: $('#endDate').val(),
serviceLocationId: $('#serviceLocationId').val(),
todayCheckbox: $('#todayCheckbox').is(':checked')
};
localStorage.setItem('dateRangeFilters', JSON.stringify(filters));
}
// Function to apply saved filters
function applyFilters() {
var filters = JSON.parse(localStorage.getItem('dateRangeFilters'));
if (filters) {
$('#startDate').val(filters.startDate);
$('#endDate').val(filters.endDate);
$('#serviceLocationId').val(filters.serviceLocationId);
$('#todayCheckbox').prop('checked', filters.todayCheckbox);
}
}
// Function to reset filters
function resetFilters() {
$('#startDate').val('');
$('#endDate').val('');
$('#serviceLocationId').val('');
$('#todayCheckbox').prop('checked', false);
localStorage.removeItem('dateRangeFilters');
applyDateRangeFilter();
}
// Apply date range filter by modifying the URL
function applyDateRangeFilter() {
var startDate = $('#startDate').val();
var endDate = $('#endDate').val();
var serviceLocationId = $('#serviceLocationId').val();
var url = window.location.href.split('?')[0] + '?start_date=' + startDate + '&end_date=' + endDate + '&service_location_id=' + serviceLocationId;
window.location.href = url;
}
// Event handler for applyFilter button
$('#applyFilter').on('click', function() {
saveFilters();
applyDateRangeFilter();
});
// Event handler for todayCheckbox
$('#todayCheckbox').on('change', function() {
if ($(this).is(':checked')) {
var today = '<?= date('Y-m-d') ?>';
$('#startDate').val(today);
$('#endDate').val(today);
} else {
$('#startDate').val('');
$('#endDate').val('');
}
saveFilters();
applyDateRangeFilter();
});
// Add reset filters button functionality
$('#reset_filters').on('click', function() {
resetFilters();
});
// Apply saved filters on initial load
applyFilters();
});
</script>
<?php include('footer.php'); ?>