From 5dd92aa323c22c3d5a73c86f695925c82dde8809 Mon Sep 17 00:00:00 2001 From: arifal Date: Mon, 23 Jun 2025 17:52:55 +0700 Subject: [PATCH] create new command for insert init spatial plannings dan remove unused retribution tables --- .../Commands/InitSpatialPlanningDatas.php | 4 +- .../Commands/InjectSpatialPlanningsData.php | 675 ++++++++++++++++++ .../Api/LackOfPotentialController.php | 2 +- build.zip | Bin 2174474 -> 2174464 bytes ..._173758_drop_unused_retribution_tables.php | 147 ++++ 5 files changed, 826 insertions(+), 2 deletions(-) create mode 100644 app/Console/Commands/InjectSpatialPlanningsData.php create mode 100644 database/migrations/2025_06_23_173758_drop_unused_retribution_tables.php diff --git a/app/Console/Commands/InitSpatialPlanningDatas.php b/app/Console/Commands/InitSpatialPlanningDatas.php index b398819..1cf9a2b 100644 --- a/app/Console/Commands/InitSpatialPlanningDatas.php +++ b/app/Console/Commands/InitSpatialPlanningDatas.php @@ -29,7 +29,7 @@ class InitSpatialPlanningDatas extends Command */ public function handle() { - $filePath = $this->argument('file') ?? 'public/templates/Data_2025___Estimasi_Jumlah_Lantai.csv'; + $filePath = $this->argument('file') ?? 'public/templates/2025.xlsx'; $fullPath = storage_path('app/' . $filePath); // Check if file exists @@ -192,6 +192,8 @@ class InitSpatialPlanningDatas extends Command $this->info("Found " . count($rows) . " data rows to import."); $this->info("Headers: " . implode(', ', $headers)); + dd($rows[0]); + $progressBar = $this->output->createProgressBar(count($rows)); $progressBar->start(); diff --git a/app/Console/Commands/InjectSpatialPlanningsData.php b/app/Console/Commands/InjectSpatialPlanningsData.php new file mode 100644 index 0000000..7ef29da --- /dev/null +++ b/app/Console/Commands/InjectSpatialPlanningsData.php @@ -0,0 +1,675 @@ +option('file'); + $sheetIndex = (int) $this->option('sheet'); + $isDryRun = $this->option('dry-run'); + $isDebug = $this->option('debug'); + + if (!file_exists($filePath)) { + $this->error("File not found: {$filePath}"); + return 1; + } + + $this->info("Reading Excel file: {$filePath}"); + $this->info("Sheet index: {$sheetIndex}"); + + if ($isDryRun) { + $this->warn("DRY RUN MODE - No data will be inserted"); + } + + DB::statement('SET FOREIGN_KEY_CHECKS = 0'); + DB::table('spatial_plannings')->truncate(); + DB::statement('SET FOREIGN_KEY_CHECKS = 1'); + $this->info('Spatial plannings table truncated successfully.'); + + $spreadsheet = IOFactory::load($filePath); + $worksheet = $spreadsheet->getSheet($sheetIndex); + $rows = $worksheet->toArray(null, true, true, true); + + if ($isDebug) { + $this->info("=== EXCEL CONTENT DEBUG ==="); + foreach (array_slice($rows, 0, 20) as $index => $row) { + if (!empty(array_filter($row))) { + $this->line("Row $index: " . json_encode($row)); + } + } + $this->info("=== END DEBUG ==="); + } + + // Find BCR percentages from last rows (columns D and E) + $bcrPercentages = $this->findBcrPercentages($rows); + $this->info("Found BCR Percentages: " . json_encode($bcrPercentages)); + + // Process data by sections + $sections = $this->processSections($rows, $bcrPercentages, $isDebug); + + $this->info("Found " . count($sections) . " sections"); + + $totalInserted = 0; + foreach ($sections as $sectionIndex => $section) { + $this->info("Processing Section " . ($sectionIndex + 1) . ": " . $section['applicant_name']); + + // Gudang/pergudangan keywords successfully added to Fungsi Usaha classification + + if (!$isDryRun) { + $inserted = $this->insertSpatialPlanningData($section); + $totalInserted += $inserted; + $this->info("Inserted {$inserted} record for this section"); + } else { + $this->info("Would insert 1 record for this section"); + } + } + + if (!$isDryRun) { + $this->info("Successfully inserted {$totalInserted} spatial planning records"); + } else { + $this->info("Dry run completed. Total records that would be inserted: " . count($sections)); + } + + return 0; + } catch (Exception $e) { + $this->error("Error: " . $e->getMessage()); + Log::error("InjectSpatialPlanningsData failed", ['error' => $e->getMessage()]); + return 1; + } + } + + /** + * Find BCR percentages from last rows in columns D and E + */ + private function findBcrPercentages(array $rows): array + { + $bcrPercentages = []; + + // Look for BCR percentages in the last few rows + $totalRows = count($rows); + $searchRows = max(1, $totalRows - 10); // Search last 10 rows + + for ($i = $totalRows; $i >= $searchRows; $i--) { + if (isset($rows[$i]['D']) && isset($rows[$i]['E'])) { + $valueD = $this->cleanNumericValue($rows[$i]['D']); + $valueE = $this->cleanNumericValue($rows[$i]['E']); + + // Check if these look like percentages (between 0 and 100) + if ($valueD > 0 && $valueD <= 100 && $valueE > 0 && $valueE <= 100) { + $bcrPercentages['D'] = $valueD; + $bcrPercentages['E'] = $valueE; + break; + } + } + } + + // Default values if not found + if (empty($bcrPercentages)) { + $bcrPercentages = ['D' => 60, 'E' => 40]; // Default BCR percentages + } + + return $bcrPercentages; + } + + /** + * Process data by sections (each applicant) + */ + private function processSections(array $rows, array $bcrPercentages, bool $isDebug): array + { + $sections = []; + $currentSection = null; + $currentSectionNumber = null; + $sectionData = []; + + foreach ($rows as $rowIndex => $row) { + // Skip empty rows + if (empty(array_filter($row))) { + continue; + } + + if ($isDebug) { + $this->line("Checking row $rowIndex: " . substr(json_encode($row), 0, 100) . "..."); + } + + // Check if this is a new section (applicant) + if ($this->isNewSection($row)) { + if ($isDebug) { + $this->info("Found new section at row $rowIndex"); + } + + // Save previous section if exists + if ($currentSection && !empty($sectionData)) { + $sections[] = [ + 'applicant_name' => $currentSection, + 'section_number' => $currentSectionNumber, + 'data' => $sectionData + ]; + if ($isDebug) { + $this->info("Saved section: $currentSection with " . count($sectionData) . " data rows"); + } + } + + // Start new section + $currentSectionNumber = trim($row['A'] ?? ''); // Store section number + $currentSection = $this->extractApplicantName($row); + $sectionData = []; + + // Also process the header row itself for F, G, H data + $headerRow = $this->processDataRow($row, $bcrPercentages); + if ($headerRow) { + $sectionData[] = $headerRow; + } + + if ($isDebug) { + $this->info("Starting new section: $currentSection"); + $this->line(" Header F: " . ($row['F'] ?? 'null')); + $this->line(" Header G: " . ($row['G'] ?? 'null')); + $this->line(" Header H: " . ($row['H'] ?? 'null')); + } + } elseif ($currentSection && $this->isDataRow($row)) { + if ($isDebug) { + $this->line("Found data row for section: $currentSection"); + $this->line(" Column D: " . ($row['D'] ?? 'null')); + $this->line(" Column E: " . ($row['E'] ?? 'null')); + $this->line(" Column F: " . ($row['F'] ?? 'null')); + $this->line(" Column G: " . ($row['G'] ?? 'null')); + $this->line(" Column H: " . ($row['H'] ?? 'null')); + } + + // Add data to current section + $processedRow = $this->processDataRow($row, $bcrPercentages); + if ($processedRow) { + $sectionData[] = $processedRow; + } + } + } + + // Add last section + if ($currentSection && !empty($sectionData)) { + $sections[] = [ + 'applicant_name' => $currentSection, + 'section_number' => $currentSectionNumber, + 'data' => $sectionData + ]; + } + + return $sections; + } + + /** + * Check if row indicates a new section/applicant + */ + private function isNewSection(array $row): bool + { + // Look for patterns that indicate a new applicant + $firstCell = trim($row['A'] ?? ''); + + // Check for pattern like "55 / 1565", "56 / 1543", etc. + return !empty($firstCell) && preg_match('/^\d+\s*\/\s*\d+$/', $firstCell); + } + + /** + * Extract applicant name from section header + */ + private function extractApplicantName(array $row): string + { + // Row A contains number like "55 / 1565", Row B contains name and phone + $numberPart = trim($row['A'] ?? ''); + $namePart = trim($row['B'] ?? ''); + + // Extract name from column B (remove phone number part) + if (!empty($namePart)) { + // Remove phone number pattern "No Telpon : xxxxx" + $name = preg_replace('/\s*No Telpon\s*:\s*[\d\s\-\+\(\)]+.*$/i', '', $namePart); + $name = trim($name); + + return !empty($name) ? $name : $numberPart; + } + + return $numberPart ?: 'Unknown Applicant'; + } + + /** + * Check if row contains data + */ + private function isDataRow(array $row): bool + { + // Check if row has data we're interested in + $columnD = trim($row['D'] ?? ''); + $columnE = trim($row['E'] ?? ''); + $columnF = trim($row['F'] ?? ''); + $columnG = trim($row['G'] ?? ''); + $columnH = trim($row['H'] ?? ''); + + // Look for important data patterns in column D + $importantPatterns = [ + 'A. Total luas lahan', + 'Total luas lahan', + 'Total Luas Lahan', + 'BCR Kawasan', + 'E. BCR Kawasan', + 'D. BCR Kawasan', + 'KWT', + 'Total KWT', + 'KWT Perumahan', + 'D. KWT Perumahan', + 'E. KWT Perumahan', + 'BCR', + 'Koefisien Wilayah Terbangun' + ]; + + foreach ($importantPatterns as $pattern) { + if (stripos($columnD, $pattern) !== false && !empty($columnE)) { + return true; + } + } + + // Also check for location data + if (stripos($columnD, 'Desa') !== false) { + return true; + } + + // Check if any of the important columns (F, G, H) have data + // We want to capture ALL non-empty data in these columns within a section + if (!empty($columnF) && trim($columnF) !== '') { + return true; + } + if (!empty($columnG) && trim($columnG) !== '') { + return true; + } + if (!empty($columnH) && trim($columnH) !== '') { + return true; + } + + return false; + } + + /** + * Process a data row and calculate area using BCR formula + */ + private function processDataRow(array $row, array $bcrPercentages): ?array + { + try { + $columnD = trim($row['D'] ?? ''); + $columnE = trim($row['E'] ?? ''); + $columnF = trim($row['F'] ?? ''); + $columnG = trim($row['G'] ?? ''); + $columnH = trim($row['H'] ?? ''); + + $landArea = 0; + $bcrPercentage = $bcrPercentages['D'] ?? 60; // Default BCR percentage + $location = ''; + + // Extract land area if this is a "Total luas lahan" row + if (stripos($columnD, 'Total luas lahan') !== false || + stripos($columnD, 'A. Total luas lahan') !== false) { + $landArea = $this->cleanNumericValue($columnE); + } + + // Extract BCR percentage if this is a BCR row - comprehensive detection + if (stripos($columnD, 'BCR Kawasan') !== false || + stripos($columnD, 'E. BCR Kawasan') !== false || + stripos($columnD, 'D. BCR Kawasan') !== false || + stripos($columnD, 'KWT Perumahan') !== false || + stripos($columnD, 'D. KWT Perumahan') !== false || + stripos($columnD, 'E. KWT Perumahan') !== false || + stripos($columnD, 'KWT') !== false || + (stripos($columnD, 'BCR') !== false && stripos($columnE, '%') !== false) || + stripos($columnD, 'Koefisien Wilayah Terbangun') !== false) { + $bcrValue = $this->cleanNumericValue($columnE); + if ($bcrValue > 0 && $bcrValue <= 100) { + $bcrPercentage = $bcrValue; + } + } + + // Get location from village/subdistrict info (previous rows in the section) + if (stripos($columnD, 'Desa') !== false) { + $location = $columnD; + } + + // Calculate area: total luas lahan dibagi persentase BCR + $calculatedArea = $landArea > 0 && $bcrPercentage > 0 ? + ($landArea / ($bcrPercentage / 100)) : 0; + + return [ + 'data_type' => $columnD, + 'value' => $columnE, + 'land_area' => $landArea, + 'bcr_percentage' => $bcrPercentage, + 'calculated_area' => $calculatedArea, + 'location' => $location, + 'no_tapak' => !empty($columnF) ? $columnF : null, + 'no_skkl' => !empty($columnG) ? $columnG : null, + 'no_ukl' => !empty($columnH) ? $columnH : null, + 'raw_data' => $row + ]; + } catch (Exception $e) { + Log::warning("Error processing row", ['row' => $row, 'error' => $e->getMessage()]); + return null; + } + } + + /** + * Insert spatial planning data + */ + private function insertSpatialPlanningData(array $section): int + { + try { + // Process section data to extract key values + $sectionData = $this->consolidateSectionData($section); + + if (empty($sectionData) || !$sectionData['has_valid_data']) { + $this->warn("No valid data found for section: " . $section['applicant_name']); + return 0; + } + + SpatialPlanning::create([ + 'name' => $section['applicant_name'], + 'number' => $section['section_number'], // Kolom A - section number + 'location' => $sectionData['location'], // Column C from header row + 'land_area' => $sectionData['land_area'], + 'area' => $sectionData['calculated_area'], + 'building_function' => $sectionData['building_function'], // Determined from activities + 'sub_building_function' => $sectionData['sub_building_function'], // UMKM or Usaha Besar + 'activities' => $sectionData['activities'], // Activities from column D of first row + 'site_bcr' => $sectionData['bcr_percentage'], + 'no_tapak' => $sectionData['no_tapak'], + 'no_skkl' => $sectionData['no_skkl'], + 'no_ukl' => $sectionData['no_ukl'], + 'date' => now()->format('Y-m-d'), + 'created_at' => now(), + 'updated_at' => now() + ]); + + return 1; + } catch (Exception $e) { + Log::error("Error inserting spatial planning data", [ + 'section' => $section['applicant_name'], + 'error' => $e->getMessage() + ]); + $this->warn("Failed to insert record for: " . $section['applicant_name']); + return 0; + } + } + + /** + * Consolidate section data into a single record + */ + private function consolidateSectionData(array $section): array + { + $landArea = 0; + $bcrPercentage = 60; // Default from Excel file + $location = ''; + $activities = ''; // Activities from column D of first row + $villages = []; + $noTapakValues = []; + $noSKKLValues = []; + $noUKLValues = []; + + // Get activities from first row (header row) column D + if (!empty($section['data']) && !empty($section['data'][0]['data_type'])) { + $activities = $section['data'][0]['data_type']; // Column D data + } + + // Get location from first row (header row) column C (alamat) + // We need to get this from raw data since processDataRow doesn't capture column C + if (!empty($section['data']) && !empty($section['data'][0]['raw_data']['C'])) { + $location = trim($section['data'][0]['raw_data']['C']); + } + + foreach ($section['data'] as $dataRow) { + // Extract land area + if ($dataRow['land_area'] > 0) { + $landArea = $dataRow['land_area']; + } + + // Extract BCR percentage - prioritize specific BCR from this section + // Always use section-specific BCR if found, regardless of value + if ($dataRow['bcr_percentage'] > 0 && $dataRow['bcr_percentage'] <= 100) { + $bcrPercentage = $dataRow['bcr_percentage']; + } + + // Extract additional location info from village/subdistrict data if main location is empty + if (empty($location) && !empty($dataRow['location'])) { + $villages[] = trim(str_replace('Desa ', '', $dataRow['location'])); + } + + // Collect no_tapak values + if (!empty($dataRow['no_tapak']) && !in_array($dataRow['no_tapak'], $noTapakValues)) { + $noTapakValues[] = $dataRow['no_tapak']; + } + + // Collect no_skkl values + if (!empty($dataRow['no_skkl']) && !in_array($dataRow['no_skkl'], $noSKKLValues)) { + $noSKKLValues[] = $dataRow['no_skkl']; + } + + // Collect no_ukl values + if (!empty($dataRow['no_ukl']) && !in_array($dataRow['no_ukl'], $noUKLValues)) { + $noUKLValues[] = $dataRow['no_ukl']; + } + } + + // Use first village as fallback location if main location is empty + if (empty($location)) { + $location = !empty($villages) ? $villages[0] : 'Unknown Location'; + } + + // Merge multiple values with | separator + $noTapak = !empty($noTapakValues) ? implode('|', $noTapakValues) : null; + $noSKKL = !empty($noSKKLValues) ? implode('|', $noSKKLValues) : null; + $noUKL = !empty($noUKLValues) ? implode('|', $noUKLValues) : null; + + // Calculate area using BCR formula: land_area / (bcr_percentage / 100) + $calculatedArea = $landArea > 0 && $bcrPercentage > 0 ? + ($landArea / ($bcrPercentage / 100)) : 0; + + // Determine building_function and sub_building_function based on activities and applicant name + $buildingFunction = 'Mixed Development'; // Default + $subBuildingFunction = null; + + // Get applicant name for PT validation + $applicantName = $section['applicant_name'] ?? ''; + $isCompany = (strpos($applicantName, 'PT ') === 0 || strpos($applicantName, 'PT.') === 0); + + // PRIORITY: PT Company validation - PT/PT. automatically classified as Fungsi Usaha + if ($isCompany) { + $buildingFunction = 'Fungsi Usaha'; + + // For PT companies: area-based classification + if ($landArea > 0 && $landArea < 500) { // < 500 m² for PT = Non-Mikro (since PT is already established business) + $subBuildingFunction = 'Usaha Besar (Non-Mikro)'; + } elseif ($landArea >= 500) { // >= 500 m² for PT = Large Business + $subBuildingFunction = 'Usaha Besar (Non-Mikro)'; + } else { + $subBuildingFunction = 'Usaha Besar (Non-Mikro)'; // Default for PT + } + } + // For non-PT applicants, use activity-based classification + elseif (!empty($activities)) { + $activitiesLower = strtolower($activities); + + // 1. FUNGSI KEAGAMAAN + if (strpos($activitiesLower, 'masjid') !== false || + strpos($activitiesLower, 'gereja') !== false || + strpos($activitiesLower, 'pura') !== false || + strpos($activitiesLower, 'vihara') !== false || + strpos($activitiesLower, 'klenteng') !== false || + strpos($activitiesLower, 'tempat ibadah') !== false || + strpos($activitiesLower, 'keagamaan') !== false || + strpos($activitiesLower, 'mushola') !== false) { + + $buildingFunction = 'Fungsi Keagamaan'; + $subBuildingFunction = 'Fungsi Keagamaan'; + } + + // 2. FUNGSI SOSIAL BUDAYA + elseif (strpos($activitiesLower, 'sekolah') !== false || + strpos($activitiesLower, 'rumah sakit') !== false || + strpos($activitiesLower, 'puskesmas') !== false || + strpos($activitiesLower, 'klinik') !== false || + strpos($activitiesLower, 'universitas') !== false || + strpos($activitiesLower, 'kampus') !== false || + strpos($activitiesLower, 'pendidikan') !== false || + strpos($activitiesLower, 'kesehatan') !== false || + strpos($activitiesLower, 'sosial') !== false || + strpos($activitiesLower, 'budaya') !== false || + strpos($activitiesLower, 'museum') !== false || + strpos($activitiesLower, 'tower') !== false || + strpos($activitiesLower, 'perpustakaan') !== false) { + + $buildingFunction = 'Fungsi Sosial Budaya'; + $subBuildingFunction = 'Fungsi Sosial Budaya'; + } + + // 3. FUNGSI USAHA + elseif (strpos($activitiesLower, 'perdagangan') !== false || + strpos($activitiesLower, 'dagang') !== false || + strpos($activitiesLower, 'toko') !== false || + strpos($activitiesLower, 'usaha') !== false || + strpos($activitiesLower, 'komersial') !== false || + strpos($activitiesLower, 'pabrik') !== false || + strpos($activitiesLower, 'industri') !== false || + strpos($activitiesLower, 'manufaktur') !== false || + strpos($activitiesLower, 'bisnis') !== false || + strpos($activitiesLower, 'resto') !== false || + strpos($activitiesLower, 'villa') !== false || + strpos($activitiesLower, 'vila') !== false || + strpos($activitiesLower, 'gudang') !== false || + strpos($activitiesLower, 'pergudangan') !== false || + strpos($activitiesLower, 'kolam renang') !== false || + strpos($activitiesLower, 'minimarket') !== false || + strpos($activitiesLower, 'supermarket') !== false || + strpos($activitiesLower, 'perdaganagan') !== false || + strpos($activitiesLower, 'waterpark') !== false || + strpos($activitiesLower, 'pasar') !== false || + strpos($activitiesLower, 'perumahan') !== false || + strpos($activitiesLower, 'perumhan') !== false || + strpos($activitiesLower, 'kantor') !== false) { + + $buildingFunction = 'Fungsi Usaha'; + + // Determine business size based on land area for non-PT businesses + if ($landArea > 0 && $landArea > 500) { // > 500 m² considered large business + $subBuildingFunction = 'Usaha Besar (Non-Mikro)'; + } else { + $subBuildingFunction = 'UMKM'; // For small individual businesses + } + } + + // 4. FUNGSI HUNIAN (PERUMAHAN) + elseif (strpos($activitiesLower, 'rumah') !== false || + strpos($activitiesLower, 'hunian') !== false || + strpos($activitiesLower, 'residence') !== false || + strpos($activitiesLower, 'residential') !== false || + strpos($activitiesLower, 'housing') !== false || + strpos($activitiesLower, 'town') !== false) { + + $buildingFunction = 'Fungsi Hunian'; + + // Determine housing type based on area and keywords + if (strpos($activitiesLower, 'mbr') !== false || + strpos($activitiesLower, 'masyarakat berpenghasilan rendah') !== false || + strpos($activitiesLower, 'sederhana') !== false || + ($landArea > 0 && $landArea < 2000)) { // Small area indicates MBR + + $subBuildingFunction = 'Rumah Tinggal Deret (MBR) dan Rumah Tinggal Tunggal (MBR)'; + } + elseif ($landArea > 0 && $landArea < 100) { + $subBuildingFunction = 'Sederhana <100'; + } + elseif ($landArea > 0 && $landArea > 100) { + $subBuildingFunction = 'Tidak Sederhana >100'; + } + else { + $subBuildingFunction = 'Fungsi Hunian'; // Default for housing + } + } + + // 5. FUNGSI CAMPURAN + elseif (strpos($activitiesLower, 'campuran') !== false || + strpos($activitiesLower, 'mixed') !== false || + strpos($activitiesLower, 'mix') !== false || + strpos($activitiesLower, 'multi') !== false) { + + $buildingFunction = 'Fungsi Campuran (lebih dari 1)'; + + // Determine mixed use size + if ($landArea > 0 && $landArea > 3000) { // > 3000 m² considered large mixed use + $subBuildingFunction = 'Campuran Besar'; + } else { + $subBuildingFunction = 'Campuran Kecil'; + } + } + } + + return [ + 'land_area' => $landArea, + 'bcr_percentage' => $bcrPercentage, + 'calculated_area' => $calculatedArea, + 'location' => $location, + 'activities' => $activities, // Activities from column D of first row + 'building_function' => $buildingFunction, + 'sub_building_function' => $subBuildingFunction, + 'no_tapak' => $noTapak, + 'no_skkl' => $noSKKL, + 'no_ukl' => $noUKL, + 'has_valid_data' => $landArea > 0 // Flag untuk validasi + ]; + } + + /** + * Clean and convert string to numeric value + */ + private function cleanNumericValue($value): float + { + if (is_numeric($value)) { + return (float) $value; + } + + // Remove non-numeric characters except decimal points and commas + $cleaned = preg_replace('/[^0-9.,]/', '', $value); + + // Handle different decimal separators + if (strpos($cleaned, ',') !== false && strpos($cleaned, '.') !== false) { + // Both comma and dot present, assume comma is thousands separator + $cleaned = str_replace(',', '', $cleaned); + } elseif (strpos($cleaned, ',') !== false) { + // Only comma present, assume it's decimal separator + $cleaned = str_replace(',', '.', $cleaned); + } + + return is_numeric($cleaned) ? (float) $cleaned : 0; + } +} diff --git a/app/Http/Controllers/Api/LackOfPotentialController.php b/app/Http/Controllers/Api/LackOfPotentialController.php index 7d358e0..fa49b4f 100644 --- a/app/Http/Controllers/Api/LackOfPotentialController.php +++ b/app/Http/Controllers/Api/LackOfPotentialController.php @@ -18,7 +18,7 @@ class LackOfPotentialController extends Controller $total_pdam = Customer::count(); $total_tata_ruang = SpatialPlanning::count(); $total_tata_ruang_usaha = SpatialPlanning::where('building_function','like', '%usaha%')->count(); - $total_tata_ruang_non_usaha = SpatialPlanning::where('building_function','like', '%hunian%')->count(); + $total_tata_ruang_non_usaha = SpatialPlanning::where('building_function','not like', '%usaha%')->count(); $data_report_tourism = TourismBasedKBLI::all(); return response()->json([ diff --git a/build.zip b/build.zip index ad3402c5587f69bb7ec81328e43c41b2ef988e3c..e3e56480145b8861f5a11e84a21924c36d0d29fe 100644 GIT binary patch delta 47644 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 delta 47479 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 diff --git a/database/migrations/2025_06_23_173758_drop_unused_retribution_tables.php b/database/migrations/2025_06_23_173758_drop_unused_retribution_tables.php new file mode 100644 index 0000000..0b1f368 --- /dev/null +++ b/database/migrations/2025_06_23_173758_drop_unused_retribution_tables.php @@ -0,0 +1,147 @@ +id(); + $table->string('code')->unique()->comment('Kode unik fungsi bangunan'); + $table->string('name', 255)->comment('Nama fungsi bangunan'); + $table->text('description')->nullable()->comment('Deskripsi detail fungsi bangunan'); + $table->unsignedBigInteger('parent_id')->nullable()->comment('ID parent untuk hierarki'); + $table->foreign('parent_id')->references('id')->on('building_functions')->onDelete('cascade'); + $table->integer('level')->default(0)->comment('Level hierarki (0=root, 1=child, dst)'); + $table->integer('sort_order')->default(0)->comment('Urutan tampilan'); + $table->decimal('base_tariff', 15, 2)->nullable()->comment('Tarif dasar per m2'); + + // Indexes untuk performa + $table->index(['parent_id', 'level']); + $table->index(['level', 'sort_order']); + $table->timestamps(); + }); + + // Recreate building_function_parameters table + Schema::create('building_function_parameters', function (Blueprint $table) { + $table->id(); + $table->foreignId('building_function_id')->constrained('building_functions')->onDelete('cascade'); + $table->decimal('fungsi_bangunan', 10, 6)->nullable()->comment('Parameter fungsi bangunan'); + $table->decimal('ip_permanen', 10, 6)->nullable()->comment('Parameter IP permanen'); + $table->decimal('ip_kompleksitas', 10, 6)->nullable()->comment('Parameter IP kompleksitas'); + $table->decimal('indeks_lokalitas', 10, 6)->nullable()->comment('Parameter indeks lokalitas'); + $table->decimal('asumsi_prasarana', 8, 6)->nullable()->comment('Parameter asumsi prasarana untuk perhitungan retribusi'); + $table->decimal('koefisien_dasar', 15, 6)->nullable()->comment('Koefisien dasar perhitungan'); + $table->timestamps(); + + // Unique constraint untuk 1:1 relationship + $table->unique('building_function_id'); + }); + + // Recreate retribution_formulas table + Schema::create('retribution_formulas', function (Blueprint $table) { + $table->id(); + $table->foreignId('building_function_id')->constrained('building_functions')->onDelete('cascade'); + $table->string('name', 255)->comment('Nama formula'); + $table->integer('floor_number')->comment('Nomor lantai (1, 2, 3, dst, 0=semua lantai)'); + $table->text('formula_expression')->comment('Rumus matematika untuk perhitungan'); + $table->timestamps(); + + // Indexes untuk performa + $table->index(['building_function_id', 'floor_number'], 'idx_building_floor'); + }); + + // Recreate retribution_proposals table + Schema::create('retribution_proposals', function (Blueprint $table) { + $table->id(); + $table->foreignId('spatial_planning_id')->nullable()->constrained('spatial_plannings')->onDelete('cascade'); + $table->foreignId('building_function_id')->constrained('building_functions')->onDelete('cascade'); + $table->foreignId('retribution_formula_id')->constrained('retribution_formulas')->onDelete('cascade'); + $table->string('proposal_number')->unique()->comment('Nomor usulan retribusi'); + $table->integer('floor_number')->comment('Nomor lantai (1, 2, 3, dst)'); + $table->decimal('floor_area', 15, 6)->comment('Luas lantai ini (m2)'); + $table->decimal('total_building_area', 15, 6)->comment('Total luas bangunan (m2)'); + $table->decimal('ip_ketinggian', 10, 6)->comment('IP ketinggian untuk lantai ini'); + $table->decimal('floor_retribution_amount', 15, 2)->comment('Jumlah retribusi untuk lantai ini'); + $table->decimal('total_retribution_amount', 15, 2)->comment('Total retribusi keseluruhan'); + $table->json('calculation_parameters')->nullable()->comment('Parameter yang digunakan dalam perhitungan'); + $table->json('calculation_breakdown')->nullable()->comment('Breakdown detail perhitungan'); + $table->text('notes')->nullable()->comment('Catatan tambahan'); + $table->datetime('calculated_at')->comment('Waktu perhitungan dilakukan'); + $table->timestamps(); + + // Indexes untuk performa + $table->index(['spatial_planning_id', 'floor_number'], 'idx_spatial_floor'); + $table->index(['building_function_id'], 'idx_function'); + $table->index('calculated_at'); + }); + + // Recreate floor_height_indices table + Schema::create('floor_height_indices', function (Blueprint $table) { + $table->id(); + $table->integer('floor_number')->comment('Nomor lantai'); + $table->decimal('ip_ketinggian', 10, 6)->comment('Indeks ketinggian per lantai'); + $table->text('description')->nullable()->comment('Deskripsi indeks ketinggian'); + $table->timestamps(); + + // Unique constraint untuk floor_number + $table->unique('floor_number'); + $table->index('floor_number'); + }); + } +};