| Current Path : /home/emeraadmin/www/4d695/ |
| Current File : /home/emeraadmin/www/4d695/reassigntasktoworkers.php.tar |
home/emeraadmin/public_html/pages/subcontractor/reassigntasktoworkers.php 0000644 00000026101 15170147176 0023267 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';
$System = new System();
$serviceService = new ServiceService();
$taskService = new TaskService();
// Fetch services for dropdown
$services = $serviceService->getAllServicesForDropdown();
// Fetch tasks to display
$tasks = $taskService->getTasksByAssignedAndNotCompletedAndNoCompletedSubtasks($companyId);
?>
<div class="main-content">
<div class="container-fluid">
<!-- Page header -->
<div class="page-header">
<!-- Breadcrumbs -->
<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>Re Assign Tasks</h5>
<span>Re Assign Tasks to a 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="#"><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 Assigned Tasks</li>
</ol>
</nav>
</div>
</div>
</div>
<!-- Task viewing section -->
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header"><h3>View Tasks</h3></div>
<div class="card-body">
<!-- Filter options -->
<div class="form-group row">
<div class="col-sm-4">
<label for="filter_service" class="col-form-label">Filter Service Name:</label>
<input type="text" class="form-control" id="filter_service">
</div>
<div class="col-sm-4">
<label for="filter_region" class="col-form-label">Filter 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>
<!-- Task table -->
<table id="super_advanced_table" class="table">
<thead>
<tr>
<th><input type="checkbox" id="select_all_tasks"></th>
<th>ID</th>
<th>Service Name</th>
<th>Region</th>
<th>Frequency</th>
<th>Assigned Cleaner email </th>
<th>Created At</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($tasks as $task): ?>
<tr>
<td><input type="checkbox" class="task_checkbox" value="<?= htmlspecialchars($task->id) ?>"></td>
<td><?php echo 'TSK-000' . htmlspecialchars($task->id); ?></td>
<td><?php echo htmlspecialchars($task->service_name); ?></td>
<td><?php echo htmlspecialchars($task->region); ?></td>
<td><?php echo htmlspecialchars($task->frequency); ?></td>
<td><?php echo $task->assignedCleaneremail; ?></td>
<td><?php echo date('F j, Y, g:i a', strtotime($task->created_at)); ?></td>
<td>
<a href="viewtask.php?id=<?= htmlspecialchars($System->encryptData($task->id)) ?>" class="btn btn-primary">View Details</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<!-- Assign tasks button -->
<button class="btn btn-outline-danger" id="assignTasks">Re Assign Tasks to Cleaner</button>
</div>
<!-- JavaScript for DataTable and actions -->
<script>
$(document).ready(function () {
// Initialize DataTable
var table = $('#super_advanced_table').DataTable();
// Add custom filters
$('#filter_service').on('keyup', function () {
table.column(2).search(this.value).draw();
});
$('#filter_region').on('change', function () {
table.column(3).search($(this).val()).draw();
});
// Handle select all tasks
$('#select_all_tasks').on('click', function () {
var isChecked = $(this).prop('checked');
$('.task_checkbox').prop('checked', isChecked);
});
// Handle assign tasks button click
$('#assignTasks').on('click', function() {
var checkedTasks = [];
$('.task_checkbox:checked').each(function() {
var taskId = $(this).closest('tr').find('td:eq(1)').text().trim().replace('TSK-000', '');
checkedTasks.push(taskId);
});
if (checkedTasks.length === 0) {
Swal.fire({
icon: 'error',
title: 'No Tasks selected',
text: 'Please select tasks to assign to a cleaner'
});
return;
}
Swal.fire({
title: 'Enter Cleaner Email',
input: 'email',
inputLabel: 'Cleaner Email',
inputPlaceholder: 'Enter cleaner email',
showCancelButton: true,
confirmButtonText: 'Assign Task',
showLoaderOnConfirm: true,
preConfirm: (email) => {
return fetch('../send_task_email_to_workers.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
action: 'bulk', // or 'single' depending on your logic
worker_email: email,
task_ids: checkedTasks
})
})
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
console.log('Response from PHP:', data);
if (data.status === 'success') {
Swal.fire({
title: 'Success!',
text: 'Task has been assigned successfully',
icon: 'success'
}).then(() => location.reload());
} else {
throw new Error(data.message || 'Unknown error');
}
})
.catch(error => {
console.error('Fetch error:', error);
Swal.showValidationMessage(
`Request failed: ${error.message}`
);
});
},
allowOutsideClick: () => !Swal.isLoading()
});
});
});
</script>
</div>
</div>
</div>
</div>
</div>
<?php include('footer.php'); ?>