Fix: added user profile and bug fixes

This commit is contained in:
Kwesi Banson Jnr 2026-03-12 10:16:57 +00:00
parent 42244b6c4b
commit 629dd5e726
11 changed files with 227 additions and 23 deletions

View File

@ -17,7 +17,7 @@ class PermitsController extends Controller
'api_token' => env('LUPMISAPIKEY')
]);
$result = ApiCalls::CurlPost($data, $url);
// dump($result);
// dd($result);
$result = json_decode($result, true);
// dd(is_array($result['data']));

View File

@ -57,7 +57,26 @@ class UsersController extends Controller
];
return view('admin.user-show', $data);
}
public function getprofile_json(){
$user_id = session('current_user.user_id');
$url = "user_mgt/get_user_by_user_id.php";
// dd($user_id);
$data = json_encode([
'user_id' => $user_id,
'api_token' => env('LUPMISAPIKEY')// make the API token a constant
]);
$result = ApiCalls::CurlPost($data, $url);
$result = json_decode($result, true);
if ($result['success'] == true) {
// code...
return response()->json(['code' => 1, 'user_details' => $result['data']]);
}
else{
return response()->json(['code' => 3, 'msg' => 'Your request could not be handled at this time']);
}
}
public function store(Request $request){
$url = "user_mgt/add_usr_user.php";
@ -112,6 +131,7 @@ class UsersController extends Controller
// return ['success' => true];
// dd($request->all());
$data = json_encode([
'full_name' => $request['full_name'],
'username' => $request['username'],
@ -120,28 +140,41 @@ class UsersController extends Controller
'email' => $request['email'],
'title' => $request['title'],
'allowed_apps' => implode(", ", $request['allowed_apps']),
// 'password_hint' => '',
'phone' => $request['phone'],
'gender' => $request['gender'],
'user_type' => 'District User',
'api_token' => env('LUPMISAPIKEY'),
]);
/*
if (json_decode($data) === null && json_last_error() !== JSON_ERROR_NONE) {
dump('not json');
} else {
// IS valid JSON
dump('is valid json');
}
*/
// dd($data);
$result = ApiCalls::CurlPost($data, $url);
$result = json_decode($result, true);
// dd($result);
if (request()->expectsJson()) {
return response()->json($result);
}
}
public function profileupdate(Request $request){
$url = "user_mgt/update_usr_user.php";
// return ['success' => true];
// dd($request->all());
$user_data = [
'full_name' => $request['full_name'],
'username' => $request['username'],
'user_id' => $request['user_id'],
'email' => $request['email'],
'phone' => $request['phone'],
'gender' => $request['gender'],
'api_token' => env('LUPMISAPIKEY'),
];
if ($request->filled('password')) {
$user_data['password'] = $request->password;
}
$data = json_encode($user_data);
$result = ApiCalls::CurlPost($data, $url);
$result = json_decode($result, true);
if (request()->expectsJson()) {
return response()->json($result);
}
}
}

View File

@ -20,3 +20,26 @@ add measurements to the backend for works department
216.55.137.19
1c46538c712e9b5b
ua_id": 10,
"user_id": "34ba702b-18f8-4d85-948d-8c55e8500f32",
"username": "hyhix",
"title": "Mr",
"full_name": "Myles Benton",
"ua_position": "district-works-head",
"email": "baduhupir@mailinator.com",
"phone": "233244678092",
"gender": "male",
"is_disabled": "true",
"is_logged_in": null,
"is_password_changed": "false",
"password_hint": "none",
"created_by_id": null,
"created_date": "2025-09-08T20:06:11.290737",
"updated_by_id": null,
"updated_date": "2025-09-08T20:06:11.290737",
"allowed_apps": "permit-tools",
"region_id": 3,
"district_id": 180,
"user_type": "District User"

View File

@ -138,6 +138,7 @@ $(document).ready(function(){
$('#successArea').text("");
$('#successArea').text("User successfully created!");
// location.reload();
alert('success');
setTimeout(function() {
location.reload(); // Reloads the current page
}, 1500);

View File

@ -100,7 +100,7 @@
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-bs-dismiss="modal">Close</button>
<!-- <button type="button" class="btn btn-danger" data-bs-dismiss="modal">Close</button> -->
</div>
</div>
</div>

View File

@ -93,7 +93,7 @@
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-bs-dismiss="modal">Close</button>
<!-- <button type="button" class="btn btn-danger" data-bs-dismiss="modal">Close</button> -->
</div>
</div>

View File

@ -0,0 +1,52 @@
<div class="modal fade" id="profileModal" tabindex="-1" aria-labelledby="profileModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="profileModalLabel">User Profile</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="alert alert-success d-none" id="successArea">Heere at the wall</div>
<div class="alert alert-danger d-none" id="errorArea">Heere at the wall</div>
<form action="" method="POST" id="userProfileForm">
@csrf
<input type="hidden" name="user_id" class="userId">
<div class="mb-3">
<label for="name" class="form-label">Fullname</label>
<input type="text" class="form-control userFullName" name="full_name" id="userName" value="">
</div>
<div class="mb-3">
<label for="name" class="form-label">Name</label>
<input type="text" class="form-control userName" name="username" id="username" value="">
</div>
<div class="mb-3">
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control userEmail" name="email" id="email" value="">
</div>
<div class="mb-3">
<label for="phone" class="form-label">Phone</label>
<input type="text" class="form-control userPhone" name="phone" id="phone" value="">
</div>
<div class="mb-3">
<label for="designation" class="form-label">Designation</label>
<input type="text" class="form-control userDesignation" name="ua_position" id="designation" value="">
</div>
<div class="mb-3">
<label for="designation" class="form-label">Password</label>
<input type="text" class="form-control userPassword" name="password" id="password" value="" placeholder="Enter a new password to reset">
</div>
<div class="mb-3">
<label for="dateAdded" class="form-label">Date Added</label>
<input type="text" class="form-control userDateAdded" id="dateAdded" value="" readonly>
</div>
<button type="button" class="btn btn-primary" id="profileModalSubmitBtn">Update</button>
</form>
</div>
<div class="modal-footer">
<!-- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button> -->
</div>
</div>
</div>
</div>

View File

@ -21,13 +21,15 @@
<link rel="stylesheet" href="{{ url('public/assets/css/l4l.css') }}" rel="stylesheet">
<link rel="stylesheet" href="{{ url('public/assets/css/styles.css') }}" rel="stylesheet">
<link rel="stylesheet" href="{{ url('public/assets/libs/fontawesome-free-7.1.0-web/css/all.min.css') }}" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css">
<link rel="stylesheet" href="{{ url('public/assets/libs/jquery-confirm/jquery-confirm.min.css') }}" type="text/css">
@yield('page-css')
<script type="text/javascript">
var base_url = "{!! url('/') !!}";
</script>
</head>
@include('admin.partials.profile')
<!-- <body class="bg-gradient-primary"> -->
<body class="bg-light">
@ -41,7 +43,7 @@
<!-- <small class="text-muted">Municipality</small> -->
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="{{ url('users', session('current_user.ua_id')) }}">Profile</a></li>
<li><a class="dropdown-item profileLink" >Profile</a></li>
<li><a class="dropdown-item" href="/landing">Landing Page</a></li>
<li><a class="dropdown-item" href="#">Settings</a></li>
<li><hr class="dropdown-divider"></li>
@ -57,6 +59,96 @@
<script src="{{ url('public/assets/libs/ol/ol.js') }}" type="text/javascript" ></script> <!-- ol6.15.1 -->
<script src="{{ url('public/assets/libs/ol/ol-ext.js') }}" type="text/javascript" ></script>
<script src="{{ url('public/assets/libs/fontawesome-free-7.1.0-web/js/all.min.js') }}"></script>
<script src="{{ url('public/assets/libs/jquery-confirm/jquery-confirm.min.js') }}"></script>
<script>
$(document).ready(function(){
$('.profileLink').click(function(evt){
evt.preventDefault();
$.ajax({
type: "GET",
url: base_url + '/users/getprofile',
processData: false,
contentType: false,
async: false,
success: function (data){
console.log(data);
if (data.code === 1) {
console.log(data['user_details']);
$('.userId').val(data['user_details']['user_id']);
$('.userName').val(data['user_details']['username']);
$('.userFullName').val(data['user_details']['full_name']);
$('.userEmail').val(data['user_details']['email']);
$('.userPhone').val(data['user_details']['phone']);
$('.userDesignation').val(data['user_details']['ua_position']);
$('.userDateAdded').val(data['user_details']['created_date']);
// $('.userEmail').val(data['user_details']['email']);
$('#profileModal').modal('show');
}
else if (data.code > 1) {
$.alert({
title: 'Alert!',
content: data.msg,
});
}
else {
$.alert({
title: 'Alert!',
content: 'Your request could not be handled. Try again !',
});
}
}
});
});
$('#profileModalSubmitBtnQQ').click(function(evt){
evt.preventDefault(evt);
$('#successArea').addClass('d-none');
$('#errorsArea').removeClass('d-none');
var formData = new FormData($('#userProfileForm')[0]);
$.ajax({
url: base_url + '/profileupdate',
type: 'POST',
data: formData,
processData: false,
contentType: false,
beforeSend: function() {
$('#successArea').text("");
$('#successArea').text("Please wait ... profile update in progress!");
},
success: function(data) {
if (data['success'] == true) {
$('#successArea').removeClass('d-none');
$('#errorsArea').addClass('d-none');
$('#successArea').text("");
$('#successArea').text("Profile successfully updated!");
// location.reload();
setTimeout(function() {
//location.reload(); // Reloads the current page
}, 1500);
}
else{
$('#successArea').addClass('d-none');
$('#errorArea').removeClass('d-none');
$('#errorArea').text("");
$('#errorArea').text("Profile could not be update!");
}
},
error: function(xhr, status, error) {
console.error('Error:', error);
$('#successArea').text(error);
$('#successArea').text(error);
}
});
});
});
</script>
@yield('page-js')
</body>

View File

@ -8,8 +8,6 @@
@endsection
@section('page-content')
@include('layouts.partials.permits-navbar')
<div class="container mt-4">
<div class="row g-3 settings-grid">
<!-- General Settings Card -->

View File

@ -70,10 +70,10 @@
</div>
<button class="w-100 btn lupmis-btn-primary btn-lg" type="submit">Sign In</button>
</form>
<div class="m-3 text-center request-account">
<!-- <div class="m-3 text-center request-account">
<p class="m-0">Don't have an account?</p>
<a class="lupmis-primary-text-500" href="#">Request an account</a>
</div>
</div> -->
</div>
</div>
</div>

View File

@ -39,17 +39,22 @@ Route::middleware([CheckBackendSession::class])->group(function () {
Route::get('/landing', [App\Http\Controllers\LandingpageController::class, 'index']);
Route::get('/admin/home', [App\Http\Controllers\AdminController::class, 'index']);
Route::get('/admin/search', [App\Http\Controllers\AdminController::class, 'index']);
Route::get('/admin/districtparams', [App\Http\Controllers\AdminController::class, 'districtparams']);
Route::get('/admin/luspaparams', [App\Http\Controllers\AdminController::class, 'luspaparams']);
Route::get('/admin/reports', [App\Http\Controllers\AdminController::class, 'reports']);
Route::get('/admin/districts/{region_id}', [App\Http\Controllers\AdminController::class, 'districts']);
Route::get('/users/getprofile', [App\Http\Controllers\UsersController::class, 'getprofile_json']);
Route::get('/users/{user_id}', [App\Http\Controllers\UsersController::class, 'show']);
Route::post('/users', [App\Http\Controllers\UsersController::class, 'store']);
Route::post('/users/update', [App\Http\Controllers\UsersController::class, 'update']);
Route::post('/profileupdate', [App\Http\Controllers\UsersController::class, 'profileupdate']);
Route::post('/userupdate', [App\Http\Controllers\UsersController::class, 'update']);
Route::post('/users/update', [App\Http\Controllers\UsersController::class, 'update']);
Route::get('/users/edit/{user_id}', [App\Http\Controllers\UsersController::class, 'edit']);