From 779ae6e0c7b7c66533cad09efa84c43d07f4f286 Mon Sep 17 00:00:00 2001 From: Kwesi Banson Jnr Date: Sun, 21 Jun 2026 19:33:30 +0000 Subject: [PATCH] permit show file modifications --- php_code/.env | 4 +- .../Controllers/LandingpageController.php | 1 + .../Http/Controllers/PermitsController.php | 11 +- .../Http/Controllers/UserloginController.php | 12 +- php_code/info.md | 7 + php_code/public/assets/js/l4lfunctions.js | 82 +++++---- .../resources/views/admin/home_cats.blade.php | 3 +- php_code/resources/views/landing.blade.php | 2 +- .../resources/views/layouts/master.blade.php | 1 + .../resources/views/permits/show.blade.php | 50 +++--- ...-06-2026.php => show_21-06-2026.blade.php} | 96 +++++----- .../views/user-auth/login.blade copy.php | 107 ++++++++++++ .../resources/views/user-auth/login.blade.php | 164 ++++++++++-------- 13 files changed, 352 insertions(+), 188 deletions(-) rename php_code/resources/views/permits/{show.blade 21-06-2026.php => show_21-06-2026.blade.php} (93%) create mode 100644 php_code/resources/views/user-auth/login.blade copy.php diff --git a/php_code/.env b/php_code/.env index eb70e853..66ef4a66 100644 --- a/php_code/.env +++ b/php_code/.env @@ -24,7 +24,7 @@ CACHE_DRIVER=file QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 -SESSION_DOMAIN=.lupmis4luspa.org +SESSION_DOMAIN=.housebanson.net REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null @@ -51,4 +51,4 @@ PUSHER_APP_CLUSTER=mt1 VITE_APP_NAME="${APP_NAME}" VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" \ No newline at end of file +VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" diff --git a/php_code/app/Http/Controllers/LandingpageController.php b/php_code/app/Http/Controllers/LandingpageController.php index 155e4a13..6a79c676 100644 --- a/php_code/app/Http/Controllers/LandingpageController.php +++ b/php_code/app/Http/Controllers/LandingpageController.php @@ -12,6 +12,7 @@ class LandingpageController extends Controller $data = [ 'page_title' => 'Landing Page' ]; + return view('landing', $data); } diff --git a/php_code/app/Http/Controllers/PermitsController.php b/php_code/app/Http/Controllers/PermitsController.php index b7e0c3a7..4a47f017 100644 --- a/php_code/app/Http/Controllers/PermitsController.php +++ b/php_code/app/Http/Controllers/PermitsController.php @@ -83,12 +83,21 @@ class PermitsController extends Controller ]); $result = ApiCalls::CurlPost($data, $url); $result = json_decode($result, true); + // dump($result); + $docs_url = "upload/get_all_files_per_application.php"; + $doc_data = json_encode([ + "application_id" => $result['data'][0]['applicant_id'], + "api_token" => "1c46538c712e9b5b" + ]); - // dd($result); + $documents_retval = ApiCalls::CurlPost($doc_data, $docs_url); + // dd($documents_retval); + $documents = json_decode($documents_retval, true); $allowed_users_to_comment = ['PPD Head', 'Works Department Head', 'luspa-it-head']; $data = [ 'page_title' => 'Permits Details', 'permit_arr' => $result['data'][0], + 'documents' => $documents['data'], 'allowed_users_to_comment' => $allowed_users_to_comment ]; return view('permits.show', $data); diff --git a/php_code/app/Http/Controllers/UserloginController.php b/php_code/app/Http/Controllers/UserloginController.php index 3e2e6853..c2204412 100644 --- a/php_code/app/Http/Controllers/UserloginController.php +++ b/php_code/app/Http/Controllers/UserloginController.php @@ -29,12 +29,12 @@ 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); - // dd($check_user); + 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(); } @@ -51,7 +51,9 @@ class UserloginController extends Controller 'token' => hash('sha256', $plainToken), 'created_at' => now(), ]); + // dd($logged_in); $request->session()->regenerate(true); + $region_name = isset($logged_in['region']) ? $logged_in['region'] : "N/A"; $request->session()->put('current_user.ua_id', $logged_in['ua_id']); $request->session()->put('current_user.user_id', $logged_in['user_id']); $request->session()->put('current_user.username', $logged_in['username']); @@ -66,16 +68,16 @@ class UserloginController extends Controller $request->session()->put('current_user.is_password_changed', $logged_in['is_password_changed']); $request->session()->put('current_user.district_id', $logged_in['district_id']); $request->session()->put('current_user.district_name', $logged_in['vr_district_name']); - // $request->session()->put('current_user.hashedToken', $hashedToken); + $request->session()->put('current_user.region_name', $region_name); $request->session()->put('current_user.plainToken', $plainToken); // $request->session()->put('current_user.permissions', $logged_in['permissions']); Cookie::queue('sso_auth_token', $plainToken, 60, '/', '.lupmis4luspa.org'); \Log::info($logged_in['full_name']. ' Successfully logged in at : ' . date('Y-m-d H:i:s')); - return redirect(url('/')); + return redirect(url('/admin/home')); } - public function handle_logout(Request $request) { + public function handle_logout(Request $request) { $user_id = session('current_user.id'); $username = session('current_user.name'); diff --git a/php_code/info.md b/php_code/info.md index a21b6135..0f0a07f8 100644 --- a/php_code/info.md +++ b/php_code/info.md @@ -68,3 +68,10 @@ add_header Content-Security-Policy "frame-ancestors 'self' https://lupmis4luspa. add_header Content-Security-Policy "frame-ancestors 'self' https://lupmis.housebanson.net" always; + +{ + "success": true, + "data": "[{\"id\":6,\"application_id\":165,\"client_generated_id\":null,\"document_type\":\"Document\",\"document_category\":\"required\",\"filename\":\"verdex-executive-summary-56d42f4a45514771827c4b98780ceecc.pdf\",\"original_filename\":\"verdex-executive-summary-56d42f4a45514771827c4b98780ceecc.pdf\",\"file_size\":0,\"mime_type\":\"application/pdf\",\"file_path\":\"https://portal.lupmis4luspa.org/App/api/document.php?application_code=REQ-20260310-HKQ5&file=verdex-executive-summary-56d42f4a45514771827c4b98780ceecc.pdf\",\"is_verified\":false,\"verified_by\":null,\"verified_at\":null,\"verification_notes\":null,\"uploaded_at\":\"2026-06-12T13:32:46.483281\"}]", + "count": 1 +} + diff --git a/php_code/public/assets/js/l4lfunctions.js b/php_code/public/assets/js/l4lfunctions.js index b7c55bfd..a02837ef 100644 --- a/php_code/public/assets/js/l4lfunctions.js +++ b/php_code/public/assets/js/l4lfunctions.js @@ -1,42 +1,56 @@ -// Where you want to render the map. -var element = document.getElementById('map'); +document.addEventListener("DOMContentLoaded", function() { + var element = document.getElementById('map'); + + if (!element) return; -// Height has to be set. You can do this in CSS too. -element.style = 'height:400px;'; + element.style.height = '100%'; + element.style.minHeight = '500px'; -// Create Openlayers map on map element. -var map = new ol.Map({ + var map = new ol.Map({ layers: [ - new ol.layer.Tile({ - source: new ol.source.OSM() - }) + new ol.layer.Tile({ + source: new ol.source.OSM() + }) ], target: element, - controls: ol.control.defaults().extend([ -// new ol.control.LayerSwitcher(), - new ol.control.MousePosition({ - projection: 'EPSG:4326', - coordinateFormat: function(coordinate) { - return ol.coordinate.format(coordinate, '{x}, {y}', 4); - }, - //ol.coordinate.toStringXY, - }), -// new ol.control.OverviewMap({layers: [baseLayersGroup]}), - new ol.control.ScaleLine(), - //new ol.control.ScaleLineUnits0(), - //new ol.control.ControlDrawFeatures(vector_draw, optionsControlDraw), - //new ol.control.ControlDrawButtons(vector_layer, opt_options), -// new ol.control.ZoomSlider(), - //new ol.control.Attribution(), -// new ol.control.MousePosition(), -// new ol.control.ZoomToExtent(), -// new ol.control.FullScreen() - ]), + controls: ol.control.defaults.defaults ? + ol.control.defaults.defaults().extend([ + new ol.control.MousePosition({ + projection: 'EPSG:4326', + coordinateFormat: function(coordinate) { + return ol.coordinate.format(coordinate, '{x}, {y}', 4); + }, + }), + new ol.control.ScaleLine() + ]) : + ol.control.defaults().extend([ + new ol.control.MousePosition({ + projection: 'EPSG:4326', + coordinateFormat: function(coordinate) { + return ol.coordinate.format(coordinate, '{x}, {y}', 4); + }, + }), + new ol.control.ScaleLine() + ]), + // view: new ol.View({ + // center: [-135846.63, 891762.35], + // zoom: 6 + // }) view: new ol.View({ - center: [-135846.63, 891762.35], -// center: [-1.3605877812500313, 10.401734198145082], - zoom: 6 + // ol.proj.fromLonLat([longitude, latitude]) + center: ol.proj.fromLonLat([-1.0232, 7.9465]), + zoom: 5.5, // Zoomed into the country level + minZoom: 2, // Allows zooming out + maxZoom: 19 // Allows zooming in }) - }); + }); + // setTimeout(function() { + // map.updateSize(); + // }, 200); + setTimeout(function() { + map.updateSize(); + map.getView().setCenter(ol.proj.fromLonLat([-1.0232, 7.9465])); + map.getView().setZoom(7); + }, 300); -// Target's GPS coordinates. +}); \ 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 019a5857..d99b8785 100644 --- a/php_code/resources/views/admin/home_cats.blade.php +++ b/php_code/resources/views/admin/home_cats.blade.php @@ -37,7 +37,8 @@

Manage Users

-
{{ \Carbon\Carbon::now()->format('F j, Y') }}
+ +
Sekondi Takoradi
diff --git a/php_code/resources/views/layouts/master.blade.php b/php_code/resources/views/layouts/master.blade.php index d2a150c4..b03dbd03 100644 --- a/php_code/resources/views/layouts/master.blade.php +++ b/php_code/resources/views/layouts/master.blade.php @@ -54,6 +54,7 @@ + @yield('page-content') diff --git a/php_code/resources/views/permits/show.blade.php b/php_code/resources/views/permits/show.blade.php index c5bec58c..ede108a1 100644 --- a/php_code/resources/views/permits/show.blade.php +++ b/php_code/resources/views/permits/show.blade.php @@ -72,40 +72,40 @@
Applicant Name:
-
FRANCIS BULLEN GAVOR
+
{{ $permit_arr['applicant_name'] }}
Nationality:
-
Motswana
+
{{ $permit_arr['nationality'] }}
Telephone Number:
-
0554116836
+
{{ $permit_arr['phone'] }}
-
Zonal Location:
-
TAIFA
+
Project Location:
+
{{ $permit_arr['project_location'] }}
Mailing Address:
-
1 Tomatoes St, Hse 404/12, Accra, EASTERN REGION
+
{{ $permit_arr['address'] }}
Permit Type Requested
-
Development
+
{{ $permit_arr['permit_type'] }}
-
Zoned Classification
-
Mixed-Use Low Density Residential
+
Purpose
+
{{ $permit_arr['land_request_use'] }}
Project Scope:
-
Proposed construction of multi-family residential building.
+
{{ $permit_arr['project_description'] }}
@@ -124,20 +124,20 @@
GPS: - +
- +
- +
@@ -155,7 +155,7 @@
-
Attached CAD Drawings & Documents
+
Uploaded Documents
@@ -167,7 +167,7 @@
- Inspect CAD + Open File
@@ -179,7 +179,7 @@
- Inspect CAD + Open File
@@ -191,7 +191,7 @@
- Inspect CAD + Open File @@ -208,7 +208,7 @@
-
Planning Stepper & Duration
+
Processing & Duration
Remaining Days
@@ -221,22 +221,22 @@
28th Feb 2026, 11:59 PM • LUPMIS ENGINE
Submission Received
-

Application successfully uploaded to LUPMIS database by applicant.

+

Application successfully uploaded to on the Portal by applicant.

Verified by: Applicant Portal
PENDING PROCESS SCHEDULE • LUPMIS ENGINE
-
Document Verification
-

Reviewing attached Site Plan, Block Plan, and Structural drawings consistency.

- Verified by: Planning Officer +
Applicant to Review
+

Applicant asked to review attached documenets.

+ Updated by: Luke Eshun
-
+
diff --git a/php_code/resources/views/permits/show.blade 21-06-2026.php b/php_code/resources/views/permits/show_21-06-2026.blade.php similarity index 93% rename from php_code/resources/views/permits/show.blade 21-06-2026.php rename to php_code/resources/views/permits/show_21-06-2026.blade.php index bf3ba23e..d42d8650 100644 --- a/php_code/resources/views/permits/show.blade 21-06-2026.php +++ b/php_code/resources/views/permits/show_21-06-2026.blade.php @@ -68,7 +68,7 @@ - + @@ -371,55 +371,55 @@ const locInput = document.getElementById('permitLocation'); window.addEventListener('message', function (event) { - if (event.origin !== MAP_ORIGIN) return; - const msg = event.data; - if (!msg || typeof msg !== 'object') return; - - switch (msg.type) { - case 'ready': - @if(!empty($permit_arr['upn'])) - iframe.contentWindow.postMessage( - { type: 'set:selected', upn: @json($permit_arr['upn']) }, - MAP_ORIGIN); - @endif - break; - - case 'parcel:select': - upnInput.value = msg.upn || ''; - locInput.value = (msg.lon != null && msg.lat != null) - ? msg.lat.toFixed(6) + ', ' + msg.lon.toFixed(6) - : ''; - upnInput.dataset.parcelId = msg.parcel_id || ''; - upnInput.dataset.zoneCode = msg.zone_code || ''; - break; - - case 'parcel:cleared': - upnInput.value = ''; - locInput.value = ''; - delete upnInput.dataset.parcelId; - delete upnInput.dataset.zoneCode; - break; - - case 'error': - console.warn('[permit-map]', msg.code, msg.message); - break; - } + if (event.origin !== MAP_ORIGIN) return; + const msg = event.data; + if (!msg || typeof msg !== 'object') return; + + switch (msg.type) { + case 'ready': + @if(!empty($permit_arr['upn'])) + iframe.contentWindow.postMessage( + { type: 'set:selected', upn: @json($permit_arr['upn']) }, + MAP_ORIGIN); + @endif + break; + + case 'parcel:select': + upnInput.value = msg.upn || ''; + locInput.value = (msg.lon != null && msg.lat != null) + ? msg.lat.toFixed(6) + ', ' + msg.lon.toFixed(6) + : ''; + upnInput.dataset.parcelId = msg.parcel_id || ''; + upnInput.dataset.zoneCode = msg.zone_code || ''; + break; + + case 'parcel:cleared': + upnInput.value = ''; + locInput.value = ''; + delete upnInput.dataset.parcelId; + delete upnInput.dataset.zoneCode; + break; + + case 'error': + console.warn('[permit-map]', msg.code, msg.message); + break; + } + + $('#checkComplianceBtn').on('click', function (e) { + e.preventDefault(); + const payload = { + application_code: @json($permit_arr['application_code']), + upn: upnInput.value, + parcel_id: upnInput.dataset.parcelId || null, + coordinates: locInput.value, + zone_code: upnInput.dataset.zoneCode || null, + }; + $.ajax({ url: '{{ route("permits.checkCompliance") }}', + method: 'POST', data: payload }) + .done(function (res) { /* render compliance result */ }); + }); - $('#checkComplianceBtn').on('click', function (e) { - e.preventDefault(); - const payload = { - application_code: @json($permit_arr['application_code']), - upn: upnInput.value, - parcel_id: upnInput.dataset.parcelId || null, - coordinates: locInput.value, - zone_code: upnInput.dataset.zoneCode || null, - }; - $.ajax({ url: '{{ route("permits.checkCompliance") }}', - method: 'POST', data: payload }) - .done(function (res) { /* render compliance result */ }); }); - -}); document.addEventListener('DOMContentLoaded', function() { const downloadBtn = document.getElementById('downloadPdfBtn'); diff --git a/php_code/resources/views/user-auth/login.blade copy.php b/php_code/resources/views/user-auth/login.blade copy.php new file mode 100644 index 00000000..9a351276 --- /dev/null +++ b/php_code/resources/views/user-auth/login.blade copy.php @@ -0,0 +1,107 @@ + + + + + + + + + + + + LUPMIS4LUSPA | Login + + + + + + + + + + + + + + +
+
+
+
+
+
+ +
+
+
+ +
+
+
+
+
+

Developed with Support from

+
+ +
+
+ +

2025 All Rights Reserved

+
+
+
+
+
+ + + + + + + + + + + + diff --git a/php_code/resources/views/user-auth/login.blade.php b/php_code/resources/views/user-auth/login.blade.php index 9a351276..12069874 100644 --- a/php_code/resources/views/user-auth/login.blade.php +++ b/php_code/resources/views/user-auth/login.blade.php @@ -5,7 +5,7 @@ - + @@ -14,94 +14,116 @@ - - - - - + + + - - + -
-
-
-
-
-
- +
+
+
+ +
+
+
+
-
-
+ +
+
+
+

Developed with Support from

+ Donor Logo +
+
+ +

© 2026 All Rights Reserved

- - + - - + + + - - + \ No newline at end of file