83 lines
3.2 KiB
PHP
83 lines
3.2 KiB
PHP
<!-- resources/views/pages/user-management.blade.php -->
|
|
@extends('layouts.app')
|
|
|
|
@section('page_title', 'User Management')
|
|
|
|
@section('content')
|
|
@include('components.table-component', [
|
|
'pageTitle' => 'User Management',
|
|
'data' => $users ?? [], // Data from API
|
|
'columns' => [
|
|
['name' => 'Username', 'key' => 'username', 'sortable' => true],
|
|
['name' => 'First Name', 'key' => 'firstName', 'sortable' => true],
|
|
['name' => 'Last Name', 'key' => 'lastName', 'sortable' => true],
|
|
['name' => 'User Role', 'key' => 'role', 'sortable' => true],
|
|
['name' => 'Email', 'key' => 'email', 'sortable' => true],
|
|
['name' => 'Status', 'key' => 'status', 'sortable' => true]
|
|
],
|
|
'allFields' => [
|
|
['name' => 'Username', 'key' => 'username', 'type' => 'text', 'required' => true],
|
|
['name' => 'First Name', 'key' => 'firstName', 'type' => 'text', 'required' => true],
|
|
['name' => 'Last Name', 'key' => 'lastName', 'type' => 'text', 'required' => true],
|
|
['name' => 'Email', 'key' => 'email', 'type' => 'email', 'required' => true],
|
|
['name' => 'Password', 'key' => 'password', 'type' => 'password', 'required' => true, 'showOnEdit' => false],
|
|
['name' => 'Role', 'key' => 'role', 'type' => 'select', 'options' => $roles ?? ['admin', 'user'], 'required' => true],
|
|
['name' => 'Status', 'key' => 'status', 'type' => 'select', 'options' => ['Active', 'Inactive'], 'required' => true]
|
|
],
|
|
'actions' => ['edit', 'view', 'delete'],
|
|
'showAddButton' => true,
|
|
'addButtonUrl' => route('user-management.create'),
|
|
'showCheckboxes' => true,
|
|
'showBatchDelete' => true,
|
|
'showEditModal' => true,
|
|
'showViewModal' => true,
|
|
'baseRoute' => 'user-management'
|
|
])
|
|
@endsection
|
|
|
|
@push('scripts')
|
|
<script>
|
|
$(document).ready(function() {
|
|
const dataTable = initializeDataTable({
|
|
route: '{{ route("user-management.data") }}',
|
|
columns: [
|
|
{ data: 'username' },
|
|
{ data: 'firstName' },
|
|
{ data: 'lastName' },
|
|
{ data: 'role' },
|
|
{ data: 'email' },
|
|
{
|
|
data: 'status',
|
|
render: function(data) {
|
|
return `<span class="badge badge-${data === 'Active' ? 'success' : 'danger'}">${data}</span>`;
|
|
}
|
|
}
|
|
]
|
|
});
|
|
|
|
// Handle form submissions
|
|
handleFormSubmission({
|
|
addRoute: '{{ route("user-management.store") }}',
|
|
editRoute: '{{ route("user-management.update", ":id") }}',
|
|
deleteRoute: '{{ route("user-management.destroy", ":id") }}',
|
|
dataTable: dataTable,
|
|
validation: {
|
|
username: {
|
|
required: true,
|
|
minlength: 3
|
|
},
|
|
email: {
|
|
required: true,
|
|
email: true
|
|
},
|
|
password: {
|
|
required: function() {
|
|
return !$('#editForm').length; // Required only for new users
|
|
},
|
|
minlength: 8
|
|
}
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
@endpush |