main-backend/php_code/app/Http/Controllers/PermitsController.php
2026-08-23 22:15:17 +00:00

259 lines
9.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Utilities\ApiCalls;
use Session;
use Illuminate\Http\Request;
use Storage;
use Response;
use Illuminate\Support\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Carbon\Carbon;
class PermitsController extends Controller
{
public function indexOld(){
$url = "permit/get_applications_by_district.php";
$data = json_encode([
'district_id' => session('current_user.district_id'),
'api_token' => env('LUPMISAPIKEY')
]);
$result = ApiCalls::CurlPost($data, $url);
$result = json_decode($result, true);
dd($result);
$data = [
'page_title' => 'Permits Dashboard',
'permits_arr' => $result
];
return view('permits.dashboard', $data);
}
public function index(Request $request)
{
$url = "permit/get_applications_by_district.php";
$data = json_encode([
'district_id' => session('current_user.district_id'),
'api_token' => env('LUPMISAPIKEY')
]);
$result = ApiCalls::CurlPost($data, $url);
$response = json_decode($result, true);
// dd($response);
$permits = collect($response['data'] ?? []);
$summaries = [
'total' => $permits->count(),
'submitted' => $permits->filter(fn($p) => strtolower($p['status'] ?? '') === 'submitted')->count(),
'development' => $permits->filter(fn($p) => str_contains(strtolower($p['permit_type'] ?? ''), 'development'))->count(),
'planning' => $permits->filter(fn($p) => str_contains(strtolower($p['permit_type'] ?? ''), 'planning'))->count(),
];
if ($request->has('search') && $request->search != '') {
$search = strtolower($request->search);
$permits = $permits->filter(function($p) use ($search) {
$code = strtolower($p['application_code'] ?? '');
$location = strtolower($p['project_location'] ?? '');
$type = strtolower($p['permit_type'] ?? '');
$form_type = strtolower($p['permit_form_type'] ?? '');
return str_contains($code, $search) ||
str_contains($location, $search) ||
str_contains($form_type, $search) ||
str_contains($type, $search);
});
}
$paginatedPermits = $this->paginateCollection($permits, 15, 'page');
return view('permits.dashboard', [
'page_title' => 'Permits Management',
'permits' => $paginatedPermits,
'summaries' => $summaries
]);
}
private function paginateCollection(Collection $items, $perPage = 15, $pageName = 'page')
{
$page = LengthAwarePaginator::resolveCurrentPage($pageName);
$currentPageItems = $items->slice(($page - 1) * $perPage, $perPage)->values();
$paginator = new LengthAwarePaginator(
$currentPageItems,
$items->count(),
$perPage,
$page,
[
'path' => LengthAwarePaginator::resolveCurrentPath(),
'pageName' => $pageName,
]
);
return $paginator->withQueryString();
}
public function settings(){
//pull email address, sms configs,
/*
$url = "permit/get_applications_by_district.php";
$data = json_encode([
'district_id' => session('current_user.district_id'),
'api_token' => env('LUPMISAPIKEY')
]);
$result = ApiCalls::CurlPost($data, $url);
$result = json_decode($result, true);
*/
$data = [
'page_title' => 'Permits Settings',
// 'permits_arr' => $result
];
return view('permits.district-settings', $data);
}
public function statusIndex($status){
$url = "permit/get_applications_by_district.php";
$data = json_encode([
'district_id' => session('current_user.district_id'),
'api_token' => env('LUPMISAPIKEY')
]);
$result = ApiCalls::CurlPost($data, $url);
$result = json_decode($result, true);
// dump($result);
if ($result['success'] && $result['data'] == null) {
Session::flash('error_message', 'Your request could not be handled at this time. Try again later');
return redirect()->back();
}
$data = [
'page_title' => 'Permits Page',
'permits_arr' => $result,
'status' => $status
];
return view('permits.index', $data);
}
public function show($id){
// dd($id);
// dump(session('current_user'));
$url = "permit/get_applications_with_applicant_by_application_code.php";
$data = json_encode([
'application_code' => $id,
'api_token' => env('LUPMISAPIKEY')
]);
$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_code" => $result['data'][0]['application_code'],
"api_token" => "1c46538c712e9b5b"
]);
/*
$documents_retval = ApiCalls::CurlPost($doc_data, $docs_url);
dump($documents_retval);
$documents = json_decode($documents_retval, true);
dd($documents);
*/
$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']) ? $result['data'][0] : '',
'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-tabbed', $data);
}
public function statusUpdate($id){
}
public function settingsStore(Request $request){
// 'https://api.lupmis4luspa.org/api/'
//email and sms settings
$url = "sms/insert_sms_settings.php";
$data = json_encode([
"districtid" => session('current_user.district_id'),
"sender_id"=> $request->sender_id,
"balance" => 0,
"status" => "active",
"api_key" => $request->api_key,
"remarks" => $request->remarks,
"api_token" => env('LUPMISAPIKEY')
]);
$result = ApiCalls::CurlPost($data, $url);
$result = json_decode($result, true);
$url = "sms/insert_sms_settings.php";
$data = json_encode([
"districtid" => session('current_user.district_id'),
"sender_id"=> $request->sender_id,
"mail_host" => $request->email_host,
"mail_from_address" => $request->mail_from_address,
"mail_from_encryption" => $request->mail_from_encryption,
"mail_from_name" => $request->mail_from_name,
"mail_port" => $request->mail_port,
"mail_host" => $request->email_host,
"mail_host" => $request->email_host,
"status" => "active",
"api_key" => $request->api_key,
"remarks" => $request->remarks,
"api_token" => env('LUPMISAPIKEY')
]);
$result = ApiCalls::CurlPost($data, $url);
$result = json_decode($result, true);
return redirect('/permits/districtsettings');
}
public function reports(){
$data = [
'page_title' => 'Permit Reports'
];
return view('common.notready', $data);
}
public function addComment(Request $request){
$url = "permit_comments/insert_application_comment.php";
$data = json_encode([
"application_code" => $request->application_code,
"client_generated_id" => "CLIENT-001",
"app_comments" => $request->comment_body,
"created_by" => session('current_user.username'),
"created_by_id" => session('current_user.user_id'),
'api_token' => env('LUPMISAPIKEY')
]);
$result = ApiCalls::CurlPost($data, $url);
$result = json_decode($result, true);
// dd($result);
return response()->json($result);
}
public function getComments(Request $request){
$url = "permit_comments/select_application_comments.php";
$data = json_encode([
"application_code" => $request->application_code,
"client_generated_id" => "CLIENT-001",
"app_comments" => $request->comment_body,
"created_by" => session('current_user.username'),
"created_by_id" => session('current_user.user_id'),
'api_token' => env('LUPMISAPIKEY')
]);
$result = ApiCalls::CurlPost($data, $url);
$result = json_decode($result, true);
return response()->json($result);
}
public function viewPdf($filename){
$path = storage_path('app/public/site_plans/' . $filename);
if (!Storage::disk('public')->exists('site_plans/' . $filename)) {
abort(404);
}
// Return the file with an inline content disposition to display in the browser
return Response::make(file_get_contents($path), 200, [
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'inline; filename="' . $filename . '"' // 'inline' displays it in the browser/iframe
]);
}
}