Fix: updated AdminController with pagination

This commit is contained in:
Kwesi Banson Jnr 2026-03-10 11:25:36 +00:00
parent ea1713cb14
commit 0d39327ee2
5 changed files with 144 additions and 1 deletions

View File

@ -4,6 +4,8 @@ namespace App\Http\Controllers;
use App\Utilities\ApiCalls; use App\Utilities\ApiCalls;
use Session; use Session;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
class AdminController extends Controller class AdminController extends Controller
{ {
@ -24,6 +26,58 @@ class AdminController extends Controller
return redirect->back(); return redirect->back();
} }
// 2. Define pagination parameters
$perPage = 10;
$currentPage = LengthAwarePaginator::resolveCurrentPage() ?: 1;
$offset = ($currentPage - 1) * $perPage;
// 3. Slice the array to get the items for the current page
$currentPageItems = array_slice($users_arr['data'], $offset, $perPage);
// 4. Create the LengthAwarePaginator instance
$paginatedItems = new LengthAwarePaginator(
$currentPageItems, // Items for the current page
count($users_arr['data']), // Total number of items
$perPage, // Items per page
$currentPage, // Current page number
['path' => request()->url(), 'query' => request()->query()] // Options to preserve query strings and path
);
$user_type_arr = [
'district_user' => 'District User',
'regional_user' => 'Regional User',
'national_user' => 'National User'
];
$data = [
'page_title' => 'User Admin',
'users_arr' => $users_arr['data'],
'regions_arr' => $regions_arr['data'],
'user_type_arr' => $user_type_arr,
'items' => $paginatedItems
];
// dump($data);
// 5. Pass the paginator instance to your view
return view('admin.paginated', $data);
// return view('admin.home', $data);
}
public function indexOld(){
$users_url = "user_mgt/get_all_users.php";
$data = ['api_token' => env('LUPMISAPIKEY')];
$result = ApiCalls::CurlPost(json_encode($data), $users_url);
$users_arr = json_decode($result, true);
if ($users_arr['success'] == false) {
return redirect->back();
}
$regions_url = "user_mgt/get_all_regions.php";
$data = ['api_token' => env('LUPMISAPIKEY')];
$result = ApiCalls::CurlPost(json_encode($data), $regions_url);
$regions_arr = json_decode($result, true);
if ($regions_arr['success'] == false) {
return redirect->back();
}
$user_type_arr = [ $user_type_arr = [
'district_user' => 'District User', 'district_user' => 'District User',
'regional_user' => 'Regional User', 'regional_user' => 'Regional User',

View File

@ -4,6 +4,7 @@ namespace App\Providers;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\URL; use Illuminate\Support\Facades\URL;
use Illuminate\Pagination\Paginator; // Import the Paginator class
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
{ {
@ -15,5 +16,6 @@ class AppServiceProvider extends ServiceProvider
if (config('app.env') === 'production') { if (config('app.env') === 'production') {
URL::forceScheme('https'); URL::forceScheme('https');
} }
Paginator::useBootstrap();
} }
} }

View File

@ -0,0 +1,85 @@
@extends('layouts.master')
@section('page-title')
Admin | {{ $page_title }}
@endsection
@section('page-css')
<link rel="stylesheet" href="{{ url('public/assets/libs/select2/dist/css/select2.css') }}">
@endsection
@section('page-content')
@include('admin.partials.create-user')
@include('admin.partials.edit-user')
@include('admin.partials.view-user')
@include('layouts.partials.navbar')
<div class="container py-4">
<div class="main">
<div class="row">
<div class="col-md-12">
<h3>Users</h3>
<!-- <a href="" class="float-end">Add User</a> -->
<div class="float-end pb-2" >
<button type="button" class="btn btn-warning btn-sm" data-bs-toggle="modal" data-bs-target="#addUserModal">
Add User</button>
</div>
<table class="table table-hover table-bordered table-condensed">
<thead class="">
<tr class="table-active">
<th scope="col">Fullname</th>
<th scope="col">Username</th>
<th scope="col">Email</th>
<th scope="col">Phone</th>
<th scope="col">Position</th>
<th scope="col">Allowed Apps</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
<?php if (count($items) < 1): ?>
<tr>
<td colspan="7">No users found</td>
</tr>
<?php else: ?>
<?php foreach ($items as $row): ?>
<?php $ua_id = $row['ua_id']; ?>
<tr>
<td><?php echo $row['full_name'] ?></td>
<td><?php echo $row['username'] ?></td>
<td><?php echo $row['email'] ?></td>
<td><?php echo $row['phone'] ?></td>
<td><?php echo $row['ua_position'] ?></td>
<td><?php echo $row['allowed_apps'] ?></td>
<td>
@csrf
<input type="hidden" class="userIdinput" value="<?php echo $row['user_id'] ?>" name="userId">
<!-- <a href="" data-bs-toggle="modal" data-bs-target="#viewUserModal" ><img src="{{ url('public/assets/libs/bootstrap-icons/eye.svg') }}" alt="view icon" width="16" height="16"></a> -->
<a href="" class="editUserBtn" data-bs-toggle="modal" data-bs-target="#editUserModal"><img src="{{ url('public/assets/libs/bootstrap-icons/pencil-square.svg') }}" alt="edit icon" width="16" height="16"></a>
</td>
</tr>
<?php endforeach ?>
{{ $items->links() }}
<?php endif; ?>
</tbody>
</table>
</div>
</div>
</div>
<footer class="py-5">
<div class="row">
</div>
</footer>
</div>
@endsection
@section('page-js')
<script src="{{ url('public/assets/libs/select2/dist/js/select2.full.min.js') }}" type="text/javascript" ></script>
<script src="{{ url('public/assets/js/usermgt.js') }}" type="text/javascript" ></script>
@endsection

View File

@ -43,7 +43,7 @@
</div> </div>
</div> </div>
<div class="row mb-3"> <div class="row mb-3">
<label for="processingFee" class="form-label fw-bold text-primary">Processing Fee *</label> <label for="processingFee" class="form-label fw-bold text-primary">Permit Fee *</label>
<input type="text" name="processing_fees" id="processingFee" class="form-control"> <input type="text" name="processing_fees" id="processingFee" class="form-control">
</div> </div>
<div class="row mb-3"> <div class="row mb-3">

View File

@ -23,6 +23,8 @@ Auth::routes([
Route::get('/view-pdf/{filename}', [App\Http\Controllers\PermitsController::class, 'viewPdf'])->name('view.pdf'); Route::get('/view-pdf/{filename}', [App\Http\Controllers\PermitsController::class, 'viewPdf'])->name('view.pdf');
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home'); Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/test', [App\Http\Controllers\AdminController::class, 'indexNew'])->name('test');
Route::get('/sendsms', [App\Http\Controllers\UtilityController::class, 'sendSms'])->name('sendsms'); Route::get('/sendsms', [App\Http\Controllers\UtilityController::class, 'sendSms'])->name('sendsms');
Route::get('/user-login', [App\Http\Controllers\UserloginController::class, 'index']); Route::get('/user-login', [App\Http\Controllers\UserloginController::class, 'index']);