| Current Path : /home/emeraadmin/www/4d695/ |
| Current File : /home/emeraadmin/www/4d695/viewsubtasksregionwise.php.tar |
home/emeraadmin/public_html/pages/subcontractor/viewsubtasksregionwise.php 0000644 00000023445 15170147372 0023445 0 ustar 00 <?php
include('head.php');
require_once '../../Classes/Database.php';
require_once '../../Service/TaskService.php';
require_once '../../Classes/System.php';
$assignedUserId = $_SESSION['user_id'] ?? ($_GET['user_id'] ?? 1);
$taskService = new TaskService();
$System = new System();
$SubContractorId = $_SESSION['user_id'];
$subtasksByRegion = $taskService->getAllSubtasksForSubContractorsGroupByRegion($SubContractorId);
$regions = array_keys($subtasksByRegion);
?>
<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>All Subtasks</h5>
<span>List of all subtasks assigned to you</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="dashboard.php"><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>
<!-- Region Filter Dropdown -->
<div class="row mb-12">
<div class="col-md-4">
<div class="form-group">
<label for="regionFilter">Filter by Region</label>
<select id="regionFilter" class="form-control">
<option value="">All Regions</option>
<?php foreach ($regions as $region) { ?>
<option value="<?php echo $region; ?>"><?php echo $region; ?></option>
<?php } ?>
</select>
</div>
</div>
</div>
<div class="row mb-4">
<div class="col-md-12">
<a href="viewsubtasksdaywise.php" class="btn btn-outline-success"><i class="ik ik-layers"></i> Daily View</a>
</div>
</div>
<!-- day wise view-->
<!-- Assign tasks to cleaner button -->
<div class="row mb-4">
<div class="col-md-12">
<button class="btn btn-primary" id="assignTasks">Assign Tasks to Cleaner</button>
</div>
</div>
<?php foreach ($subtasksByRegion as $region => $subtaskList) { ?>
<div class="row subtask-row" data-region="<?php echo $region; ?>">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h3>Subtasks for Region: <?php echo $region; ?></h3>
</div>
<div class="card-body">
<div class="dt-responsive">
<table class="table" id="table_<?php echo strtolower(str_replace(' ', '_', $region)); ?>">
<thead>
<tr>
<th>#</th>
<th>ID</th>
<th>Service Name</th>
<th>Date</th>
<th>Time</th>
<th>Assigned</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($subtaskList as $subtask) { ?>
<tr>
<td>
<input type="checkbox" class="select_all_child" id="selectall_<?php echo $subtask['id']; ?>">
</td>
<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>
<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>
<script>
$(document).ready(function() {
// Filter subtasks by region
function filterSubtasks() {
var selectedRegion = $('#regionFilter').val();
$('.subtask-row').each(function() {
var subtaskRegion = $(this).data('region');
var showRow = true;
if (selectedRegion && subtaskRegion !== selectedRegion) {
showRow = false;
}
if (showRow) {
$(this).show();
} else {
$(this).hide();
}
});
}
// Event listener for region filter
$('#regionFilter').on('change', function() {
filterSubtasks();
});
// Select all tasks in a region
$('#selectAll').on('change', function() {
var isChecked = $(this).is(':checked');
$('.select_all_child').prop('checked', isChecked);
});
// Assign tasks to cleaner button
$('#assignTasks').on('click', function() {
// Collect checked subtasks, trimming 'ST-000'
var checkedSubtasks = [];
$('.select_all_child:checked').each(function() {
var subtaskId = $(this).closest('tr').find('td:eq(1)').text().trim().replace('ST-000', '');
checkedSubtasks.push(subtaskId);
});
if (checkedSubtasks.length === 0) {
Swal.fire({
icon: 'error',
title: 'No subtasks selected',
text: 'Please select subtasks to assign to a cleaner'
});
return;
}
console.log(checkedSubtasks);
Swal.fire({
title: 'Enter Cleaner Email',
input: 'email',
inputLabel: 'Cleaner Email',
inputPlaceholder: 'Enter cleaner email',
showCancelButton: true,
confirmButtonText: 'Assign Task',
showLoaderOnConfirm: true,
preConfirm: (email) => {
const subtaskIds = checkedSubtasks;
return fetch('../send_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,
subtask_ids: subtaskIds
})
})
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
console.log('Response from PHP:', data);
// Handle response data accordingly
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>
<?php include('footer.php'); ?>