From 80f0bf24d73746291baff1f7ab6ce1eb1c39ac4a Mon Sep 17 00:00:00 2001 From: Kwesi Banson Jnr Date: Thu, 2 Jul 2026 11:39:14 +0000 Subject: [PATCH] Fix : permit and admin page modifications --- .../app/Http/Controllers/AdminController.php | 36 ++ .../Http/Controllers/PermitsController.php | 3 +- .../Http/Controllers/UserloginController.php | 3 +- .../app/Http/Controllers/UsersController.php | 133 ++-- php_code/app/Models/DistrictSetting.php | 28 + php_code/config/app.php | 2 +- php_code/config/services.php | 3 + ..._162740_create_district_settings_table.php | 43 ++ ...district_id_to_district_settings_table.php | 35 + php_code/env_parts.md | 8 + php_code/info.md | 5 +- php_code/lupmis | Bin 102400 -> 0 bytes php_code/public/assets/js/add_edit_user.js | 7 +- php_code/public/assets/js/all_pages.js | 268 +++++--- php_code/public/assets/js/permit_comments.js | 3 +- php_code/public/assets/js/user_mgt_new.js | 1 + php_code/public/assets/js/usermgt.js | 61 +- .../views/admin/district_settings.blade.php | 82 ++- .../resources/views/admin/home_cats.blade.php | 15 +- .../admin/partials/create-user.blade.php | 26 +- ...modal.blade.php => edit-modalbk.blade.php} | 0 .../views/admin/partials/edit-user.blade.php | 46 +- .../views/admin/partials/profile.blade.php | 6 +- .../views/emails/reset-link.blade.php | 7 +- .../resources/views/layouts/master.blade.php | 4 +- .../views/permits/show-tabbed.blade copy.php | 538 ++++++++++++++++ .../views/permits/show-tabbed.blade.php | 607 ++++++++++++++++++ .../permits/show_20-06-2026-6-56pm.blade.php | 96 +-- php_code/routes/web.php | 4 + 29 files changed, 1793 insertions(+), 277 deletions(-) create mode 100644 php_code/app/Models/DistrictSetting.php create mode 100644 php_code/database/migrations/2026_07_01_162740_create_district_settings_table.php create mode 100644 php_code/database/migrations/2026_07_01_165819_add_district_id_to_district_settings_table.php create mode 100644 php_code/env_parts.md delete mode 100644 php_code/lupmis rename php_code/resources/views/admin/partials/{edit-modal.blade.php => edit-modalbk.blade.php} (100%) create mode 100644 php_code/resources/views/permits/show-tabbed.blade copy.php create mode 100644 php_code/resources/views/permits/show-tabbed.blade.php diff --git a/php_code/app/Http/Controllers/AdminController.php b/php_code/app/Http/Controllers/AdminController.php index 9a930e35..110b7c4f 100644 --- a/php_code/app/Http/Controllers/AdminController.php +++ b/php_code/app/Http/Controllers/AdminController.php @@ -30,6 +30,7 @@ class AdminController extends Controller $users_arr = json_decode($result, true); if ($users_arr == null || $users_arr['success'] == false) { + \Log::info(session('current_user.username') . " tried accessing Admin/home and got empty or no success users_arr"); return redirect()->back()->withErrors('Your request cannot be handled at this time. Try again later'); } @@ -39,6 +40,7 @@ class AdminController extends Controller $result = ApiCalls::CurlPost(json_encode($data), $regions_url); $regions_arr = json_decode($result, true); if ($regions_arr == null || $regions_arr['success'] == false) { + \Log::info(session('current_user.username') . " tried accessing Admin/home and got empty or no success region"); return redirect()->back()->withErrors('Your request cannot be handled at this time. Try again later'); } @@ -234,11 +236,44 @@ class AdminController extends Controller $result = json_decode($result, true); dd($result); */ + $data = [ 'page_title' => "District Parameters" ]; return view('admin.district_params', $data); } + public function getDistrictSettingsJson() + { + $districtid = session('current_user.district_id'); + + $settings = Models\DistrictSetting::where('district_id', $districtid)->first(); + + return response()->json([ + 'success' => true, + 'data' => $settings + ]); + } + public function updateDistrictSettings(Request $request) + { + $validated = $request->validate([ + 'region_name' => 'required|string', + 'district_name' => 'required|string', + 'assembly_type' => 'required|in:district,municipal,metropolitan', + 'abbreviation' => 'required|string|max:20', + 'contact_phone' => 'required|string|max:20', + 'contact_email' => 'required|email', + 'outgoing_email' => 'required|email', + 'display_name' => 'required|string', + 'sms_sender_name' => 'required|string|max:20', + ]); + $districtid = session('current_user.district_id'); + Models\DistrictSetting::updateOrCreate(['district_id' => $districtid], $validated); + + return response()->json([ + 'success' => true, + 'message' => 'Settings saved successfully' + ]); + } public function luspaparams(){ $data = [ 'page_title' => "Page Under Development" @@ -252,6 +287,7 @@ class AdminController extends Controller return view('common.notready', $data); } public function districtsettings(){ + $data = [ 'page_title' => "District Settings" ]; diff --git a/php_code/app/Http/Controllers/PermitsController.php b/php_code/app/Http/Controllers/PermitsController.php index f078a827..bbab71ca 100644 --- a/php_code/app/Http/Controllers/PermitsController.php +++ b/php_code/app/Http/Controllers/PermitsController.php @@ -103,7 +103,8 @@ class PermitsController extends Controller 'allowed_users_to_comment' => $allowed_users_to_comment ]; // return view('permits.show_20-06-2026-6-56pm', $data); - return view('permits.show', $data); + // return view('permits.show', $data); + return view('permits.show-tabbed', $data); } public function statusUpdate($id){ diff --git a/php_code/app/Http/Controllers/UserloginController.php b/php_code/app/Http/Controllers/UserloginController.php index 45a94e8a..790af8e9 100644 --- a/php_code/app/Http/Controllers/UserloginController.php +++ b/php_code/app/Http/Controllers/UserloginController.php @@ -29,14 +29,13 @@ class UserloginController extends Controller $data = ['user' => $request->username, 'pass' => $request->password, 'api_token' => env('LUPMISAPIKEY')]; $check_user = ApiCalls::CurlPost(json_encode($data), $check_user_url); - if($check_user == false){ return redirect("user-login")->withErrors(array("System not available at the moment. Try again later!"))->withInput(); } $result = json_decode($check_user, true); if($result['success'] == false){ - return redirect("user-login")->withErrors(array("Incorrect Email/Password. Check and try again!"))->withInput(); + return redirect("user-login")->withErrors(array("Incorrect Username/Password. Check and try again!"))->withInput(); } if($result['data']['is_disabled'] == true){ ##return redirect("user-login")->withErrors(array("Your Account has been disabled. Contact your administrator!"))->withInput(); diff --git a/php_code/app/Http/Controllers/UsersController.php b/php_code/app/Http/Controllers/UsersController.php index 6591dbac..07e52377 100644 --- a/php_code/app/Http/Controllers/UsersController.php +++ b/php_code/app/Http/Controllers/UsersController.php @@ -11,7 +11,7 @@ use App\Mail\PasswordResetMail; use Illuminate\Support\Str; use Illuminate\Validation\Rule; use App\Rules\GhanaPhoneRule; - +use Illuminate\Support\Facades\Hash; class UsersController extends Controller { @@ -28,7 +28,13 @@ class UsersController extends Controller return view('user-auth.reset', $data); } public function check_reset_email(Request $request){ - $url = "user_mgt/get_user_by_user_id.php"; + dd($request->all()); + // array:2 [▼ // app/Http/Controllers/UsersController.php:31 + // "_token" => "ihqMhlBqQp6WP0qNr6mx9ddqF1szemeyHbjcsFtS" + // "email" => "kwesi_banson@hotmail.com" + // ] + + $url = "user_mgt/get_user_by_email.php"; $user_id = "34ba702b-18f8-4d85-948d-8c55e8500f32"; $data = json_encode([ 'user_id' => "34ba702b-18f8-4d85-948d-8c55e8500f32",// $id, @@ -59,7 +65,6 @@ class UsersController extends Controller public function show_new_passform(Request $request){ // code...show_new_passform // dd('foo bar show new pass'); - dump($request->all()); $data = [ 'page_title' => 'New Password Form' ]; @@ -69,12 +74,34 @@ class UsersController extends Controller public function handle_reset(Request $request){ // code...show_new_passform // dd('foo bar handle reset'); - + /* + { + "username": "string", + "pass": "string", + "user_id": "string", + "api_token": "string" + } + */ + $url = "user_mgt/update_usr_user.php"; + $user_data = [ + + 'user_id' => $request['user_id'], + 'api_token' => env('LUPMISAPIKEY'), + ]; + $data = json_encode($user_data); + $result = ApiCalls::CurlPost($data, $url); + $result = json_decode($result, true); + // dd($result); + // return response()->json($result); + if ($request->expectsJson()) { + return response()->json($result); + } return redirect(url('reset-success')); //get } public function reset_success(Request $request){ // code...show_new_passform // dd('foo bar handle reset'); + $data = [ 'page_title' => 'New Password Success' ]; @@ -151,15 +178,15 @@ class UsersController extends Controller 'allowed_apps'=> 'required|array', 'user_status' => 'required|string', 'gender' => 'required|in:male,female', - 'districtid' => [ + 'district_id' => [ Rule::requiredIf(function () use ($request) { - return in_array($request->user_type, ['district_user', 'regional_luspa']); + return in_array($request->user_type, ['district_user']); }), 'integer' ], 'region_id' => [ Rule::requiredIf(function () use ($request) { - return in_array($request->user_type, ['regional_luspa']); + return in_array($request->user_type, ['regional_luspa', 'national_luspa']); }), 'integer' ], @@ -200,7 +227,7 @@ class UsersController extends Controller 'pass' => $password, 'is_disabled' => false, 'region_id' => $request['region_id'], - 'district_id' => $request['districtid'], + 'district_id' => $request['district_id'], 'api_token' => env('LUPMISAPIKEY'), ]); // dd($data); @@ -234,21 +261,21 @@ class UsersController extends Controller } } - public function update(Request $request){ + $url = "user_mgt/update_usr_user.php"; - - // return ['success' => true]; - // dd($request->all()); + $userId = $request->input('user_id'); $this->validate($request, [ 'full_name' => 'required|string|max:255', - 'username' => 'required|string|max:255|unique:users,username', + 'username' => 'required|string|max:20|', 'ua_position' => 'required|string', 'allowed_apps'=> 'required|array', - 'user_status' => 'required|string', + 'user_status' => 'required|string', + 'district_id' => 'required|integer', + 'region_id' => 'required|integer', 'gender' => 'required|in:male,female', - // 'districtid' => 'required|integer', - 'districtid' => [ + /* + 'district_id' => [ Rule::requiredIf(function () use ($request) { return in_array($request->user_type, ['district_user']); }), @@ -260,60 +287,71 @@ class UsersController extends Controller }), 'integer' ], + */ 'user_type' => 'required|string', 'email' => 'required|email|unique:users,email', 'phone' => ['required', new GhanaPhoneRule], ], [ 'full_name.required' => 'Please provide the full name.', 'username.required' => 'A username is required.', - 'username.unique' => 'This username is already taken.', 'ua_position.required' => 'Position is mandatory.', 'allowed_apps.required'=> 'Select at least one application.', 'gender.required' => 'Gender is required.', 'district_id.required' => 'District must be selected.', 'region_id.required' => 'Region is required', 'user_type.required' => 'User type is required.', - 'user_status.required' => 'Please select user status.', + 'user_status.required' => 'Please select user status.', 'email.required' => 'Email address is required.', 'email.email' => 'Please enter a valid email address.', 'email.unique' => 'This email is already registered.', 'phone.required' => 'Phone number is required.', ]); $is_disabled = ($request->user_status == 'active') ? 'false' : 'true'; - $user_data = [ - 'full_name' => $request['full_name'], - 'username' => $request['username'], - 'ua_position' => $request['ua_position'], - 'user_id' => $request['user_id'], - 'email' => $request['email'], - 'title' => $request['title'], - 'allowed_apps' => implode(", ", $request['allowed_apps']), - 'phone' => str_replace('+', '',$request['phone']), - 'gender' => $request['gender'], - 'user_type' => $request['user_type'], - 'api_token' => env('LUPMISAPIKEY'), + $userData = [ + 'user_id' => $request->user_id, + 'full_name' => $request->full_name, + 'username' => $request->username, + 'ua_position' => $request->ua_position, + 'email' => $request->email, + 'title' => $request->title, + + 'allowed_apps' => implode(", ", $request->allowed_apps), + 'phone' => str_replace('+', '', $request->phone), + + 'gender' => $request->gender, + 'user_type' => $request->user_type, 'is_disabled' => $is_disabled, - // 'region_id' => $request['region_id'], - 'district_id' => $request['districtid'], + 'district_id' => $request->district_id, + 'region_id' => $request->region_id, + 'api_token' => config('services.lupmis.api_key'), //env('LUPMISAPIKEY'), ]; - + + if ($request->has('expire_password')) { - $user_data['is_password_changed'] = 'NO'; + #$user_data['is_password_changed'] = 'YES'; + #$reset_link = env('APP_URL') . "/reset-auth/" . $request->user_id; + #Mail::to($recipientEmail)->send(new PasswordResetMail($request->fullname, $reset_link)); } - $data = json_encode($user_data); - $result = ApiCalls::CurlPost($data, $url); - $result = json_decode($result, true); - // dd($result); - // return response()->json($result); - if ($request->expectsJson()) { - return response()->json($result); + if (config('app.env') === 'local' && $request->filled('reset_password')) { + $reset_url = "user_mgt/reset_user_password.php"; + $reset_data["api_token"] = config('services.lupmis.api_key'); + $reset_data['user_id'] = $request->user_id; + $reset_data['pass'] = $request->reset_password; + $data = json_encode($reset_data); + $retval = ApiCalls::CurlPost($data, $reset_url); + $retval = json_decode($retval, true); } + + $result = ApiCalls::CurlPost(json_encode($userData), $url); + $decodedResult = json_decode($result, true); + + return response()->json($decodedResult ?? ['error' => 'Invalid API Response']); } + + 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'], @@ -325,6 +363,13 @@ class UsersController extends Controller ]; if ($request->filled('password')) { $user_data['password'] = $request->password; + $reset_url = "user_mgt/reset_user_password.php"; + $reset_data["api_token"] = env('LUPMISAPIKEY'); + $reset_data['user_id'] = $request->user_id; + $reset_data['pass'] = $request->password; + $data = json_encode($reset_data); + $retval = ApiCalls::CurlPost($reset_data, $reset_url); + $retval = json_decode($retval, true); } $data = json_encode($user_data); diff --git a/php_code/app/Models/DistrictSetting.php b/php_code/app/Models/DistrictSetting.php new file mode 100644 index 00000000..67d313f1 --- /dev/null +++ b/php_code/app/Models/DistrictSetting.php @@ -0,0 +1,28 @@ + env('APP_NAME', 'Laravel'), + 'name' => env('APP_NAME', 'LUPMIS'), /* |-------------------------------------------------------------------------- diff --git a/php_code/config/services.php b/php_code/config/services.php index 27a36175..daa430a7 100644 --- a/php_code/config/services.php +++ b/php_code/config/services.php @@ -27,6 +27,9 @@ return [ 'resend' => [ 'key' => env('RESEND_KEY'), ], + 'lupmis' => [ + 'api_key' => env('LUPMISAPIKEY'), + ], 'slack' => [ 'notifications' => [ diff --git a/php_code/database/migrations/2026_07_01_162740_create_district_settings_table.php b/php_code/database/migrations/2026_07_01_162740_create_district_settings_table.php new file mode 100644 index 00000000..b7a7c8ca --- /dev/null +++ b/php_code/database/migrations/2026_07_01_162740_create_district_settings_table.php @@ -0,0 +1,43 @@ +id(); + + // Assembly Profile + $table->string('region_name'); + $table->string('district_name'); + $table->enum('assembly_type', ['district', 'municipal', 'metropolitan']); + $table->string('abbreviation', 20); + $table->string('contact_phone', 20); + $table->string('contact_email'); + + // Email Notifications + $table->string('outgoing_email'); + $table->string('display_name'); + + // SMS Notifications + $table->string('sms_sender_name', 20); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('district_settings'); + } +}; \ No newline at end of file diff --git a/php_code/database/migrations/2026_07_01_165819_add_district_id_to_district_settings_table.php b/php_code/database/migrations/2026_07_01_165819_add_district_id_to_district_settings_table.php new file mode 100644 index 00000000..09f85dbe --- /dev/null +++ b/php_code/database/migrations/2026_07_01_165819_add_district_id_to_district_settings_table.php @@ -0,0 +1,35 @@ +unsignedBigInteger('district_id')->nullable()->after('id'); + + // PRO-TIP: If you actually have a 'districts' table and want a strict foreign key relationship, + // comment out the line above and use this line instead: + // $table->foreignId('district_id')->nullable()->after('id')->constrained('districts')->cascadeOnDelete(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('district_settings', function (Blueprint $table) { + // Safely removes the column if you ever roll back this migration + $table->dropColumn('district_id'); + }); + } +}; \ No newline at end of file diff --git a/php_code/env_parts.md b/php_code/env_parts.md new file mode 100644 index 00000000..b3f6fa9e --- /dev/null +++ b/php_code/env_parts.md @@ -0,0 +1,8 @@ +MAIL_MAILER=log +MAIL_HOST=smtp.gmail.com +MAIL_PORT=465 +MAIL_USERNAME=lupmisredevelopment@gmail.com +MAIL_PASSWORD=nemdlwqrkrnxavdw +MAIL_ENCRYPTION=ssl +MAIL_FROM_ADDRESS=lupmisredevelopment@gmail.com +MAIL_FROM_NAME=LUPMIS \ No newline at end of file diff --git a/php_code/info.md b/php_code/info.md index 6b416462..69a5289f 100644 --- a/php_code/info.md +++ b/php_code/info.md @@ -1,6 +1,7 @@ # Acounts - assiamah/win -- kwesilupmis/7aa0478bce +- kwesilupmis/7aa0478bce/virgin200 +- kwesibanson/virgin200 Username: saxiquzipa/lwCDfAMaBy @@ -76,5 +77,3 @@ add_header Content-Security-Policy "frame-ancestors 'self' https://lupmis.houseb } php artisan make:model UserGroupMatrix -m - - diff --git a/php_code/lupmis b/php_code/lupmis deleted file mode 100644 index 19d456175a0d9d16c3e5b6246646a0e0ad1510f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102400 zcmeI(&u`Oa7{GCxrgeW%0+eD9LNe*55y7?;#HtEy8e^4K4H(d(4W`L+lNT@~PKcdC z(Kw{Qj+6KscHJMc!_K?yy2DP}Y1(bCU)zn{I0dfOH|h_^e*OA=KhN{Nw&Ql~#uYaZ z*4=iuPanWTbD9E)3e>)Ps#Td!-d zGKi~tU1L>Q*-q!EVLn^dw~xQJoz6y6*uhpu{s^trTeqdRIG**h`?D96$vdmEFUMJi&ySlo0#4s-|==~Ea zv+g=>QO%@8!g=<7_qCj?AasffY~cqLW`$-2QYB zcQVOph`Ua&8CaKZ-MqPSZQWj9y}Gite(CD<>h|}C6xB;ZQOV%g8%|KaFZ|Tv;Ve~Z zOG1^CyHRT9YzW$coV3F<7z~(HN_T|UaJ_q@3uGddjJQ+LMC=w2@Xa; z-SO(88K!247gs3Dr87P6Fs|qN_jm7=&J~qK)#`=A6XxoIuBk!bKa%55*wLgQPhw#= z6LEVn^=5AE;Dq`9yzZ;rLM>ZmOElYt?+?XMiBDm>i$voiTpI={%CzdXUN+46dHuOa z!X3uhKR6U%wbNSP_?r1h^!rEop z9M~&uQVp^fQ*X-s@{D1crrv)x=$+cWKc`1~^<~p(=FLrS-;wJ63G-ufRQ^Y8kGe4X z!?azR5h)dy4Z zB0(N~CVO;wa_q{PBzxTH5y#CG9zJ5cSzdL0Z5ZasllpUAg(+!O@_RBHtYmfA=x|Wx z46vl;WEjZ_%;k0JJ$ds2WJ*2sX8^%vWXj>d#fK#PMDWZ zjtY0u6MHdPn(BWtZkS6;`t}J$(Q$nLal6~F!@(cKSM|9oC$dPnWkNC0lGDWwL8|r9 zRbuXz^b9h%D9Uy>s<&EQotQAcTN>5l+-BK}xvLF%qca)a>^LRET$F>@P^lP(Oy1ap z-H0!m)SB_Q|Jgf(;lfcGs`Ueo>h|22nkZh3D|WS6{U~KwclLYhv%$zKfYAYo`nV~& z?p-&Y_6Pcv#4I;r;RSYULk`vGz9yCN`LV3zUb0@_H({PRqu-83WpuLkg*>mxYlQgR zoxB~(IPKbaI_&&eSyY~Gbi+J#O5dJSb++7lU3DJt2TS`hHB|;1lJTCLG1B=r^1fnc z_gp4*bvJynt{%DH?!LI59epT@FzLIup zsNiC9jOZiPsHC1(vX+!opY22k5AXl=^52^L;)MVL2q1s}0tg_000IagfB*so5jdca zozi#yRKPEV_y6*b{&^vQ00IagfB*srAbzx~WB~#QAb?V@wYbKmY**5I_I{1Q0*~ z0R#}>`9C>;00IagfB*srAbwd400IagfB*srAb 1) { +// $.alert({ +// title: 'Alert!', +// content: data.msg, +// }); +// } +// else { +// $.alert({ +// title: 'Alert!', +// content: 'Your request could not be handled. Try again !', +// }); + +// } +// } +// }); + +// }); +// $('#profileModalSubmitBtnXX').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(); +// $.alert({ +// title: 'Alert!', +// content: 'Profile successfully updated!', +// }); +// setTimeout(function() { +// }, 2000); +// } +// else{ +// $('#successArea').addClass('d-none'); +// $('#errorArea').removeClass('d-none'); +// $('#errorArea').text(""); +// $('#errorArea').text("Profile could not be updated!"); +// $.alert({ +// title: 'Alert!', +// content: 'Profile could not updated!', +// }); +// } +// }, +// error: function(xhr, status, error) { +// console.error('Error:', error); +// $('#successArea').text(error); +// $('#successArea').text(error); +// $.alert({ +// title: 'Alert!', +// content: error, +// }); +// } +// }); +// }); +// }); + +$(document).ready(function() { + // Cache DOM elements that are manipulated frequently + const $successArea = $('#successArea'); + const $errorArea = $('#errorArea'); // Standardized ID to avoid the 'errorsArea' vs 'errorArea' typo + const $submitBtn = $('#profileModalSubmitBtn'); + + // GET: Fetch Profile + $('.profileLink').click(function(evt) { + evt.preventDefault(); + + $.ajax({ + type: "GET", + url: base_url + '/users/getprofile', + // Removed processData, contentType, and async: false + success: function(data) { + if (data.code === 1) { + const user = data.user_details; - } - else if (data.code > 1) { + $('.userId').val(user.user_id); + $('.userName').val(user.username); + $('.userFullName').val(user.full_name); + $('.userEmail').val(user.email); + $('.userPhone').val(user.phone); + $('.userDesignation').val(user.ua_position); + $('.userDateAdded').val(user.created_date); + + $('#profileModal').modal('show'); + } else if (data.code > 1) { $.alert({ title: 'Alert!', content: data.msg, }); - } - else { + } else { $.alert({ title: 'Alert!', - content: 'Your request could not be handled. Try again !', + content: 'Your request could not be handled. Try again!', }); + } + }, + error: function() { + $.alert({ + title: 'Error!', + content: 'Failed to connect to the server.', + }); + } + }); + }); - } - } - }); - - }); - $('#profileModalSubmitBtn').click(function(evt){ - evt.preventDefault(evt); - console.log('info'); - $('#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(); - $.alert({ - title: 'Alert!', - content: 'Profile successfully updated!', - }); - setTimeout(function() { - //location.reload(); // Reloads the current page - }, 2000); - } - else{ - $('#successArea').addClass('d-none'); - $('#errorArea').removeClass('d-none'); - $('#errorArea').text(""); - $('#errorArea').text("Profile could not be updated!"); - $.alert({ - title: 'Alert!', - content: 'Profile could not updated!', - }); - } - }, - error: function(xhr, status, error) { - console.error('Error:', error); - $('#successArea').text(error); - $('#successArea').text(error); + // POST: Update Profile + $submitBtn.click(function(evt) { + evt.preventDefault(); // Fixed: evt.preventDefault(evt) -> evt.preventDefault() + + // Reset message areas + $successArea.addClass('d-none').text(""); + $errorArea.addClass('d-none').text(""); + + // UI UX: Disable button to prevent double-clicks during AJAX + const originalBtnText = $submitBtn.text(); + $submitBtn.prop('disabled', true).text('Updating...'); + + let formData = new FormData($('#userProfileForm')[0]); + + $.ajax({ + url: base_url + '/profileupdate', + type: 'POST', + data: formData, + processData: false, + contentType: false, + // Assuming CSRF token is handled globally in $.ajaxSetup for Laravel + success: function(data) { + if (data.success == true) { + $successArea.removeClass('d-none').text("Profile successfully updated!"); + + $.alert({ + title: 'Success!', + content: 'Profile successfully updated!', + }); + + setTimeout(function() { + // location.reload(); + }, 2000); + } else { + $errorArea.removeClass('d-none').text("Profile could not be updated!"); + $.alert({ title: 'Alert!', - content: error, + content: 'Profile could not be updated!', }); } - }); + }, + error: function(xhr, status, error) { + console.error('Error:', error); + + // Fixed: The error message was previously being sent to the successArea + $errorArea.removeClass('d-none').text("An error occurred: " + error); + + $.alert({ + title: 'Alert!', + content: 'An error occurred: ' + error, + }); + }, + complete: function() { + // UI UX: Re-enable the button regardless of success or failure + $submitBtn.prop('disabled', false).text(originalBtnText); + } }); - }); \ No newline at end of file + }); +}); \ No newline at end of file diff --git a/php_code/public/assets/js/permit_comments.js b/php_code/public/assets/js/permit_comments.js index 4924c994..a689e1fc 100644 --- a/php_code/public/assets/js/permit_comments.js +++ b/php_code/public/assets/js/permit_comments.js @@ -1,10 +1,11 @@ $(document).ready(function(){ - console.log('inside comments'); const baseUrl = base_url + "/permits/getcomments"; fetchPermitApplicationComments(); $(".submitPermitCommentBtn").click(function (e) { e.preventDefault(); // let formData = $(this).serialize(); + + console.log('heere in permit comments'); var currentStatus = $('permitCurrentStatus').val(); diff --git a/php_code/public/assets/js/user_mgt_new.js b/php_code/public/assets/js/user_mgt_new.js index a2e4df69..dfcf0d0a 100644 --- a/php_code/public/assets/js/user_mgt_new.js +++ b/php_code/public/assets/js/user_mgt_new.js @@ -1,4 +1,5 @@ (function(){ + console.log('foo bar in new') $(document).on('keydown', function(e){ if (e.key === '/' && !$(e.target).is('input, textarea')) { e.preventDefault(); diff --git a/php_code/public/assets/js/usermgt.js b/php_code/public/assets/js/usermgt.js index 6ffabb91..0a88ce01 100644 --- a/php_code/public/assets/js/usermgt.js +++ b/php_code/public/assets/js/usermgt.js @@ -1,5 +1,5 @@ $(document).ready(function () { - +console.log('old js'); let iti; $('#addUserModal').on('shown.bs.modal', function () { @@ -163,35 +163,35 @@ $(document).ready(function () { var selectedValue = $("input[name='user_type']:checked").val(); const $dropdown = $("#uaPostionAdd"); - const optionsMap = { - district_user: [ - "PPD Head", "Works Head", "MIS", - "PPD Staff", "Works Staff", - "Devt Planning Officer", - "MCE", "DCE", - "Urban Roads Department Head", - "District Fire Officer", - "District Disaster Prevention Department", - "Head of District Health Department", - "Representative of the Lands Commission", - "Representative of the Environmental Protection Agency", - "Rep from Traditional Council", - "Chairman of the Works Sub Committee", - "Chairman of Development Sub Planning Committee", - "Nominated Elected Assembly Memebers" - ], - national_luspa: ["Director", "IT Head", "Staff"], - regional_luspa: ["Director", "Staff"] - - }; - $dropdown.empty(); - $dropdown.append(''); + const optionsMap = { + district_user: [ + "PPD Head", "Works Head", "MIS", + "PPD Staff", "Works Staff", + "Devt Planning Officer", + "MCE", "DCE", + "Urban Roads Department Head", + "District Fire Officer", + "District Disaster Prevention Department", + "Head of District Health Department", + "Representative of the Lands Commission", + "Representative of the Environmental Protection Agency", + "Rep from Traditional Council", + "Chairman of the Works Sub Committee", + "Chairman of Development Sub Planning Committee", + "Nominated Elected Assembly Memebers" + ], + national_luspa: ["Director", "IT Head", "Staff"], + regional_luspa: ["Director", "Staff"] + + }; + $dropdown.empty(); + $dropdown.append(''); - if (optionsMap['district_user']) { - $.each(optionsMap['district_user'], function(index, value) { - $dropdown.append($("").attr("value", value.toLowerCase()).text(value)); - }); - } + if (optionsMap['district_user']) { + $.each(optionsMap['district_user'], function(index, value) { + $dropdown.append($("").attr("value", value.toLowerCase()).text(value)); + }); + } $("input[name='user_type']").change(function() { var userValue = $(this).val(); @@ -357,8 +357,9 @@ $(document).ready(function () { }); - $("#editForm").submit(function(evt){ + $("#editFormPP").submit(function(evt){ evt.preventDefault(); + console.log('point in edit'); const $successArea = $("#editSuccessArea"); const $errorArea = $("#editErrorArea"); $('#editSuccessArea').addClass('d-none'); diff --git a/php_code/resources/views/admin/district_settings.blade.php b/php_code/resources/views/admin/district_settings.blade.php index 2b0474eb..d610ce22 100644 --- a/php_code/resources/views/admin/district_settings.blade.php +++ b/php_code/resources/views/admin/district_settings.blade.php @@ -18,8 +18,9 @@

Update these settings as needed

-
- @csrf
+ + @csrf +
Assembly Profile @@ -29,7 +30,7 @@
- +
@@ -99,8 +100,8 @@
- - + +
@@ -113,7 +114,76 @@ @section('page-js') @endsection \ No newline at end of file diff --git a/php_code/resources/views/admin/home_cats.blade.php b/php_code/resources/views/admin/home_cats.blade.php index 4a57d31b..d51cc97d 100644 --- a/php_code/resources/views/admin/home_cats.blade.php +++ b/php_code/resources/views/admin/home_cats.blade.php @@ -30,7 +30,6 @@ @section('page-content') @include('admin.partials.create-user') @include('admin.partials.edit-user') -@include('admin.partials.edit-modal') @include('admin.partials.move-user') @include('admin.partials.view-user') @include('layouts.partials.navbar') @@ -87,7 +86,7 @@
- +
@@ -127,7 +126,7 @@ {{ $user['email'] }} - {{ ucwords(str_replace('-', ' ', $user['ua_position'])) }} + {{ strtoupper(str_replace('-', ' ', $user['ua_position'])) }} {{ $status }} @@ -185,7 +184,7 @@ {{ $user['email'] }} - {{ ucwords(str_replace('-', ' ', $user['ua_position'])) }} + {{ strtoupper(str_replace('-', ' ', $user['ua_position'])) }} {{ $status }} @@ -242,7 +241,7 @@ {{ $user['email'] }} - {{ ucwords(str_replace('-', ' ', $user['ua_position'])) }} + {{ strtoupper(str_replace('-', ' ', $user['ua_position'])) }} {{ $status }} @@ -270,13 +269,7 @@ - - - - - @endsection - @section('page-js') diff --git a/php_code/resources/views/admin/partials/create-user.blade.php b/php_code/resources/views/admin/partials/create-user.blade.php index 8096c45d..61d8fc7a 100644 --- a/php_code/resources/views/admin/partials/create-user.blade.php +++ b/php_code/resources/views/admin/partials/create-user.blade.php @@ -15,22 +15,7 @@ @csrf
- @if (session('current_user.user_type') == 'district_user') -
- - -
- @elseif(session('current_user.user_type') == 'regional_user') -
- - -
-
- - -
- @else -
+
@@ -42,6 +27,11 @@
+ @if(session('current_user.user_type') == 'admin_user') +
+ + +
@endif
@@ -94,7 +84,7 @@
@if (session('current_user.user_type') == 'district_user' ) - + @elseif(session('current_user.user_type') == 'regional_user')
@@ -118,7 +108,7 @@
-
diff --git a/php_code/resources/views/admin/partials/edit-modal.blade.php b/php_code/resources/views/admin/partials/edit-modalbk.blade.php similarity index 100% rename from php_code/resources/views/admin/partials/edit-modal.blade.php rename to php_code/resources/views/admin/partials/edit-modalbk.blade.php diff --git a/php_code/resources/views/admin/partials/edit-user.blade.php b/php_code/resources/views/admin/partials/edit-user.blade.php index b8862c2d..c6fce384 100644 --- a/php_code/resources/views/admin/partials/edit-user.blade.php +++ b/php_code/resources/views/admin/partials/edit-user.blade.php @@ -9,13 +9,14 @@ -