Your IP : 216.73.216.86


Current Path : /home/emeraadmin/www/4d695/
Upload File :
Current File : /home/emeraadmin/www/4d695/viewusers2.php.tar

home/emeraadmin/public_html/pages/emeraadmin/viewusers2.php000064400000061046151677421450020153 0ustar00<?php
include('head.php');
require_once '../../Service/UserService.php';
require_once '../../Classes/System.php';

$System = new System();
$userService = new UserService();
$users = $userService->getAllUsers();
?>

<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 Users</h5>
                            <span>View all users</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="#">Users</a>
                            </li>
                            <li class="breadcrumb-item active" aria-current="page">View Users</li>
                        </ol>
                    </nav>
                </div>
            </div>
        </div>

        <div class="row">
            <div class="col-md-12">
                <div class="card">
                    <div class="card-header">
                        <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#addUserModal">
                            <i class="ik ik-plus"></i> Add User
                        </button>
                    </div>
                </div>
            </div>
        </div>

        <!-- Add User Modal -->
        <div class="modal fade" id="addUserModal" tabindex="-1" role="dialog" aria-labelledby="addUserModalLabel" aria-hidden="true">
            <div class="modal-dialog modal-dialog-centered" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="addUserModalLabel">Add New User</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body">
                        <form id="addUserForm">
                            <div class="form-group">
                                <label for="first_name">First Name:</label>
                                <input type="text" class="form-control" id="first_name" name="first_name" required>
                            </div>
                            <div class="form-group">
                                <label for="last_name">Last Name:</label>
                                <input type="text" class="form-control" id="last_name" name="last_name" required>
                            </div>
                            <div class="form-group">
                                <label for="email">Email:</label>
                                <input type="email" class="form-control" id="email" name="email" required>
                            </div>
                            <div class="form-group">
                                <label for="phone">Phone:</label>
                                <input type="text" class="form-control" id="phone" name="phone">
                            </div>
                            <div class="form-group">
                                <label for="password">Password:</label>
                                <input type="password" class="form-control" id="password" name="password" required>
                            </div>
                            <div class="form-group">
                                <label for="confirm_password">Confirm Password:</label>
                                <input type="password" class="form-control" id="confirm_password" name="confirm_password" required>
                            </div>
                            <div class="form-group">
                                <label for="role">Role:</label>
                                <select class="form-control" id="role" name="role" required>
                                    <option value="emera_admin">Emera Admin</option>
                                    <option value="subcontractor">Sub Contractor</option>
                                    <option value="task_provider">Task Provider</option>
                                </select>
                            </div>

                        </form>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                        <button type="button" class="btn btn-primary" onclick="addUser()">Add User</button>
                    </div>
                </div>
            </div>
        </div>

        <!-- Include this in your HTML file for the new edit modal -->
        <div class="modal fade" id="editUserModal2" tabindex="-1" role="dialog" aria-labelledby="editUserModal2Label" aria-hidden="true">
            <div class="modal-dialog modal-dialog-centered" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="editUserModal2Label">Edit User</h5>
                        <button type="button" class="close" aria-label="Close" onclick="closeModal('editUserModal2')">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body">
                        <form id="editUserForm2">
                            <input type="hidden" id="edit_user_id" name="id">
                            <div class="form-group">
                                <label for="edit_first_name">First Name:</label>
                                <input type="text" class="form-control" id="edit_first_name" name="first_name" required>
                            </div>
                            <div class="form-group">
                                <label for="edit_last_name">Last Name:</label>
                                <input type="text" class="form-control" id="edit_last_name" name="last_name" required>
                            </div>
                            <div class="form-group">
                                <label for="edit_email">Email:</label>
                                <input type="email" class="form-control" id="edit_email" name="email" required>
                            </div>
                            <div class="form-group">
                                <label for="edit_phone">Phone:</label>
                                <input type="text" class="form-control" id="edit_phone" name="phone">
                            </div>
                            <div class="form-group">
                                <label for="edit_role">Role:</label>
                                <select class="form-control" id="edit_role" name="role" required>
                                    <option value="emera_admin">Emera Admin</option>
                                    <option value="subcontractor">Sub Contractor</option>
                                    <option value="task_provider">Task Provider</option>
                                </select>
                            </div>

                        </form>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" onclick="closeModal('editUserModal2')">Close</button>
                        <button type="button" class="btn btn-primary" onclick="updateUser()">Update User</button>
                    </div>
                </div>
            </div>
        </div>

<!--        update password-->
        <div class="modal fade" id="resetPasswordModal" tabindex="-1" role="dialog" aria-labelledby="resetPasswordModalLabel" aria-hidden="true">
            <div class="modal-dialog modal-dialog-centered" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="resetPasswordModalLabel">Reset Password</h5>
                        <button type="button" class="close" aria-label="Close" onclick="closeModal('resetPasswordModal')">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body">
                        <form id="reset-password">
                            <input  name="user_id" type="hidden">
                            <div class="form-group">
                                <label for="new-password">New Password:</label>
                                <input type="password" class="form-control" name="new-password" required>
                            </div>
                            <div class="form-group">
                                <label for="confirm-password">Confirm Password:</label>
                                <input type="password" class="form-control" name="confirm-password" required>
                            </div>

                            <div class="sign-btn text-center">
                                <button class="btn btn-theme" type="button" onclick="updatePassword()">Update Password</button>
                            </div>
                            <div id="reset-password-error" class="alert alert-danger d-none mt-3"></div>
                            <div id="reset-password-success" class="alert alert-success d-none mt-3"></div>
                        </form>
                    </div>
                </div>
            </div>
        </div>


        <div class="row">
            <div class="col-md-12">
                <div class="card">
                    <div class="card-body">
                        <div class="row mb-3">
                            <div class="col-md-3">
                                <label for="filter_name" class="form-label">Filter by Name:</label>
                                <input type="text" class="form-control" id="filter_name">
                            </div>
                            <div class="col-md-3">
                                <label for="filter_email" class="form-label">Filter by Email:</label>
                                <input type="text" class="form-control" id="filter_email">
                            </div>
                            <div class="col-md-3">
                                <label for="filter_role" class="form-label">Filter by Role:</label>
                                <select class="form-control" id="filter_role">
                                    <option value="">All Roles</option>
                                    <option value="emera_admin">Emera Admin</option>
                                    <option value="subcontractor">Sub Contractor</option>
                                    <option value="task_provider">Task Provider</option>
                                </select>
                            </div>
                            <div class="col-md-3">
                                <label for="filter_status" class="form-label">Filter by Status:</label>
                                <select class="form-control" id="filter_status">
                                    <option value="">All Statuses</option>
                                    <option value="active.">Active</option>
                                    <option value="inactive">Inactive</option>
                                </select>
                            </div>
                        </div>
                        <table class="table" id="super_advanced_table">
                            <thead>
                            <tr>
                                <th>ID</th>
                                <th>Name</th>
                                <th>Email</th>
                                <th>Phone</th>
                                <th>Role</th>
                                <th>Status</th>
                                <th>Actions</th>
                            </tr>
                            </thead>
                            <tbody>
                            <?php foreach ($users as $user): ?>
                                <tr>
                                    <td><?php echo 'U-000'.$user->id; ?></td>
                                    <td><?php echo $user->first_name . ' ' . $user->last_name; ?></td>
                                    <td><?php echo $user->email; ?></td>
                                    <td><?php echo $user->phone; ?></td>
                                    <td><?php echo '<span class="badge badge-'.($user->role === 'emera_admin' ? 'warning' : 'success') .'">'.ucfirst($user->role).'</span>'; ?></td>
                                    <td><?php echo '<span class="badge badge-'.($user->status === 'active' ? 'success' : 'danger').'">'.($user->status === 'active' ? 'Active.' : 'Inactive').'</span>'; ?></td>
                                    <td>
                                        <button type="button" class="btn btn-primary btn-sm" onclick="editUser(<?php echo $user->id; ?>)">Edit</button>
                                        <button type="button" class="btn btn-info btn-sm" onclick="editPassword(<?php echo $user->id; ?>)">Reset Password</button>
                                        <?php if ($user->status === 'active'): ?>
                                            <button type="button" class="btn btn-warning btn-sm" onclick="deActivateUser(<?php echo $user->id; ?>)">Deactivate</button>
                                        <?php else: ?>
                                            <button type="button" class="btn btn-success btn-sm" onclick="activateUser(<?php echo $user->id; ?>)">Activate</button>
                                        <?php endif; ?>

                                    </td>
                                </tr>
                            <?php endforeach; ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
            <script>
                $(document).ready(function () {
                    var table = $('#super_advanced_table').DataTable({
                        // Configure initial settings if needed
                    });

                    // Example filter for Name
                    $('#filter_name').on('keyup', function () {
                        table.column(1).search($(this).val()).draw();
                    });

                    // Example filter for Email
                    $('#filter_email').on('keyup', function () {
                        table.column(2).search($(this).val()).draw();
                    });

                    // Example filter for Role
                    $('#filter_role').on('change', function () {
                        var role = $(this).val();
                        table.column(4).search(role).draw();
                    });

                    // Example filter for Status
                    $('#filter_status').on('change', function () {
                        var status = $(this).val();
                        table.column(5).search(status).draw();
                    });
                });


            </script>
        </div>


    </div>
</div>

<?php include('footer.php'); ?>

<!-- Include SweetAlert2 -->
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>

<script>

    function addUser() {
        const addUserForm = document.getElementById('addUserForm');
        const formData = new FormData(addUserForm);
        // validate password
        const password = formData.get('password');
        const confirmPassword = formData.get('confirm_password');
        if (password !== confirmPassword) {
            Swal.fire('Error', 'Passwords do not match.', 'error');
            return;
        }

        formData.append('action', 'addUser');

        fetch('user_operations.php', {
            method: 'POST',
            body: formData
        })
            .then(response => response.json())
            .then(data => {
                if (data.status === 'success') {
                    Swal.fire('Success', 'User added successfully!', 'success').then(() => {
                        document.getElementById('addUserModal').classList.remove('show');
                        document.getElementById('addUserModal').style.display = 'none';
                        location.reload();
                    });
                } else {
                    Swal.fire('Error', data.message, 'error');
                }
            })
            .catch(error => {
                Swal.fire('Error', 'There was an error adding the user.', 'error');
                console.error('Error:', error);
            });
    }


    // Function to open the modal
    function openModal(modalId) {
        const modal = document.getElementById(modalId);
        modal.classList.add('show');
        modal.style.display = 'block';
        modal.removeAttribute('aria-hidden');
        modal.setAttribute('aria-modal', 'true');

        // Add backdrop manually
        const backdrop = document.createElement('div');
        backdrop.className = 'modal-backdrop fade show';
        backdrop.id = 'backdrop';
        document.body.appendChild(backdrop);
    }

    // Function to close the modal
    function closeModal(modalId) {
        const modal = document.getElementById(modalId);
        modal.classList.remove('show');
        modal.style.display = 'none';
        modal.setAttribute('aria-hidden', 'true');
        modal.removeAttribute('aria-modal');

        // Remove the backdrop manually
        const backdrop = document.getElementById('backdrop');
        if (backdrop) {
            backdrop.remove();
        }
    }

    // Function to edit user
    function editUser(userId) {
        fetch(`user_operations.php?id=${userId}`)
            .then(response => response.json())
            .then(data => {
                console.log('Server response:', data); // Log the response for debugging
                const editUserForm = document.getElementById('editUserForm2');
                editUserForm.querySelector('#edit_user_id').value = data.id;
                editUserForm.querySelector('#edit_first_name').value = data.first_name;
                editUserForm.querySelector('#edit_last_name').value = data.last_name;
                editUserForm.querySelector('#edit_email').value = data.email;
                editUserForm.querySelector('#edit_phone').value = data.phone;
                editUserForm.querySelector('#edit_role').value = data.role;


                // Show the modal
                openModal('editUserModal2');
            })
            .catch(error => {
                Swal.fire('Error', 'There was an error fetching user data.', 'error');
                console.error('Error fetching user data:', error);
            });
    }


    // Function to update user
    function updateUser() {
        const editUserForm = document.getElementById('editUserForm2');
        const formData = new FormData(editUserForm);
        formData.append('action', 'updateUser');

        fetch('user_operations.php', {
            method: 'POST',
            body: formData
        })
            .then(response => response.json())
            .then(data => {
                if (data.status === 'success') {
                    Swal.fire('Success', 'User updated successfully!', 'success').then(() => {
                        closeModal('editUserModal2');
                        location.reload();
                    });
                } else {
                    Swal.fire('Error', data.message, 'error');
                }
            })
            .catch(error => {
                Swal.fire('Error', 'There was an error updating the user.', 'error');
                console.error('Error:', error);
            });
    }




    function activateUser(userId) {
        Swal.fire({
            title: 'Are you sure?',
            text: "You want to activate this user?",
            icon: 'warning',
            showCancelButton: true,
            confirmButtonText: 'Yes, activate!',
            cancelButtonText: 'Cancel'
        }).then((result) => {


                fetch(`user_operations.php?id=${userId}`, {
                    method: 'DELETE'
                })
                    .then(response => response.json())
                    .then(data => {
                        console.log('Server response:', data); // Log the response for debugging
                        if (data.status === 'success') {
                            Swal.fire('Deleted!', 'User has been activated.', 'success').then(() => {
                                location.reload();
                            });
                        }
                    })
                    .catch(error => {
                        Swal.fire('Error', 'There was an error activating the user.', 'error');
                        console.error('Error:', error);
                    });

        });
    }
    function deActivateUser(userId) {
        Swal.fire({
            title: 'Are you sure?',
            text: "You want to deactivate this user?",
            icon: 'warning',
            showCancelButton: true,
            confirmButtonText: 'Yes, deactivate!',
            cancelButtonText: 'Cancel'
        }).then((result) => {
            console.log('Result:', result);
            if (result.isConfirmed) {
                fetch(`user_operations.php?id=${userId}`, {
                    method: 'DELETE'
                })
                    .then(response => response.json())
                    .then(data => {
                        console.log('Server response:', data); // Log the response for debugging
                        if (data.status === 'success') {
                            Swal.fire('Deactivated!', 'User has been deactivated.', 'success').then(() => {
                                location.reload();
                            });
                        }
                    })
                    .catch(error => {
                        Swal.fire('Error', 'There was an error deactivating the user.', 'error');
                        console.error('Error:', error);
                    });
            }
        });
    }

    //edit password button
    function editPassword(userId) {
        const resetPasswordForm = document.getElementById('reset-password');
        resetPasswordForm.querySelector('input[name="user_id"]').value = userId;
        openModal('resetPasswordModal');
    }

    // Function to update password
    function updatePassword() {
        const resetPasswordForm = document.getElementById('reset-password');
        const formData = new FormData(resetPasswordForm);
        const newPassword = formData.get('new-password');
        const confirmPassword = formData.get('confirm-password');

        if (newPassword !== confirmPassword) {
            Swal.fire('Error', 'Passwords do not match.', 'error');
            return;
        }

        formData.append('action', 'updatePassword');

        fetch('user_operations.php', {
            method: 'POST',
            body: formData
        })
            .then(response => response.json())
            .then(data => {
                if (data.status === 'success') {
                    Swal.fire('Success', 'Password updated successfully!', 'success').then(() => {
                        closeModal('resetPasswordModal');
                    }).then(() => {
                        location.reload();
                    });
                } else {
                    Swal.fire('Error', data.message, 'error');
                }
            })
            .catch(error => {
                Swal.fire('Error', 'There was an error updating the password.', 'error');
                console.error('Error:', error);
            });
    }

</script>