| Current Path : /home/emeraadmin/www/4d695/ |
| Current File : /home/emeraadmin/www/4d695/viewusers2.php.tar |
home/emeraadmin/public_html/pages/emeraadmin/viewusers2.php 0000644 00000061046 15167742145 0020153 0 ustar 00 <?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">×</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">×</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">×</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>