Your IP : 216.73.216.86


Current Path : /home/emeraadmin/public_html/4d695/
Upload File :
Current File : /home/emeraadmin/public_html/4d695/reassigntasktoworkers.php.tar

home/emeraadmin/public_html/pages/subcontractor/reassigntasktoworkers.php000064400000026101151701471760023267 0ustar00<?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'); ?>