From aa0767242a2390db1e35865c3201581326c20e06 Mon Sep 17 00:00:00 2001 From: marszayn Date: Wed, 17 Sep 2025 13:26:06 +0700 Subject: [PATCH] update: oke --- .../Controllers/API/LayananController.php | 232 ++++++++ .../Controllers/JadwalSidangController.php | 92 +-- app/Http/Controllers/LayananController.php | 227 ++++++++ app/Http/Controllers/LoginController.php | 6 + app/Http/Controllers/PengumumanController.php | 301 ++++++++++ app/Http/Controllers/PerusahaanController.php | 17 + app/Http/Controllers/SignupController.php | 65 +++ app/Models/Daftar.php | 34 ++ app/Models/DokumenType.php | 22 + app/Models/FastestPermohonan.php | 2 +- app/Models/InformasiKegiatan.php | 103 ++++ app/Models/JadwalSidang.php | 35 ++ app/Models/Kabupaten.php | 20 + app/Models/Kecamatan.php | 29 + app/Models/Kelurahan.php | 19 + app/Models/Perusahaan.php | 26 + app/Models/SaranTanggapan.php | 139 +++++ app/Models/Signup.php | 34 ++ app/Models/User.php | 5 + ...100000_create_informasi_kegiatan_table.php | 47 ++ ...17_101000_create_saran_tanggapan_table.php | 49 ++ ...09_12_000000_create_dokumen_type_table.php | 32 ++ ...9_12_000001_create_jadwal_sidang_table.php | 45 ++ ...5_09_12_000002_create_perusahaan_table.php | 29 + ..._alter_jadwal_sidang_add_perusahaan_fk.php | 37 ++ ...2025_09_17_000001_create_signups_table.php | 31 + ...17_000003_create_perusahaan_user_table.php | 36 ++ .../2025_09_17_045610_kabupaten.php | 28 + .../2025_09_17_045625_kecamatan.php | 30 + .../2025_09_17_045651_kelurahan.php | 30 + database/seeders/DatabaseSeeder.php | 9 +- database/seeders/InformasiKegiatanSeeder.php | 313 ++++++++++ database/seeders/KabupatenTableSeeder.php | 38 ++ database/seeders/KecamatanTableSeeder.php | 45 ++ database/seeders/KelurahanTableSeeder.php | 43 ++ database/seeders/PerusahaanSeeder.php | 45 ++ .../seeders/RolesAndPermissionsSeeder.php | 19 + database/seeders/SaranTanggapanSeeder.php | 121 ++++ database/seeders/UserSeeder.php | 11 + docs/registration-number-format.md | 53 ++ public/assets/images/auth/auth_img.png | Bin 0 -> 131417 bytes public/assets/js/backend/jadwal/datepickr.js | 18 +- public/assets/js/frontend/home/layanan.js | 543 +++++++++++++++++- public/assets/json/home/layanan.json | 30 - .../views/admin/pengguna/index.blade.php | 492 ---------------- resources/views/auth/signup.blade.php | 113 ++-- .../backend/jadwal/modal_add.blade.php | 69 +-- .../components/frontend/navbar.blade.php | 13 +- resources/views/components/script.blade.php | 2 + resources/views/components/sidebar.blade.php | 9 + resources/views/frontend/home.blade.php | 2 +- resources/views/pengumuman/create.blade.php | 461 +++++++++++++++ resources/views/pengumuman/detail.blade.php | 331 +++++++++++ resources/views/pengumuman/index.blade.php | 87 +++ resources/views/penjadwalan/index.blade.php | 0 .../views/penjadwalan/jadwal_sidang.blade.php | 248 +++++--- .../create_jadwal.blade.php | 0 .../jadwal_sidang.blade.php | 112 ++++ .../views/perusahaan/kelengkapan.blade.php | 23 + routes/api.php | 12 + routes/web.php | 30 +- 61 files changed, 4310 insertions(+), 784 deletions(-) create mode 100644 app/Http/Controllers/API/LayananController.php create mode 100644 app/Http/Controllers/LayananController.php create mode 100644 app/Http/Controllers/PengumumanController.php create mode 100644 app/Http/Controllers/PerusahaanController.php create mode 100644 app/Http/Controllers/SignupController.php create mode 100644 app/Models/Daftar.php create mode 100644 app/Models/DokumenType.php create mode 100644 app/Models/InformasiKegiatan.php create mode 100644 app/Models/JadwalSidang.php create mode 100644 app/Models/Kabupaten.php create mode 100644 app/Models/Kecamatan.php create mode 100644 app/Models/Kelurahan.php create mode 100644 app/Models/Perusahaan.php create mode 100644 app/Models/SaranTanggapan.php create mode 100644 app/Models/Signup.php create mode 100644 database/migrations/2025_01_17_100000_create_informasi_kegiatan_table.php create mode 100644 database/migrations/2025_01_17_101000_create_saran_tanggapan_table.php create mode 100644 database/migrations/2025_09_12_000000_create_dokumen_type_table.php create mode 100644 database/migrations/2025_09_12_000001_create_jadwal_sidang_table.php create mode 100644 database/migrations/2025_09_12_000002_create_perusahaan_table.php create mode 100644 database/migrations/2025_09_12_000003_alter_jadwal_sidang_add_perusahaan_fk.php create mode 100644 database/migrations/2025_09_17_000001_create_signups_table.php create mode 100644 database/migrations/2025_09_17_000003_create_perusahaan_user_table.php create mode 100644 database/migrations/2025_09_17_045610_kabupaten.php create mode 100644 database/migrations/2025_09_17_045625_kecamatan.php create mode 100644 database/migrations/2025_09_17_045651_kelurahan.php create mode 100644 database/seeders/InformasiKegiatanSeeder.php create mode 100644 database/seeders/KabupatenTableSeeder.php create mode 100644 database/seeders/KecamatanTableSeeder.php create mode 100644 database/seeders/KelurahanTableSeeder.php create mode 100644 database/seeders/PerusahaanSeeder.php create mode 100644 database/seeders/SaranTanggapanSeeder.php create mode 100644 docs/registration-number-format.md create mode 100644 public/assets/images/auth/auth_img.png delete mode 100644 resources/views/admin/pengguna/index.blade.php create mode 100644 resources/views/pengumuman/create.blade.php create mode 100644 resources/views/pengumuman/detail.blade.php create mode 100644 resources/views/pengumuman/index.blade.php create mode 100644 resources/views/penjadwalan/index.blade.php rename resources/views/{penjadwalan => penjadwalan_backup}/create_jadwal.blade.php (100%) create mode 100644 resources/views/penjadwalan_backup/jadwal_sidang.blade.php create mode 100644 resources/views/perusahaan/kelengkapan.blade.php diff --git a/app/Http/Controllers/API/LayananController.php b/app/Http/Controllers/API/LayananController.php new file mode 100644 index 0000000..1ded2cc --- /dev/null +++ b/app/Http/Controllers/API/LayananController.php @@ -0,0 +1,232 @@ +currentPeriod() + ->orderBy('TanggalMulaiPeriode', 'desc') + ->get(); + + $groupedData = []; + + foreach ($activities as $activity) { + $docType = strtolower(str_replace(['-', ' '], ['', ''], $activity->JenisDokumen)); + + if (!isset($groupedData[$docType])) { + $groupedData[$docType] = []; + } + + $groupedData[$docType][] = [ + 'id' => $activity->KegiatanID, + 'title' => $activity->NamaKegiatan, + 'description' => $activity->DampakPotensial, + 'link' => '#', + 'periode' => $activity->periode, + 'no_registrasi' => $activity->NoRegistrasi, + 'jenis_dokumen' => $activity->JenisDokumen, + 'bidang_usaha' => $activity->BidangUsaha, + 'skala_besaran' => $activity->SkalaBesaran, + 'lokasi_kegiatan' => $activity->LokasiKegiatan, + 'kewenangan' => $activity->Kewenangan, + 'pemrakarsa' => $activity->Pemrakarsa, + 'provinsi_kota' => $activity->ProvinsiKota, + 'deskripsi_kegiatan' => $activity->DeskripsiKegiatan, + 'dampak_potensial' => $activity->DampakPotensial, + 'deskripsi_lokasi' => $activity->DeskripsiLokasi, + 'latitude' => $activity->Latitude, + 'longitude' => $activity->Longitude + ]; + } + + // Add audit data (static for now) + $groupedData['audit'] = [ + [ + 'no' => 1, + 'company' => 'PT PETROKIMIA GRESIK', + 'title' => 'PENGUMUMAN AUDIT LINGKUNGAN HIDUP WAJIB BERKALA INDUSTRI PETROKIMIA', + 'description' => 'PT Petrokimia Gresik merupakan Kegiatan pada sektor Industri Petrokimia : Industri Pupuk dan Bahan Kimia (Amonia, Pupuk, Asam Sulfat, Asam Fosfat, dan Asam Klorida)...', + 'link' => '#' + ] + ]; + + $response = [ + 'header' => [ + 'title' => 'Daftar Pengumuman & Informasi', + 'subtitle' => 'Daftar Pengumuman dan Informasi terkait kegiatan yang mengajukan izin lingkungan' + ], + 'tabs' => [ + ['id' => 'amdal', 'label' => 'AMDAL'], + ['id' => 'addendum', 'label' => 'Addendum'], + ['id' => 'uklupl', 'label' => 'UKL - UPL'], + ['id' => 'audit', 'label' => 'AUDIT'] + ], + 'contents' => $groupedData + ]; + + return response()->json($response); + } catch (\Exception $e) { + return response()->json([ + 'error' => 'Failed to fetch layanan data', + 'message' => $e->getMessage() + ], 500); + } + } + + /** + * Get specific activity information + */ + public function getActivityInfo($id): JsonResponse + { + try { + $activity = InformasiKegiatan::findOrFail($id); + + $data = [ + 'no_registrasi' => $activity->NoRegistrasi, + 'jenis_dokumen' => $activity->JenisDokumen, + 'nama_kegiatan' => $activity->NamaKegiatan, + 'bidang_usaha' => $activity->BidangUsaha, + 'skala_besaran' => $activity->SkalaBesaran, + 'lokasi_kegiatan' => $activity->LokasiKegiatan, + 'kewenangan' => $activity->Kewenangan, + 'pemrakarsa' => $activity->Pemrakarsa, + 'provinsi_kota' => $activity->ProvinsiKota, + 'deskripsi_kegiatan' => $activity->DeskripsiKegiatan, + 'dampak_potensial' => $activity->DampakPotensial, + 'deskripsi_lokasi' => $activity->DeskripsiLokasi, + 'latitude' => $activity->Latitude, + 'longitude' => $activity->Longitude, + 'periode' => $activity->periode, + 'is_active' => $activity->isActiveFeedbackPeriod() + ]; + + return response()->json($data); + } catch (\Exception $e) { + return response()->json([ + 'error' => 'Activity not found', + 'message' => $e->getMessage() + ], 404); + } + } + + /** + * Submit feedback for an activity + */ + public function submitFeedback(Request $request): JsonResponse + { + try { + $validator = Validator::make($request->all(), [ + 'kegiatan_id' => 'required|exists:InformasiKegiatan,KegiatanID', + 'nama' => 'required|string|max:100', + 'peran' => 'required|in:masyarakat,lsm,akademisi,pemerintah', + 'nik' => 'required|string|size:16', + 'no_telepon' => 'required|string|max:20', + 'email' => 'required|email|max:100', + 'gender' => 'required|in:laki-laki,perempuan', + 'kondisi_lingkungan' => 'required|string', + 'nilai_lokal' => 'required|string', + 'kekhawatiran' => 'required|string', + 'harapan' => 'required|string', + 'tingkat_kekhawatiran' => 'required|integer|min:1|max:5', + 'foto_selfie' => 'nullable|image|mimes:jpg,jpeg,png|max:1024' + ]); + + if ($validator->fails()) { + return response()->json([ + 'error' => 'Validation failed', + 'errors' => $validator->errors() + ], 422); + } + + // Check if activity is still accepting feedback + $activity = InformasiKegiatan::findOrFail($request->kegiatan_id); + if (!$activity->isActiveFeedbackPeriod()) { + return response()->json([ + 'error' => 'Periode pengajuan tanggapan untuk kegiatan ini sudah berakhir' + ], 400); + } + + // Handle photo upload + $photoPath = null; + if ($request->hasFile('foto_selfie')) { + $photo = $request->file('foto_selfie'); + $fileName = time() . '_' . uniqid() . '.' . $photo->getClientOriginalExtension(); + $photoPath = $photo->storeAs('feedback-photos', $fileName, 'public'); + } + + // Create feedback record + $feedback = SaranTanggapan::create([ + 'KegiatanID' => $request->kegiatan_id, + 'Nama' => $request->nama, + 'Peran' => $request->peran, + 'NIK' => $request->nik, + 'NoTelepon' => $request->no_telepon, + 'Email' => $request->email, + 'Gender' => $request->gender, + 'KondisiLingkungan' => $request->kondisi_lingkungan, + 'NilaiLokal' => $request->nilai_lokal, + 'Kekhawatiran' => $request->kekhawatiran, + 'Harapan' => $request->harapan, + 'TingkatKekhawatiran' => $request->tingkat_kekhawatiran, + 'FotoSelfie' => $photoPath, + 'TanggalDiajukan' => now() + ]); + + return response()->json([ + 'message' => 'Tanggapan berhasil dikirim dan akan diproses oleh admin', + 'tanggapan_id' => $feedback->TanggapanID + ], 201); + + } catch (\Exception $e) { + return response()->json([ + 'error' => 'Failed to submit feedback', + 'message' => $e->getMessage() + ], 500); + } + } + + /** + * Get feedback statistics for an activity + */ + public function getFeedbackStats($id): JsonResponse + { + try { + $activity = InformasiKegiatan::findOrFail($id); + + $stats = [ + 'total_feedback' => $activity->saranTanggapan()->count(), + 'approved_feedback' => $activity->saranTanggapanApproved()->count(), + 'pending_feedback' => $activity->saranTanggapan()->pending()->count(), + 'by_role' => [ + 'masyarakat' => $activity->saranTanggapanApproved()->byRole('masyarakat')->count(), + 'lsm' => $activity->saranTanggapanApproved()->byRole('lsm')->count(), + 'akademisi' => $activity->saranTanggapanApproved()->byRole('akademisi')->count(), + 'pemerintah' => $activity->saranTanggapanApproved()->byRole('pemerintah')->count(), + ], + 'average_rating' => $activity->saranTanggapanApproved()->avg('TingkatKekhawatiran') + ]; + + return response()->json($stats); + } catch (\Exception $e) { + return response()->json([ + 'error' => 'Activity not found', + 'message' => $e->getMessage() + ], 404); + } + } +} diff --git a/app/Http/Controllers/JadwalSidangController.php b/app/Http/Controllers/JadwalSidangController.php index b947437..7460df2 100644 --- a/app/Http/Controllers/JadwalSidangController.php +++ b/app/Http/Controllers/JadwalSidangController.php @@ -4,59 +4,85 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\File; +use App\Models\JadwalSidang as JadwalSidangModel; +use App\Models\Perusahaan; +use App\Models\DokumenType; +use Carbon\Carbon; class JadwalSidangController extends Controller { public function index(Request $request) { - $jadwal = json_decode(File::get(public_path('assets/json/backend/jadwal.json')), true); + // Ambil jadwal dari DB dengan relasi + $query = JadwalSidangModel::with(['perusahaan', 'dokumenType'])->orderBy('TanggalMulai', 'desc'); - // Filter by document type if provided in request - $documentType = $request->input('document_type'); - if ($documentType) { - $jadwal = array_values(array_filter($jadwal, function($item) use ($documentType) { - return isset($item['documentType']) && $item['documentType'] === $documentType; - })); + if ($request->filled('document_type')) { + $kode = $request->input('document_type'); + $query->whereHas('dokumenType', function ($q) use ($kode) { + $q->where('Kode', $kode); + }); } - return view('penjadwalan.jadwal_sidang', compact('jadwal')); + $jadwalDb = $query->get(); + + // Map ke struktur frontend lama agar script disable time bekerja + $jadwal = $jadwalDb->map(function ($j) { + return [ + 'id' => $j->JadwalSidangID, + 'title' => $j->NamaKegiatan, + 'start' => optional($j->TanggalMulai)->toIso8601String(), + 'end' => optional($j->TanggalSelesai)->toIso8601String(), + 'documentType' => optional($j->dokumenType)->Kode, + 'perusahaan' => optional($j->perusahaan)->NamaPerusahaan, + 'description' => $j->Deskripsi, + ]; + })->values()->all(); + + // Data master untuk modal + $perusahaan = Perusahaan::orderBy('NamaPerusahaan')->get(); + $dokumenTypes = DokumenType::orderBy('Nama')->get(); + + return view('penjadwalan.jadwal_sidang', compact('jadwal', 'perusahaan', 'dokumenTypes')); } public function create(Request $request) { - // Handle form submission for creating new schedule if ($request->isMethod('post')) { - $jadwal = json_decode(File::get(public_path('assets/json/backend/jadwal.json')), true); + // Validasi minimal + $request->validate([ + 'title' => 'required|string|max:255', + 'perusahaan_id' => 'required|exists:Perusahaan,PerusahaanID', + 'start_date' => 'required|string', + 'end_date' => 'required|string', + 'document_type' => 'required|string', + ]); - // Get the highest ID and increment by 1 - $maxId = 0; - foreach ($jadwal as $item) { - if (isset($item['id']) && $item['id'] > $maxId) { - $maxId = $item['id']; - } - } + // Cari / buat dokumen type jika belum ada + $kode = $request->input('document_type'); + $dokumenType = DokumenType::firstOrCreate( + ['Kode' => $kode], + ['Nama' => strtoupper(str_replace('_', ' ', $kode))] + ); - // Create new jadwal item - $newJadwal = [ - 'id' => $maxId + 1, - 'title' => $request->input('title'), - 'start' => $request->input('start_date'), - 'end' => $request->input('end_date'), - 'allDay' => $request->input('all_day', false), - 'documentType' => $request->input('document_type'), - 'description' => $request->input('description', '') - ]; + // Parse tanggal dari format d/m/Y H:i + $start = Carbon::createFromFormat('d/m/Y H:i', $request->input('start_date')); + $end = Carbon::createFromFormat('d/m/Y H:i', $request->input('end_date')); - // Add to existing jadwal - $jadwal[] = $newJadwal; - - // Save back to JSON file - File::put(public_path('assets/json/backend/jadwal.json'), json_encode($jadwal, JSON_PRETTY_PRINT)); + // Simpan ke DB + JadwalSidangModel::create([ + 'NamaKegiatan' => $request->input('title'), + 'PerusahaanID' => $request->input('perusahaan_id'), + 'DokumenTypeID' => $dokumenType->DokumenTypeID, + 'Deskripsi' => $request->input('description', ''), + 'TanggalMulai' => $start, + 'TanggalSelesai' => $end, + ]); return redirect()->route('jadwal.index')->with('success', 'Jadwal berhasil ditambahkan'); } - return view('penjadwalan.create_jadwal'); + // GET fallback (tidak digunakan karena pakai modal) + return redirect()->route('jadwal.index'); } } diff --git a/app/Http/Controllers/LayananController.php b/app/Http/Controllers/LayananController.php new file mode 100644 index 0000000..d23a145 --- /dev/null +++ b/app/Http/Controllers/LayananController.php @@ -0,0 +1,227 @@ + 'Layanan Perizinan Lingkungan', + 'subtitle' => 'Informasi terkini mengenai berbagai layanan perizinan dan penilaian dampak lingkungan' + ]; + + // Tabs data + $tabs = [ + ['id' => 'amdal', 'label' => 'AMDAL'], + ['id' => 'uklupl', 'label' => 'UKL-UPL'], + ['id' => 'addendum', 'label' => 'Addendum'], + ['id' => 'audit', 'label' => 'AUDIT'] + ]; + + // Contents data from database + $contents = [ + 'amdal' => $this->getKegiatanByJenis('AMDAL'), + 'uklupl' => $this->getKegiatanByJenis('UKL-UPL'), + 'addendum' => $this->getKegiatanByJenis('Addendum'), + 'audit' => $this->getKegiatanByJenis('AUDIT', true) // Special format for audit + ]; + + return response()->json([ + 'header' => $header, + 'tabs' => $tabs, + 'contents' => $contents + ]); + } + + /** + * Get kegiatan data by document type + */ + private function getKegiatanByJenis($jenis, $isAudit = false) + { + $kegiatan = InformasiKegiatan::where('JenisDokumen', $jenis) + ->where('Status', 'aktif') + ->whereDate('TanggalSelesaiPeriode', '>=', Carbon::now()) + ->orderBy('TanggalMulaiPeriode', 'desc') + ->take(10) + ->get(); + + if ($isAudit) { + // Format untuk audit table + return $kegiatan->map(function ($item, $index) { + return [ + 'no' => $index + 1, + 'company' => $item->Pemrakarsa, + 'title' => $item->NamaKegiatan, + 'description' => $item->DeskripsiKegiatan, + 'link' => route('layanan.detail', $item->KegiatanID) + ]; + })->toArray(); + } else { + // Format untuk standard items + return $kegiatan->map(function ($item) { + return [ + 'id' => $item->KegiatanID, + 'title' => $item->NamaKegiatan, + 'description' => $item->DeskripsiKegiatan, + 'periode' => $this->formatPeriode($item->TanggalMulaiPeriode, $item->TanggalSelesaiPeriode), + 'link' => route('layanan.detail', $item->KegiatanID), + 'status' => $item->Status, + 'pemrakarsa' => $item->Pemrakarsa, + 'jenis_dokumen' => $item->JenisDokumen, + 'no_registrasi' => $item->NoRegistrasi + ]; + })->toArray(); + } + } + + /** + * Format periode display + */ + private function formatPeriode($tanggalMulai, $tanggalSelesai) + { + $mulai = Carbon::parse($tanggalMulai); + $selesai = Carbon::parse($tanggalSelesai); + + return $mulai->format('d M') . ' - ' . $selesai->format('d M Y'); + } + + /** + * Get detail kegiatan for feedback form + */ + public function getDetailKegiatan($id) + { + $kegiatan = InformasiKegiatan::findOrFail($id); + + return response()->json([ + 'id' => $kegiatan->KegiatanID, + 'no_registrasi' => $kegiatan->NoRegistrasi, + 'jenis_dokumen' => $kegiatan->JenisDokumen, + 'nama_kegiatan' => $kegiatan->NamaKegiatan, + 'bidang_usaha' => $kegiatan->BidangUsaha, + 'skala_besaran' => $kegiatan->SkalaBesaran, + 'lokasi_kegiatan' => $kegiatan->LokasiKegiatan, + 'kewenangan' => $kegiatan->Kewenangan, + 'pemrakarsa' => $kegiatan->Pemrakarsa, + 'provinsi_kota' => $kegiatan->ProvinsiKota, + 'deskripsi_kegiatan' => $kegiatan->DeskripsiKegiatan, + 'dampak_potensial' => $kegiatan->DampakPotensial, + 'deskripsi_lokasi' => $kegiatan->DeskripsiLokasi, + 'latitude' => $kegiatan->Latitude, + 'longitude' => $kegiatan->Longitude, + 'periode' => $this->formatPeriode($kegiatan->TanggalMulaiPeriode, $kegiatan->TanggalSelesaiPeriode) + ]); + } + + /** + * Get wilayah data (Kabupaten, Kecamatan, Kelurahan) + */ + public function getWilayahData() + { + $kabupaten = Kabupaten::orderBy('NamaKabupaten')->get(); + $kecamatan = Kecamatan::orderBy('NamaKecamatan')->get(); + $kelurahan = Kelurahan::orderBy('NamaKelurahan')->get(); + + return response()->json([ + 'kabkota' => $kabupaten->map(function($item) { + return [ + 'value' => $item->KabupatenId, + 'label' => $item->NamaKabupaten + ]; + }), + 'kecamatan' => $kecamatan->map(function($item) { + return [ + 'value' => $item->KecamatanId, + 'label' => $item->NamaKecamatan, + 'kabupaten_id' => $item->KabupatenId + ]; + }), + 'kelurahan' => $kelurahan->map(function($item) { + return [ + 'value' => $item->KelurahanId, + 'label' => $item->NamaKelurahan, + 'kecamatan_id' => $item->KecamatanId + ]; + }) + ]); + } + + /** + * Get filtered kegiatan data + */ + public function getFilteredKegiatan(Request $request) + { + $query = InformasiKegiatan::where('Status', 'aktif') + ->whereDate('TanggalSelesaiPeriode', '>=', Carbon::now()); + + // Filter by search term + if ($request->search) { + $query->where(function($q) use ($request) { + $q->where('NamaKegiatan', 'ILIKE', '%' . $request->search . '%') + ->orWhere('DeskripsiKegiatan', 'ILIKE', '%' . $request->search . '%') + ->orWhere('Pemrakarsa', 'ILIKE', '%' . $request->search . '%'); + }); + } + + // Filter by document type + if ($request->jenis_dokumen) { + $allowedTypes = ['AMDAL', 'UKL-UPL', 'Addendum', 'AUDIT']; + if (in_array($request->jenis_dokumen, $allowedTypes)) { + $query->where('JenisDokumen', $request->jenis_dokumen); + } + } + + // Filter by location (you can extend this based on your needs) + if ($request->kabkota) { + $query->where('ProvinsiKota', 'ILIKE', '%' . $request->kabkota . '%'); + } + + $kegiatan = $query->orderBy('TanggalMulaiPeriode', 'desc')->get(); + + // Group by document type + $groupedKegiatan = $kegiatan->groupBy('JenisDokumen'); + + $contents = []; + foreach ($groupedKegiatan as $jenis => $items) { + $key = strtolower($jenis); + if ($jenis === 'AUDIT') { + $contents[$key] = $items->map(function ($item, $index) { + return [ + 'no' => $index + 1, + 'company' => $item->Pemrakarsa, + 'title' => $item->NamaKegiatan, + 'description' => $item->DeskripsiKegiatan, + 'link' => route('layanan.detail', $item->KegiatanID) + ]; + })->toArray(); + } else { + $contents[$key] = $items->map(function ($item) { + return [ + 'id' => $item->KegiatanID, + 'title' => $item->NamaKegiatan, + 'description' => $item->DeskripsiKegiatan, + 'periode' => $this->formatPeriode($item->TanggalMulaiPeriode, $item->TanggalSelesaiPeriode), + 'link' => route('layanan.detail', $item->KegiatanID), + 'status' => $item->Status, + 'pemrakarsa' => $item->Pemrakarsa, + 'jenis_dokumen' => $item->JenisDokumen, + 'no_registrasi' => $item->NoRegistrasi + ]; + })->toArray(); + } + } + + return response()->json($contents); + } +} diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php index cec82c1..1e56164 100644 --- a/app/Http/Controllers/LoginController.php +++ b/app/Http/Controllers/LoginController.php @@ -10,4 +10,10 @@ class LoginController extends Controller { return view('auth/signin'); } + + public function register() + { + return view('auth/signup'); + } + } diff --git a/app/Http/Controllers/PengumumanController.php b/app/Http/Controllers/PengumumanController.php new file mode 100644 index 0000000..cafb68f --- /dev/null +++ b/app/Http/Controllers/PengumumanController.php @@ -0,0 +1,301 @@ +active() + ->orderBy('TanggalMulaiPeriode', 'desc') + ->get() + ->map(function ($item, $index) { + return [ + 'no' => $index + 1, + 'no_registrasi' => $item->NoRegistrasi, + 'nama_perusahaan' => $item->Pemrakarsa, + 'nama_kegiatan' => $item->NamaKegiatan, + 'jenis_dokumen' => $item->JenisDokumen, + 'periode' => $this->formatBusinessDayPeriod($item->TanggalMulaiPeriode, 10), + 'status' => 'Menunggu Tanggapan', + 'detail_url' => route('pengumuman.detail', $item->KegiatanID) + ]; + }); + + return view('pengumuman.index', compact('pengumuman')); + } + + /** + * Generate business day period (10 working days excluding weekends and holidays) + */ + private function formatBusinessDayPeriod($startDate, $workingDays = 10) + { + $start = Carbon::parse($startDate); + $current = $start->copy(); + $daysAdded = 0; + + // Indonesian public holidays 2025 (tanggal merah) + $holidays = [ + '2025-01-01', // Tahun Baru + '2025-01-29', // Tahun Baru Imlek + '2025-03-29', // Hari Raya Nyepi + '2025-03-30', // Wafat Isa Almasih + '2025-04-09', // Isra Miraj + '2025-05-01', // Hari Buruh + '2025-05-12', // Hari Raya Waisak + '2025-05-29', // Kenaikan Isa Almasih + '2025-06-01', // Hari Lahir Pancasila + '2025-06-06', // Idul Fitri 1446 H + '2025-06-07', // Idul Fitri 1446 H + '2025-08-17', // Hari Kemerdekaan RI + '2025-08-31', // Idul Adha 1446 H + '2025-09-21', // Tahun Baru Islam 1447 H + '2025-11-30', // Maulid Nabi Muhammad SAW + '2025-12-25', // Hari Raya Natal + ]; + + while ($daysAdded < $workingDays) { + $current->addDay(); + + // Skip weekends (Saturday = 6, Sunday = 0) + if ($current->dayOfWeek == Carbon::SATURDAY || $current->dayOfWeek == Carbon::SUNDAY) { + continue; + } + + // Skip public holidays + if (in_array($current->format('Y-m-d'), $holidays)) { + continue; + } + + $daysAdded++; + } + + return $start->format('d M') . ' - ' . $current->format('d M Y'); + } + + public function detail($id) + { + $kegiatan = InformasiKegiatan::with('saranTanggapanApproved')->findOrFail($id); + return view('pengumuman.detail', compact('kegiatan')); + } + + public function create() + { + $kabupaten = Kabupaten::orderBy('NamaKabupaten', 'asc')->get(); + return view('pengumuman.create', compact('kabupaten')); + } + + /** + * Generate unique 12-digit registration number with enhanced security + * Format: Mixed alphanumeric with timestamp hash to prevent easy guessing + * Example: ENV4B7X9K2M + */ + private function generateRegistrationNumber() + { + do { + // Create a unique seed from current time, microtime, and random data + $seed = now()->timestamp . microtime(true) . random_int(100000, 999999); + + // Generate hash and extract alphanumeric characters + $hash = hash('sha256', $seed); + + // Create character pool (excluding similar looking characters) + $chars = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ'; + + // Start with prefix + $prefix = 'REG'; + + // Generate 9 additional characters from hash + $remaining = ''; + $hashPos = 0; + + while (strlen($remaining) < 9 && $hashPos < strlen($hash)) { + $hexChar = strtoupper($hash[$hashPos]); + + // Convert hex to index in our character pool + $index = hexdec($hexChar) % strlen($chars); + $remaining .= $chars[$index]; + + $hashPos++; + } + + // If we need more characters, use additional random generation + while (strlen($remaining) < 9) { + $remaining .= $chars[random_int(0, strlen($chars) - 1)]; + } + + $registrationNumber = $prefix . $remaining; + + // Check if this number already exists + $exists = InformasiKegiatan::where('NoRegistrasi', $registrationNumber)->exists(); + + } while ($exists); // Keep generating until we get a unique number + + return $registrationNumber; + } + + public function store(Request $request) + { + $validated = $request->validate([ + 'jenis_dokumen' => 'required|string|max:50', + 'nama_kegiatan' => 'required|string|max:255', + 'pemrakarsa' => 'required|string|max:100', + 'bidang_usaha' => 'required|string|max:100', + 'deskripsi_kegiatan' => 'required|string', + 'dampak_potensial' => 'required|string', + 'kabupaten' => 'required|string|max:100', + 'kecamatan' => 'required|string|max:100', + 'kelurahan' => 'required|string|max:100', + 'lokasi_kegiatan' => 'nullable|string|max:100', + 'deskripsi_lokasi' => 'required|string', + 'latitude' => 'nullable|numeric|between:-90,90', + 'longitude' => 'nullable|numeric|between:-180,180', + 'tanggal_mulai' => 'required|date|after_or_equal:today', + 'skala_besaran' => 'nullable|string|max:50', + 'kewenangan' => 'required|string|max:50', + 'status' => 'required|in:aktif,nonaktif' + ], [ + 'jenis_dokumen.required' => 'Jenis dokumen wajib dipilih', + 'nama_kegiatan.required' => 'Nama kegiatan wajib diisi', + 'pemrakarsa.required' => 'Pemrakarsa wajib diisi', + 'bidang_usaha.required' => 'Bidang usaha wajib diisi', + 'deskripsi_kegiatan.required' => 'Deskripsi kegiatan wajib diisi', + 'dampak_potensial.required' => 'Dampak potensial wajib diisi', + 'kabupaten.required' => 'Kabupaten wajib dipilih', + 'kecamatan.required' => 'Kecamatan wajib dipilih', + 'kelurahan.required' => 'Kelurahan wajib dipilih', + 'deskripsi_lokasi.required' => 'Deskripsi lokasi wajib diisi', + 'tanggal_mulai.required' => 'Tanggal mulai periode wajib diisi', + 'tanggal_mulai.after_or_equal' => 'Tanggal mulai tidak boleh kurang dari hari ini', + 'kewenangan.required' => 'Kewenangan wajib dipilih', + 'status.required' => 'Status wajib dipilih', + 'latitude.between' => 'Latitude harus antara -90 sampai 90', + 'longitude.between' => 'Longitude harus antara -180 sampai 180' + ]); + + try { + // Generate unique registration number + $noRegistrasi = $this->generateRegistrationNumber(); + + // Calculate end date (10 business days from start date) + $startDate = Carbon::parse($validated['tanggal_mulai']); + $endDate = $this->calculateBusinessDayEnd($startDate, 10); + + // Get location names from database + $kabupaten = Kabupaten::find($validated['kabupaten']); + $kecamatan = Kecamatan::find($validated['kecamatan']); + $kelurahan = Kelurahan::find($validated['kelurahan']); + + $kombinasiLokasi = $kabupaten->NamaKabupaten . ', ' . $kecamatan->NamaKecamatan . ', ' . $kelurahan->NamaKelurahan; + + InformasiKegiatan::create([ + 'NoRegistrasi' => $noRegistrasi, + 'JenisDokumen' => $validated['jenis_dokumen'], + 'NamaKegiatan' => $validated['nama_kegiatan'], + 'Pemrakarsa' => $validated['pemrakarsa'], + 'BidangUsaha' => $validated['bidang_usaha'], + 'DeskripsiKegiatan' => $validated['deskripsi_kegiatan'], + 'DampakPotensial' => $validated['dampak_potensial'], + 'ProvinsiKota' => $kombinasiLokasi, + 'LokasiKegiatan' => $validated['lokasi_kegiatan'], + 'DeskripsiLokasi' => $validated['deskripsi_lokasi'], + 'Latitude' => $validated['latitude'], + 'Longitude' => $validated['longitude'], + 'TanggalMulaiPeriode' => $startDate, + 'TanggalSelesaiPeriode' => $endDate, + 'SkalaBesaran' => $validated['skala_besaran'], + 'Kewenangan' => $validated['kewenangan'], + 'Status' => $validated['status'] + ]); + + return redirect()->route('pengumuman.index') + ->with('success', 'Pengumuman kegiatan berhasil ditambahkan dengan nomor registrasi: ' . $noRegistrasi); + + } catch (\Exception $e) { + return back() + ->withInput() + ->with('error', 'Terjadi kesalahan saat menyimpan data: ' . $e->getMessage()); + } + } + + public function calculatePeriod(Request $request) + { + $startDate = Carbon::parse($request->start_date); + $endDate = $this->calculateBusinessDayEnd($startDate, 10); + + $periode = $startDate->format('d M') . ' - ' . $endDate->format('d M Y'); + + return response()->json([ + 'success' => true, + 'periode' => $periode, + 'start_date' => $startDate->format('Y-m-d'), + 'end_date' => $endDate->format('Y-m-d') + ]); + } + + /** + * Calculate business day end date (excludes weekends and holidays) + */ + private function calculateBusinessDayEnd($startDate, $workingDays = 10) + { + $current = $startDate->copy(); + $daysAdded = 0; + + // Indonesian public holidays 2025 (tanggal merah) + $holidays = [ + '2025-01-01', '2025-01-29', '2025-03-29', '2025-03-30', '2025-04-09', + '2025-05-01', '2025-05-12', '2025-05-29', '2025-06-01', '2025-06-06', + '2025-06-07', '2025-08-17', '2025-08-31', '2025-09-21', '2025-11-30', + '2025-12-25' + ]; + + while ($daysAdded < $workingDays) { + $current->addDay(); + + // Skip weekends and holidays + if ($current->dayOfWeek == Carbon::SATURDAY || + $current->dayOfWeek == Carbon::SUNDAY || + in_array($current->format('Y-m-d'), $holidays)) { + continue; + } + + $daysAdded++; + } + + return $current; + } + + /** + * Get kecamatan by kabupaten ID + */ + public function getKecamatan(Request $request) + { + $kabupatenId = $request->kabupaten_id; + $kecamatan = Kecamatan::where('KabupatenId', $kabupatenId) + ->orderBy('NamaKecamatan', 'asc') + ->get(['KecamatanId', 'NamaKecamatan']); + + return response()->json($kecamatan); + } + + /** + * Get kelurahan by kecamatan ID + */ + public function getKelurahan(Request $request) + { + $kecamatanId = $request->kecamatan_id; + $kelurahan = Kelurahan::where('KecamatanId', $kecamatanId) + ->orderBy('NamaKelurahan', 'asc') + ->get(['KelurahanId', 'NamaKelurahan']); + + return response()->json($kelurahan); + } +} diff --git a/app/Http/Controllers/PerusahaanController.php b/app/Http/Controllers/PerusahaanController.php new file mode 100644 index 0000000..86db16a --- /dev/null +++ b/app/Http/Controllers/PerusahaanController.php @@ -0,0 +1,17 @@ + $request->query('user'), + 'daftarId' => $request->query('daftar'), + ]); + } +} diff --git a/app/Http/Controllers/SignupController.php b/app/Http/Controllers/SignupController.php new file mode 100644 index 0000000..a1e66d8 --- /dev/null +++ b/app/Http/Controllers/SignupController.php @@ -0,0 +1,65 @@ +validate([ + 'company_name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'email', 'max:255', 'unique:users,email'], + 'password' => ['required', 'string', 'min:8', 'confirmed'], + ]); + + // Create user and signup record + DB::beginTransaction(); + try { + $user = User::create([ + 'name' => $data['company_name'], + 'email' => $data['email'], + 'username' => $data['email'], + 'password' => Hash::make($data['password']), + ]); + + // Ensure 'perusahaan' role exists, then assign it + if (!\Spatie\Permission\Models\Role::where('name', 'perusahaan')->exists()) { + \Spatie\Permission\Models\Role::create(['name' => 'perusahaan']); + } + $user->assignRole('perusahaan'); + + // Create Daftar record (Status Active by default) + $daftar = Daftar::create([ + 'NamaPerusahaan' => $data['company_name'], + 'Email' => $data['email'], + 'Password' => Hash::make($data['password']), + 'Status' => 'Active', + ]); + + // Ensure a Perusahaan exists and attach user via pivot + $perusahaan = Perusahaan::firstOrCreate( + ['NamaPerusahaan' => $data['company_name']], + ['Alamat' => null] + ); + + // Attach user to perusahaan via pivot (avoid duplicates) + $user->perusahaans()->syncWithoutDetaching([$perusahaan->PerusahaanID]); + + DB::commit(); + } catch (\Throwable $e) { + DB::rollBack(); + report($e); + return back()->withErrors(['error' => 'Registration failed.']); + } + + // Redirect to login page; user already has 'perusahaan' role and is attached to perusahaan + return redirect()->route('login.index')->with('status', 'Akun berhasil dibuat dan aktif. Silakan masuk.'); + } +} diff --git a/app/Models/Daftar.php b/app/Models/Daftar.php new file mode 100644 index 0000000..9c356b3 --- /dev/null +++ b/app/Models/Daftar.php @@ -0,0 +1,34 @@ + 'datetime', + 'updated_at' => 'datetime', + ]; +} diff --git a/app/Models/DokumenType.php b/app/Models/DokumenType.php new file mode 100644 index 0000000..6562eab --- /dev/null +++ b/app/Models/DokumenType.php @@ -0,0 +1,22 @@ +hasMany(JadwalSidang::class, 'DokumenTypeID', 'DokumenTypeID'); + } +} + diff --git a/app/Models/FastestPermohonan.php b/app/Models/FastestPermohonan.php index b41661c..9ede079 100644 --- a/app/Models/FastestPermohonan.php +++ b/app/Models/FastestPermohonan.php @@ -41,7 +41,7 @@ class FastestPermohonan extends Model return self::where('Kategori_ID', $kategori) ->whereDate('SyncDate', $latestSyncDate) - ->orderBy('FastestPermohonanID') // Keep API order by using insertion order + ->orderBy('FastestPermohonanID') ->limit(5) ->get(); } diff --git a/app/Models/InformasiKegiatan.php b/app/Models/InformasiKegiatan.php new file mode 100644 index 0000000..5d26b2e --- /dev/null +++ b/app/Models/InformasiKegiatan.php @@ -0,0 +1,103 @@ + 'date', + 'TanggalSelesaiPeriode' => 'date', + 'Latitude' => 'decimal:8', + 'Longitude' => 'decimal:8', + ]; + + /** + * Get all feedback for this activity + */ + public function saranTanggapan() + { + return $this->hasMany(SaranTanggapan::class, 'KegiatanID'); + } + + /** + * Get approved feedback only + */ + public function saranTanggapanApproved() + { + return $this->hasMany(SaranTanggapan::class, 'KegiatanID')->where('Status', 'approved'); + } + + /** + * Scope for active activities + */ + public function scopeActive($query) + { + return $query->where('Status', 'aktif'); + } + + /** + * Scope for specific document type + */ + public function scopeByDocumentType($query, $type) + { + return $query->where('JenisDokumen', $type); + } + + /** + * Scope for current period + */ + public function scopeCurrentPeriod($query) + { + $today = now()->toDateString(); + return $query->where('TanggalMulaiPeriode', '<=', $today) + ->where('TanggalSelesaiPeriode', '>=', $today); + } + + /** + * Get formatted period string + */ + public function getPeriodeAttribute() + { + return $this->TanggalMulaiPeriode->format('d M') . ' - ' . + $this->TanggalSelesaiPeriode->format('d M Y'); + } + + /** + * Check if activity is currently active for feedback + */ + public function isActiveFeedbackPeriod() + { + $today = now()->toDateString(); + return $this->Status === 'aktif' && + $this->TanggalMulaiPeriode <= $today && + $this->TanggalSelesaiPeriode >= $today; + } +} diff --git a/app/Models/JadwalSidang.php b/app/Models/JadwalSidang.php new file mode 100644 index 0000000..64bdfb8 --- /dev/null +++ b/app/Models/JadwalSidang.php @@ -0,0 +1,35 @@ + 'datetime', + 'TanggalSelesai' => 'datetime', + ]; + + public function dokumenType() + { + return $this->belongsTo(DokumenType::class, 'DokumenTypeID', 'DokumenTypeID'); + } + + public function perusahaan() + { + return $this->belongsTo(Perusahaan::class, 'PerusahaanID', 'PerusahaanID'); + } +} diff --git a/app/Models/Kabupaten.php b/app/Models/Kabupaten.php new file mode 100644 index 0000000..fe53e52 --- /dev/null +++ b/app/Models/Kabupaten.php @@ -0,0 +1,20 @@ +hasMany(Kecamatan::class, 'KabupatenId', 'KabupatenId'); + } +} diff --git a/app/Models/Kecamatan.php b/app/Models/Kecamatan.php new file mode 100644 index 0000000..798cbf6 --- /dev/null +++ b/app/Models/Kecamatan.php @@ -0,0 +1,29 @@ +belongsTo(Kabupaten::class, 'KabupatenId', 'KabupatenId'); + } + + public function kelurahan() + { + return $this->hasMany(Kelurahan::class, 'KecamatanId', 'KecamatanId'); + } +} diff --git a/app/Models/Kelurahan.php b/app/Models/Kelurahan.php new file mode 100644 index 0000000..500a2ff --- /dev/null +++ b/app/Models/Kelurahan.php @@ -0,0 +1,19 @@ +belongsTo(Kecamatan::class, 'KecamatanId', 'KecamatanId'); + } +} diff --git a/app/Models/Perusahaan.php b/app/Models/Perusahaan.php new file mode 100644 index 0000000..211e8e0 --- /dev/null +++ b/app/Models/Perusahaan.php @@ -0,0 +1,26 @@ +hasMany(JadwalSidang::class, 'PerusahaanID', 'PerusahaanID'); + } + + public function users() + { + return $this->belongsToMany(User::class, 'Perusahaan_User', 'PerusahaanID', 'UserID'); + } +} diff --git a/app/Models/SaranTanggapan.php b/app/Models/SaranTanggapan.php new file mode 100644 index 0000000..9c68a48 --- /dev/null +++ b/app/Models/SaranTanggapan.php @@ -0,0 +1,139 @@ + 'datetime', + 'TanggalDiproses' => 'datetime', + 'TingkatKekhawatiran' => 'integer' + ]; + + /** + * Get the activity this feedback belongs to + */ + public function informasiKegiatan() + { + return $this->belongsTo(InformasiKegiatan::class, 'KegiatanID'); + } + + /** + * Scope for pending feedback + */ + public function scopePending($query) + { + return $query->where('Status', 'pending'); + } + + /** + * Scope for approved feedback + */ + public function scopeApproved($query) + { + return $query->where('Status', 'approved'); + } + + /** + * Scope for rejected feedback + */ + public function scopeRejected($query) + { + return $query->where('Status', 'rejected'); + } + + /** + * Scope by role + */ + public function scopeByRole($query, $role) + { + return $query->where('Peran', $role); + } + + /** + * Get the rating level description + */ + public function getRatingDescriptionAttribute() + { + $descriptions = [ + 1 => 'Sangat Khawatir', + 2 => 'Khawatir', + 3 => 'Netral', + 4 => 'Berharap', + 5 => 'Sangat Berharap' + ]; + + return $descriptions[$this->TingkatKekhawatiran] ?? 'Tidak Diketahui'; + } + + /** + * Get formatted submission date + */ + public function getFormattedSubmissionDateAttribute() + { + return $this->TanggalDiajukan->format('d M Y H:i'); + } + + /** + * Get photo URL + */ + public function getPhotoUrlAttribute() + { + if ($this->FotoSelfie) { + return asset('storage/feedback-photos/' . $this->FotoSelfie); + } + return null; + } + + /** + * Approve this feedback + */ + public function approve($adminNote = null) + { + $this->update([ + 'Status' => 'approved', + 'CatatanAdmin' => $adminNote, + 'TanggalDiproses' => now() + ]); + } + + /** + * Reject this feedback + */ + public function reject($adminNote = null) + { + $this->update([ + 'Status' => 'rejected', + 'CatatanAdmin' => $adminNote, + 'TanggalDiproses' => now() + ]); + } +} diff --git a/app/Models/Signup.php b/app/Models/Signup.php new file mode 100644 index 0000000..21af8ea --- /dev/null +++ b/app/Models/Signup.php @@ -0,0 +1,34 @@ + 'datetime', + 'updated_at' => 'datetime', + ]; +} diff --git a/app/Models/User.php b/app/Models/User.php index c05eea9..d735ffd 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -64,4 +64,9 @@ class User extends Authenticatable 'password' => 'hashed', ]; } + + public function perusahaans() + { + return $this->belongsToMany(Perusahaan::class, 'Perusahaan_User', 'UserID', 'PerusahaanID'); + } } diff --git a/database/migrations/2025_01_17_100000_create_informasi_kegiatan_table.php b/database/migrations/2025_01_17_100000_create_informasi_kegiatan_table.php new file mode 100644 index 0000000..a7b91d0 --- /dev/null +++ b/database/migrations/2025_01_17_100000_create_informasi_kegiatan_table.php @@ -0,0 +1,47 @@ +id('KegiatanID'); + $table->string('NoRegistrasi', 50)->unique(); + $table->string('JenisDokumen', 50); + $table->string('NamaKegiatan'); + $table->string('BidangUsaha', 100); + $table->string('SkalaBesaran', 50); + $table->string('LokasiKegiatan', 100)->nullable(); + $table->string('Kewenangan', 50); + $table->string('Pemrakarsa', 100); + $table->string('ProvinsiKota', 100); + $table->text('DeskripsiKegiatan'); + $table->text('DampakPotensial'); + $table->string('DeskripsiLokasi'); + $table->decimal('Latitude', 10, 8)->nullable(); + $table->decimal('Longitude', 11, 8)->nullable(); + $table->date('TanggalMulaiPeriode'); + $table->date('TanggalSelesaiPeriode'); + $table->enum('Status', ['aktif', 'nonaktif', 'selesai'])->default('aktif'); + $table->timestamps(); + + $table->index(['JenisDokumen', 'Status']); + $table->index(['TanggalMulaiPeriode', 'TanggalSelesaiPeriode']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('InformasiKegiatan'); + } +}; diff --git a/database/migrations/2025_01_17_101000_create_saran_tanggapan_table.php b/database/migrations/2025_01_17_101000_create_saran_tanggapan_table.php new file mode 100644 index 0000000..8afb400 --- /dev/null +++ b/database/migrations/2025_01_17_101000_create_saran_tanggapan_table.php @@ -0,0 +1,49 @@ +id('TanggapanID'); + $table->unsignedBigInteger('KegiatanID'); + $table->string('Nama', 100); + $table->enum('Peran', ['masyarakat', 'lsm', 'akademisi', 'pemerintah']); + $table->string('NIK', 16); + $table->string('NoTelepon', 20); + $table->string('Email', 100); + $table->enum('Gender', ['laki-laki', 'perempuan']); + $table->text('KondisiLingkungan'); + $table->text('NilaiLokal'); + $table->text('Kekhawatiran'); + $table->text('Harapan'); + $table->tinyInteger('TingkatKekhawatiran')->comment('1-5 scale: 1=sangat khawatir, 5=sangat berharap'); + $table->string('FotoSelfie', 255)->nullable(); + $table->enum('Status', ['pending', 'approved', 'rejected'])->default('pending'); + $table->text('CatatanAdmin')->nullable(); + $table->timestamp('TanggalDiajukan')->useCurrent(); + $table->timestamp('TanggalDiproses')->nullable(); + $table->timestamps(); + + $table->foreign('KegiatanID')->references('KegiatanID')->on('InformasiKegiatan')->onDelete('cascade'); + $table->index(['KegiatanID', 'Status']); + $table->index(['Peran', 'Status']); + $table->index('TanggalDiajukan'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('SaranTanggapan'); + } +}; diff --git a/database/migrations/2025_09_12_000000_create_dokumen_type_table.php b/database/migrations/2025_09_12_000000_create_dokumen_type_table.php new file mode 100644 index 0000000..b595ac6 --- /dev/null +++ b/database/migrations/2025_09_12_000000_create_dokumen_type_table.php @@ -0,0 +1,32 @@ +id('DokumenTypeID'); + $table->string('Kode', 50)->unique(); + $table->string('Nama', 100); + $table->timestamps(); + + $table->index(['Kode'], 'IX_DokumenType_Kode'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('DokumenType'); + } +}; + diff --git a/database/migrations/2025_09_12_000001_create_jadwal_sidang_table.php b/database/migrations/2025_09_12_000001_create_jadwal_sidang_table.php new file mode 100644 index 0000000..b487bee --- /dev/null +++ b/database/migrations/2025_09_12_000001_create_jadwal_sidang_table.php @@ -0,0 +1,45 @@ +id('JadwalSidangID'); + $table->string('NamaKegiatan'); + // FK ke master DokumenType + $table->unsignedBigInteger('DokumenTypeID'); + $table->text('Deskripsi')->nullable(); + $table->dateTime('TanggalMulai'); + $table->dateTime('TanggalSelesai'); + $table->timestamps(); + + $table->index(['DokumenTypeID'], 'IX_Jadwal_DokumenTypeID'); + $table->index(['TanggalMulai'], 'IX_Jadwal_TanggalMulai'); + $table->index(['TanggalMulai', 'TanggalSelesai'], 'IX_Jadwal_TanggalRange'); + + $table->foreign('DokumenTypeID') + ->references('DokumenTypeID') + ->on('DokumenType') + ->cascadeOnUpdate() + ->restrictOnDelete(); + }); + + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('JadwalSidang'); + } +}; diff --git a/database/migrations/2025_09_12_000002_create_perusahaan_table.php b/database/migrations/2025_09_12_000002_create_perusahaan_table.php new file mode 100644 index 0000000..b0ba7a5 --- /dev/null +++ b/database/migrations/2025_09_12_000002_create_perusahaan_table.php @@ -0,0 +1,29 @@ +id('PerusahaanID'); + $table->string('NamaPerusahaan', 255); + $table->text('Alamat')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('Perusahaan'); + } +}; diff --git a/database/migrations/2025_09_12_000003_alter_jadwal_sidang_add_perusahaan_fk.php b/database/migrations/2025_09_12_000003_alter_jadwal_sidang_add_perusahaan_fk.php new file mode 100644 index 0000000..4ce0404 --- /dev/null +++ b/database/migrations/2025_09_12_000003_alter_jadwal_sidang_add_perusahaan_fk.php @@ -0,0 +1,37 @@ +unsignedBigInteger('PerusahaanID')->after('JadwalSidangID'); + $table->index(['PerusahaanID'], 'IX_Jadwal_PerusahaanID'); + $table->foreign('PerusahaanID') + ->references('PerusahaanID') + ->on('Perusahaan') + ->cascadeOnUpdate() + ->restrictOnDelete(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('JadwalSidang', function (Blueprint $table) { + $table->dropForeign(['PerusahaanID']); + $table->dropIndex('IX_Jadwal_PerusahaanID'); + $table->dropColumn('PerusahaanID'); + }); + } +}; + diff --git a/database/migrations/2025_09_17_000001_create_signups_table.php b/database/migrations/2025_09_17_000001_create_signups_table.php new file mode 100644 index 0000000..67a99c9 --- /dev/null +++ b/database/migrations/2025_09_17_000001_create_signups_table.php @@ -0,0 +1,31 @@ +uuid('DaftarID')->primary(); + $table->string('NamaPerusahaan'); + $table->string('Email')->unique(); + $table->string('Password'); + $table->string('Status')->default('Active'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('signups'); + } +}; diff --git a/database/migrations/2025_09_17_000003_create_perusahaan_user_table.php b/database/migrations/2025_09_17_000003_create_perusahaan_user_table.php new file mode 100644 index 0000000..c967438 --- /dev/null +++ b/database/migrations/2025_09_17_000003_create_perusahaan_user_table.php @@ -0,0 +1,36 @@ +id(), so it's bigint + $table->unsignedBigInteger('PerusahaanID'); + // users.id is UUID in this project + $table->uuid('UserID'); + $table->timestamps(); + + $table->primary(['PerusahaanID', 'UserID']); + + // Foreign key constraints + $table->foreign('PerusahaanID')->references('PerusahaanID')->on('Perusahaan')->onDelete('cascade'); + $table->foreign('UserID')->references('id')->on('users')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('Perusahaan_User'); + } +}; diff --git a/database/migrations/2025_09_17_045610_kabupaten.php b/database/migrations/2025_09_17_045610_kabupaten.php new file mode 100644 index 0000000..48f5afd --- /dev/null +++ b/database/migrations/2025_09_17_045610_kabupaten.php @@ -0,0 +1,28 @@ +id('KabupatenId'); + $table->string('NamaKabupaten'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('Kabupaten'); + } +}; diff --git a/database/migrations/2025_09_17_045625_kecamatan.php b/database/migrations/2025_09_17_045625_kecamatan.php new file mode 100644 index 0000000..3ef994f --- /dev/null +++ b/database/migrations/2025_09_17_045625_kecamatan.php @@ -0,0 +1,30 @@ +id('KecamatanId'); + $table->unsignedBigInteger('KabupatenId'); + $table->foreign('KabupatenId')->references('KabupatenId')->on('Kabupaten')->onDelete('cascade'); + $table->string('NamaKecamatan'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('Kecamatan'); + } +}; diff --git a/database/migrations/2025_09_17_045651_kelurahan.php b/database/migrations/2025_09_17_045651_kelurahan.php new file mode 100644 index 0000000..80fa63a --- /dev/null +++ b/database/migrations/2025_09_17_045651_kelurahan.php @@ -0,0 +1,30 @@ +id('KelurahanId'); + $table->unsignedBigInteger('KecamatanId'); + $table->foreign('KecamatanId')->references('KecamatanId')->on('Kecamatan')->onDelete('cascade'); + $table->string('NamaKelurahan'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('Kelurahan'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 0ac5283..2884292 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -2,10 +2,10 @@ namespace Database\Seeders; -use App\Models\User; use Database\Seeders\UserSeeder; use Database\Seeders\RolesAndPermissionsSeeder; -// use Illuminate\Database\Console\Seeds\WithoutModelEvents; +use Database\Seeders\PerusahaanSeeder; +use Database\Seeders\InformasiKegiatanSeeder; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder @@ -19,6 +19,11 @@ class DatabaseSeeder extends Seeder $this->call([ RolesAndPermissionsSeeder::class, UserSeeder::class, + PerusahaanSeeder::class, + InformasiKegiatanSeeder::class, + KabupatenTableSeeder::class, + KecamatanTableSeeder::class, + KelurahanTableSeeder::class, ]); } } diff --git a/database/seeders/InformasiKegiatanSeeder.php b/database/seeders/InformasiKegiatanSeeder.php new file mode 100644 index 0000000..07465d5 --- /dev/null +++ b/database/seeders/InformasiKegiatanSeeder.php @@ -0,0 +1,313 @@ + 'REGC7EGE9465', + 'JenisDokumen' => 'AMDAL', + 'NamaKegiatan' => 'Kegiatan Penggalian Kuarsa/Pasir Kuarsa, LUKITO HARTONO LAWY', + 'BidangUsaha' => 'Pertambangan', + 'SkalaBesaran' => '50000.00 ton/tahun', + 'LokasiKegiatan' => 'Desa Marga Sungsang', + 'Kewenangan' => 'Pusat', + 'Pemrakarsa' => 'PT. KARUNIA SAGEA MINERAL', + 'ProvinsiKota' => 'SUMATERA SELATAN', + 'DeskripsiKegiatan' => 'Kegiatan penggalian kuarsa dan pasir kuarsa untuk keperluan industri kaca dan konstruksi dengan metode tambang terbuka', + 'DampakPotensial' => 'Penurunan Kualitas Udara, Peningkatan Kebisingan, Peningkatan Air Larian, Peningkatan Timbulan Sampah, Terjadinya Gangguan Lalu Lintas', + 'DeskripsiLokasi' => 'Desa Marga Sungsang, Kecamatan Banyuasin II, Kabupaten Banyuasin, Sumatra Selatan', + 'Latitude' => -2.1234567, + 'Longitude' => 104.7654321, + 'TanggalMulaiPeriode' => Carbon::now()->subDays(5), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(10), + 'Status' => 'aktif' + ], + [ + 'NoRegistrasi' => 'REG976H3AG89', + 'JenisDokumen' => 'AMDAL', + 'NamaKegiatan' => 'Pembangunan Waterfront Malalayang, TARCISIUS ASWIN JULIZAR', + 'BidangUsaha' => 'Perhubungan Laut', + 'SkalaBesaran' => '5000.00 m2', + 'LokasiKegiatan' => 'Pantai Malalayang', + 'Kewenangan' => 'Daerah', + 'Pemrakarsa' => 'PT. BENUA LAUT LEPAS', + 'ProvinsiKota' => 'SULAWESI UTARA', + 'DeskripsiKegiatan' => 'Pembangunan Terminal Alih Muat Barang (Ship To Ship Transfer) dan Fasilitas Penunjangnya oleh PT. Benua Laut Lepas', + 'DampakPotensial' => 'Penurunan kualitas air laut, Peningkatan Sedimentasi, Perubahan Garis Pantai, Peningkatan Kesempatan Kerja dan Berusaha', + 'DeskripsiLokasi' => 'Pantai Malalayang, Kecamatan Malalayang, Kota Manado, Sulawesi Utara', + 'Latitude' => 1.4897167, + 'Longitude' => 124.8421083, + 'TanggalMulaiPeriode' => Carbon::now()->subDays(2), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(12), + 'Status' => 'aktif' + ], + [ + 'NoRegistrasi' => 'REGAMD001235', + 'JenisDokumen' => 'AMDAL', + 'NamaKegiatan' => 'Pembangunan PLTU Batubara Cilacap Unit 3 & 4', + 'BidangUsaha' => 'Energi dan Sumber Daya Mineral', + 'SkalaBesaran' => '2000.00 MW', + 'LokasiKegiatan' => 'Pesisir Cilacap', + 'Kewenangan' => 'Pusat', + 'Pemrakarsa' => 'PT. PLN (PERSERO)', + 'ProvinsiKota' => 'JAWA TENGAH', + 'DeskripsiKegiatan' => 'Pembangunan pembangkit listrik tenaga uap dengan bahan bakar batubara kapasitas 2x1000 MW lengkap dengan fasilitas penunjang', + 'DampakPotensial' => 'Emisi gas buang, Limbah abu batubara, Peningkatan suhu air laut, Dampak visual, Peningkatan lapangan kerja', + 'DeskripsiLokasi' => 'Pesisir Cilacap, Kecamatan Cilacap Selatan, Kabupaten Cilacap, Jawa Tengah', + 'Latitude' => -7.7326, + 'Longitude' => 109.0158, + 'TanggalMulaiPeriode' => Carbon::now()->subDays(10), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(5), + 'Status' => 'aktif' + ], + [ + 'NoRegistrasi' => 'REGAMD004578', + 'JenisDokumen' => 'AMDAL', + 'NamaKegiatan' => 'Pembangunan Jalan Tol Trans Sumatera Segmen Kayu Agung - Palembang', + 'BidangUsaha' => 'Perhubungan Darat', + 'SkalaBesaran' => '75.50 km', + 'LokasiKegiatan' => 'Kabupaten Ogan Komering Ilir - Kota Palembang', + 'Kewenangan' => 'Pusat', + 'Pemrakarsa' => 'PT. HUTAMA KARYA (PERSERO)', + 'ProvinsiKota' => 'SUMATERA SELATAN', + 'DeskripsiKegiatan' => 'Pembangunan jalan tol 4 lajur sebagai bagian dari jaringan jalan tol Trans Sumatera untuk meningkatkan konektivitas antar wilayah', + 'DampakPotensial' => 'Pembebasan lahan, Gangguan hidrologi, Kebisingan konstruksi, Peningkatan aksesibilitas, Pembukaan lapangan kerja', + 'DeskripsiLokasi' => 'Melintasi Kabupaten Ogan Komering Ilir hingga Kota Palembang, Sumatera Selatan', + 'Latitude' => -3.0044, + 'Longitude' => 104.6178, + 'TanggalMulaiPeriode' => Carbon::now()->subDays(15), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(0), + 'Status' => 'berakhir' + ], + [ + 'NoRegistrasi' => 'REGAMD007892', + 'JenisDokumen' => 'AMDAL', + 'NamaKegiatan' => 'Pengembangan Bandara Internasional Syamsudin Noor Fase II', + 'BidangUsaha' => 'Perhubungan Udara', + 'SkalaBesaran' => '15000.00 m2', + 'LokasiKegiatan' => 'Banjarbaru', + 'Kewenangan' => 'Pusat', + 'Pemrakarsa' => 'PT. ANGKASA PURA II (PERSERO)', + 'ProvinsiKota' => 'KALIMANTAN SELATAN', + 'DeskripsiKegiatan' => 'Perluasan terminal penumpang, penambahan apron pesawat, dan peningkatan fasilitas bandara untuk mendukung peningkatan kapasitas penumpang', + 'DampakPotensial' => 'Kebisingan pesawat, Peningkatan lalu lintas, Perubahan tata guna lahan, Peningkatan perekonomian daerah', + 'DeskripsiLokasi' => 'Banjarbaru, Kalimantan Selatan', + 'Latitude' => -3.4424, + 'Longitude' => 114.7625, + 'TanggalMulaiPeriode' => Carbon::now()->addDays(3), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(18), + 'Status' => 'aktif' + ], + + // Addendum Documents (5 records) + [ + 'NoRegistrasi' => 'REG7HA9279E8', + 'JenisDokumen' => 'Addendum', + 'NamaKegiatan' => 'Addendum AMDAL Pembangunan Waterfront Malalayang', + 'BidangUsaha' => 'Perhubungan Laut', + 'SkalaBesaran' => '7500.00 m2', + 'LokasiKegiatan' => 'Pantai Malalayang', + 'Kewenangan' => 'Daerah', + 'Pemrakarsa' => 'PT. BENUA LAUT LEPAS', + 'ProvinsiKota' => 'SULAWESI UTARA', + 'DeskripsiKegiatan' => 'Perubahan dan penambahan fasilitas pendukung pada proyek pembangunan waterfront dengan penambahan area parkir dan fasilitas komersial', + 'DampakPotensial' => 'Peningkatan lalu lintas, Perubahan tata guna lahan, Peningkatan aktivitas ekonomi lokal', + 'DeskripsiLokasi' => 'Pantai Malalayang, Kecamatan Malalayang, Kota Manado, Sulawesi Utara', + 'Latitude' => 1.4897167, + 'Longitude' => 124.8421083, + 'TanggalMulaiPeriode' => Carbon::now()->subDays(1), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(13), + 'Status' => 'aktif' + ], + [ + 'NoRegistrasi' => 'REGADD002456', + 'JenisDokumen' => 'Addendum', + 'NamaKegiatan' => 'Addendum AMDAL PLTU Batubara Cilacap - Perubahan Teknologi', + 'BidangUsaha' => 'Energi dan Sumber Daya Mineral', + 'SkalaBesaran' => '2000.00 MW', + 'LokasiKegiatan' => 'Pesisir Cilacap', + 'Kewenangan' => 'Pusat', + 'Pemrakarsa' => 'PT. PLN (PERSERO)', + 'ProvinsiKota' => 'JAWA TENGAH', + 'DeskripsiKegiatan' => 'Perubahan teknologi pembakaran batubara dengan teknologi yang lebih ramah lingkungan dan efisien untuk mengurangi emisi', + 'DampakPotensial' => 'Pengurangan emisi SO2 dan NOx, Peningkatan efisiensi bahan bakar, Pengurangan abu terbang', + 'DeskripsiLokasi' => 'Pesisir Cilacap, Kecamatan Cilacap Selatan, Kabupaten Cilacap, Jawa Tengah', + 'Latitude' => -7.7326, + 'Longitude' => 109.0158, + 'TanggalMulaiPeriode' => Carbon::now()->subDays(8), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(7), + 'Status' => 'aktif' + ], + [ + 'NoRegistrasi' => 'REGADD003789', + 'JenisDokumen' => 'Addendum', + 'NamaKegiatan' => 'Addendum AMDAL Tol Trans Sumatera - Penambahan Rest Area', + 'BidangUsaha' => 'Perhubungan Darat', + 'SkalaBesaran' => '85.50 km', + 'LokasiKegiatan' => 'Kabupaten Ogan Komering Ilir - Kota Palembang', + 'Kewenangan' => 'Pusat', + 'Pemrakarsa' => 'PT. HUTAMA KARYA (PERSERO)', + 'ProvinsiKota' => 'SUMATERA SELATAN', + 'DeskripsiKegiatan' => 'Penambahan 3 rest area di sepanjang ruas tol dengan fasilitas SPBU, food court, dan area istirahat untuk meningkatkan keselamatan perjalanan', + 'DampakPotensial' => 'Peningkatan keselamatan jalan, Pembukaan lapangan kerja baru, Peningkatan konsumsi air dan listrik', + 'DeskripsiLokasi' => 'Melintasi Kabupaten Ogan Komering Ilir hingga Kota Palembang, Sumatera Selatan', + 'Latitude' => -3.0044, + 'Longitude' => 104.6178, + 'TanggalMulaiPeriode' => Carbon::now()->subDays(3), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(12), + 'Status' => 'aktif' + ], + [ + 'NoRegistrasi' => 'REGADD005123', + 'JenisDokumen' => 'Addendum', + 'NamaKegiatan' => 'Addendum AMDAL Bandara Syamsudin Noor - Perpanjangan Runway', + 'BidangUsaha' => 'Perhubungan Udara', + 'SkalaBesaran' => '3200.00 m', + 'LokasiKegiatan' => 'Banjarbaru', + 'Kewenangan' => 'Pusat', + 'Pemrakarsa' => 'PT. ANGKASA PURA II (PERSERO)', + 'ProvinsiKota' => 'KALIMANTAN SELATAN', + 'DeskripsiKegiatan' => 'Perpanjangan runway dari 2500m menjadi 3200m untuk mengakomodasi pesawat wide body dan meningkatkan kapasitas operasional bandara', + 'DampakPotensial' => 'Peningkatan kebisingan pesawat, Pembebasan lahan tambahan, Peningkatan frekuensi penerbangan', + 'DeskripsiLokasi' => 'Banjarbaru, Kalimantan Selatan', + 'Latitude' => -3.4424, + 'Longitude' => 114.7625, + 'TanggalMulaiPeriode' => Carbon::now()->addDays(5), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(20), + 'Status' => 'aktif' + ], + [ + 'NoRegistrasi' => 'REGADD006789', + 'JenisDokumen' => 'Addendum', + 'NamaKegiatan' => 'Addendum AMDAL Tambang Kuarsa - Perluasan Area Tambang', + 'BidangUsaha' => 'Pertambangan', + 'SkalaBesaran' => '75000.00 ton/tahun', + 'LokasiKegiatan' => 'Desa Marga Sungsang', + 'Kewenangan' => 'Pusat', + 'Pemrakarsa' => 'PT. KARUNIA SAGEA MINERAL', + 'ProvinsiKota' => 'SUMATERA SELATAN', + 'DeskripsiKegiatan' => 'Perluasan area penambangan kuarsa dari 100 ha menjadi 150 ha untuk memenuhi peningkatan demand pasar domestik dan ekspor', + 'DampakPotensial' => 'Peningkatan kebisingan, Bertambahnya debu dan partikel, Perluasan dampak visual, Peningkatan produksi', + 'DeskripsiLokasi' => 'Desa Marga Sungsang, Kecamatan Banyuasin II, Kabupaten Banyuasin, Sumatra Selatan', + 'Latitude' => -2.1234567, + 'Longitude' => 104.7654321, + 'TanggalMulaiPeriode' => Carbon::now()->addDays(2), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(17), + 'Status' => 'aktif' + ], + + // UKL-UPL Documents (5 records) + [ + 'NoRegistrasi' => 'REGDF3D52A98', + 'JenisDokumen' => 'UKL-UPL', + 'NamaKegiatan' => 'Pembangunan Pabrik Pengolahan Kelapa Sawit', + 'BidangUsaha' => 'Industri Pangan', + 'SkalaBesaran' => '1000.00 ton/hari', + 'LokasiKegiatan' => 'Desa Sumber Jaya', + 'Kewenangan' => 'Provinsi', + 'Pemrakarsa' => 'PT. AGRO MANDIRI SEJAHTERA', + 'ProvinsiKota' => 'RIAU', + 'DeskripsiKegiatan' => 'Pembangunan dan operasional pabrik pengolahan kelapa sawit menjadi crude palm oil (CPO) dan produk turunannya', + 'DampakPotensial' => 'Pencemaran air limbah, Bau dari proses produksi, Peningkatan lalu lintas kendaraan berat', + 'DeskripsiLokasi' => 'Desa Sumber Jaya, Kecamatan Kampar, Kabupaten Kampar, Riau', + 'Latitude' => 0.2895833, + 'Longitude' => 101.3828889, + 'TanggalMulaiPeriode' => Carbon::now()->addDays(1), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(15), + 'Status' => 'aktif' + ], + [ + 'NoRegistrasi' => 'REGUKL001234', + 'JenisDokumen' => 'UKL-UPL', + 'NamaKegiatan' => 'Pembangunan Pabrik Tekstil dan Garmen Modern', + 'BidangUsaha' => 'Industri Tekstil', + 'SkalaBesaran' => '500.00 ton/bulan', + 'LokasiKegiatan' => 'Kawasan Industri Karawang', + 'Kewenangan' => 'Provinsi', + 'Pemrakarsa' => 'PT. TEKSTIL NUSANTARA MAKMUR', + 'ProvinsiKota' => 'JAWA BARAT', + 'DeskripsiKegiatan' => 'Pembangunan pabrik tekstil terintegrasi dengan fasilitas dyeing, printing, dan finishing untuk produksi kain dan garmen', + 'DampakPotensial' => 'Limbah cair pewarna, Konsumsi air tinggi, Kebisingan mesin, Peningkatan lapangan kerja', + 'DeskripsiLokasi' => 'Kawasan Industri Karawang, Kabupaten Karawang, Jawa Barat', + 'Latitude' => -6.3019, + 'Longitude' => 107.3372, + 'TanggalMulaiPeriode' => Carbon::now()->subDays(4), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(11), + 'Status' => 'aktif' + ], + [ + 'NoRegistrasi' => 'REGUKL002567', + 'JenisDokumen' => 'UKL-UPL', + 'NamaKegiatan' => 'Pembangunan Cold Storage dan Distribution Center', + 'BidangUsaha' => 'Logistik dan Pergudangan', + 'SkalaBesaran' => '10000.00 m3', + 'LokasiKegiatan' => 'Kawasan Industri Medan', + 'Kewenangan' => 'Provinsi', + 'Pemrakarsa' => 'PT. LOGISTIK SUMATERA UTARA', + 'ProvinsiKota' => 'SUMATERA UTARA', + 'DeskripsiKegiatan' => 'Pembangunan fasilitas penyimpanan dingin dan pusat distribusi untuk produk pertanian dan perikanan dengan sistem otomatis', + 'DampakPotensial' => 'Konsumsi listrik tinggi, Refrigeran ramah lingkungan, Peningkatan lalu lintas truk, Peningkatan nilai tambah produk', + 'DeskripsiLokasi' => 'Kawasan Industri Medan, Kota Medan, Sumatera Utara', + 'Latitude' => 3.6951, + 'Longitude' => 98.7579, + 'TanggalMulaiPeriode' => Carbon::now()->subDays(6), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(9), + 'Status' => 'aktif' + ], + [ + 'NoRegistrasi' => 'REGUKL003890', + 'JenisDokumen' => 'UKL-UPL', + 'NamaKegiatan' => 'Pembangunan Pabrik Pengolahan Limbah Medis', + 'BidangUsaha' => 'Jasa Lingkungan', + 'SkalaBesaran' => '50.00 ton/hari', + 'LokasiKegiatan' => 'Kawasan Industri Makassar', + 'Kewenangan' => 'Provinsi', + 'Pemrakarsa' => 'PT. ECO MEDICAL WASTE SOLUTION', + 'ProvinsiKota' => 'SULAWESI SELATAN', + 'DeskripsiKegiatan' => 'Pembangunan fasilitas pengolahan limbah medis B3 dengan teknologi incinerator dan autoclave untuk wilayah Sulawesi Selatan', + 'DampakPotensial' => 'Emisi hasil pembakaran, Pengelolaan abu insinerator, Peningkatan keselamatan kesehatan masyarakat', + 'DeskripsiLokasi' => 'Kawasan Industri Makassar, Kota Makassar, Sulawesi Selatan', + 'Latitude' => -5.1477, + 'Longitude' => 119.4327, + 'TanggalMulaiPeriode' => Carbon::now()->addDays(4), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(19), + 'Status' => 'aktif' + ], + [ + 'NoRegistrasi' => 'REGUKL004567', + 'JenisDokumen' => 'UKL-UPL', + 'NamaKegiatan' => 'Pembangunan Pabrik Pupuk Organik dari Limbah Ternak', + 'BidangUsaha' => 'Industri Pupuk', + 'SkalaBesaran' => '200.00 ton/hari', + 'LokasiKegiatan' => 'Desa Sidomulyo', + 'Kewenangan' => 'Provinsi', + 'Pemrakarsa' => 'PT. PUPUK ORGANIK NUSANTARA', + 'ProvinsiKota' => 'JAWA TIMUR', + 'DeskripsiKegiatan' => 'Pembangunan pabrik pengolahan limbah ternak menjadi pupuk organik granul dengan teknologi composting dan granulasi modern', + 'DampakPotensial' => 'Bau selama proses composting, Lalat dan serangga, Peningkatan nilai tambah limbah ternak, Produksi pupuk ramah lingkungan', + 'DeskripsiLokasi' => 'Desa Sidomulyo, Kecamatan Tempeh, Kabupaten Lumajang, Jawa Timur', + 'Latitude' => -8.1215, + 'Longitude' => 113.2234, + 'TanggalMulaiPeriode' => Carbon::now()->addDays(6), + 'TanggalSelesaiPeriode' => Carbon::now()->addDays(21), + 'Status' => 'aktif' + ] + ]; + + foreach ($kegiatan as $data) { + InformasiKegiatan::create($data); + } + } +} diff --git a/database/seeders/KabupatenTableSeeder.php b/database/seeders/KabupatenTableSeeder.php new file mode 100644 index 0000000..397e4f1 --- /dev/null +++ b/database/seeders/KabupatenTableSeeder.php @@ -0,0 +1,38 @@ +json() as $kabupaten) { + // Convert the id format and map the data + $cleanId = str_replace('.', '', $kabupaten['id']); + + Kabupaten::create([ + 'KabupatenId' => $cleanId, + 'NamaKabupaten' => $kabupaten['data'] + ]); + + // Log data kabupaten yang sedang di-seed + Log::info('Seeding kabupaten: ', [ + 'KabupatenId' => $cleanId, + 'NamaKabupaten' => $kabupaten['data'] + ]); + } + } +} diff --git a/database/seeders/KecamatanTableSeeder.php b/database/seeders/KecamatanTableSeeder.php new file mode 100644 index 0000000..548f80d --- /dev/null +++ b/database/seeders/KecamatanTableSeeder.php @@ -0,0 +1,45 @@ +KabupatenId, 0, 2) . '.' . + substr($kabupaten->KabupatenId, 2, 2); + + $response = Http::get("https://api-wilayah.dinaslhdki.id/api/kecamatan/search?kab={$kabId}"); + + foreach ($response->json() as $kecamatan) { + $cleanId = str_replace('.', '', $kecamatan['id']); + + Kecamatan::create([ + 'KecamatanId' => $cleanId, + 'KabupatenId' => $kabupaten->KabupatenId, + 'NamaKecamatan' => $kecamatan['data'] + ]); + + // Log the seeding process + Log::info('Seeding kecamatan: ', [ + 'KecamatanId' => $cleanId, + 'KabupatenId' => $kabupaten->KabupatenId, + 'NamaKecamatan' => $kecamatan['data'] + ]); + } + } + } +} diff --git a/database/seeders/KelurahanTableSeeder.php b/database/seeders/KelurahanTableSeeder.php new file mode 100644 index 0000000..213b8bc --- /dev/null +++ b/database/seeders/KelurahanTableSeeder.php @@ -0,0 +1,43 @@ +KecamatanId, 0, 2) . '.' . + substr($kecamatan->KecamatanId, 2, 2) . '.' . + substr($kecamatan->KecamatanId, 4, 2); + + $response = Http::get("https://api-wilayah.dinaslhdki.id/api/kelurahan/search?kec={$kecId}"); + + foreach ($response->json() as $kelurahan) { + $cleanId = str_replace('.', '', $kelurahan['id']); + $cleanName = str_replace("\n", ' ', $kelurahan['data']); + + Kelurahan::create([ + 'KelurahanId' => $cleanId, + 'KecamatanId' => $kecamatan->KecamatanId, + 'NamaKelurahan' => $cleanName + ]); + + Log::info('Seeding kelurahan: ', [ + 'KelurahanId' => $cleanId, + 'KecamatanId' => $kecamatan->KecamatanId, + 'NamaKelurahan' => $cleanName + ]); + } + } + } +} diff --git a/database/seeders/PerusahaanSeeder.php b/database/seeders/PerusahaanSeeder.php new file mode 100644 index 0000000..7dd84b0 --- /dev/null +++ b/database/seeders/PerusahaanSeeder.php @@ -0,0 +1,45 @@ + 'PT. Permata Hijau', + 'Alamat' => 'Jl. Merdeka No. 1, Jakarta Pusat', + ], + [ + 'NamaPerusahaan' => 'PT. BERKAH SELAMANYA ENERGI (R4)', + 'Alamat' => 'Jl. Sudirman No. 88, Jakarta Selatan', + ], + [ + 'NamaPerusahaan' => 'PT. FORTUNA MUDA LAGA (FORMULA BAN)', + 'Alamat' => 'Jl. Gatot Subroto No. 12, Jakarta Barat', + ], + [ + 'NamaPerusahaan' => 'PT. MANDIRI KREASI KOLABORASI', + 'Alamat' => 'Jl. Ahmad Yani No. 45, Jakarta Timur', + ], + [ + 'NamaPerusahaan' => 'PT. UNILAB PERDANA', + 'Alamat' => 'Kawasan Industri Cikarang, Bekasi', + ], + ]; + + foreach ($data as $row) { + Perusahaan::updateOrCreate( + ['NamaPerusahaan' => $row['NamaPerusahaan']], + ['Alamat' => $row['Alamat']] + ); + } + } +} diff --git a/database/seeders/RolesAndPermissionsSeeder.php b/database/seeders/RolesAndPermissionsSeeder.php index 7bdc857..2523730 100644 --- a/database/seeders/RolesAndPermissionsSeeder.php +++ b/database/seeders/RolesAndPermissionsSeeder.php @@ -21,6 +21,7 @@ class RolesAndPermissionsSeeder extends Seeder 'dashboard.view.uji_emisi', // Menus + 'pengumuman.access', 'penjadwalan.access', 'persetujuan_teknis.access', 'rincian_teknis.access', @@ -42,6 +43,24 @@ class RolesAndPermissionsSeeder extends Seeder $kadis = Role::firstOrCreate(['name' => 'Kadis']); $ppkl = Role::firstOrCreate(['name' => 'PPKL']); $dlh = Role::firstOrCreate(['name' => 'DLH']); + $perusahaan = Role::firstOrCreate(['name' => 'Perusahaan']); + + // Kadis permissions (semua dashboard tabs + modules, tanpa pengaturan/konten/master data) + $perusahaanPerms = [ + 'dashboard.view.pertek', + 'dashboard.view.rintek', + 'dashboard.view.amdal', + 'dashboard.view.izin_angkut', + 'dashboard.view.uji_emisi', + 'pengumuman.access', + 'penjadwalan.access', + 'persetujuan_teknis.access', + 'rincian_teknis.access', + 'persetujuan_lingkungan.access', + 'izin_angkut_olah.access', + 'izin_tempat_uji_emisi.access', + ]; + $perusahaan->syncPermissions($perusahaanPerms); // Kadis permissions (semua dashboard tabs + modules, tanpa pengaturan/konten/master data) $kadisPerms = [ diff --git a/database/seeders/SaranTanggapanSeeder.php b/database/seeders/SaranTanggapanSeeder.php new file mode 100644 index 0000000..d5578cc --- /dev/null +++ b/database/seeders/SaranTanggapanSeeder.php @@ -0,0 +1,121 @@ +take(3); + + $sampleTanggapan = [ + [ + 'KegiatanID' => $kegiatanIds[0], + 'Nama' => 'Budi Santoso', + 'Peran' => 'masyarakat', + 'NIK' => '3171234567890123', + 'Email' => 'budi.santoso@email.com', + 'NoTelepon' => '081234567890', + 'Gender' => 'laki-laki', + 'KondisiLingkungan' => 'Lingkungan sekitar masih cukup bersih dengan kualitas udara yang baik. Terdapat sungai kecil di dekat area.', + 'NilaiLokal' => 'Area ini adalah tempat bermain anak-anak dan berkumpul warga setiap sore. Memiliki nilai sosial yang tinggi bagi masyarakat.', + 'Kekhawatiran' => 'Khawatir akan dampak terhadap lalu lintas di sekitar area dan kemungkinan polusi suara yang mengganggu.', + 'Harapan' => 'Berharap kegiatan ini dapat memberikan manfaat ekonomi bagi masyarakat sekitar dan tidak merusak lingkungan.', + 'TingkatKekhawatiran' => 3, + 'Status' => 'approved', + 'TanggalDiajukan' => now()->subDays(2), + 'TanggalDiproses' => now()->subDays(1), + 'created_at' => now()->subDays(2), + 'updated_at' => now()->subDays(1), + ], + [ + 'KegiatanID' => $kegiatanIds[0], + 'Nama' => 'Siti Rahayu', + 'Peran' => 'masyarakat', + 'NIK' => '3171234567890124', + 'Email' => 'siti.rahayu@email.com', + 'NoTelepon' => '081234567891', + 'Gender' => 'perempuan', + 'KondisiLingkungan' => 'Kualitas air sungai di sekitar masih bagus dan digunakan warga untuk kebutuhan sehari-hari.', + 'NilaiLokal' => 'Sungai ini merupakan sumber air bersih bagi warga sekitar dan tempat mencuci pakaian.', + 'Kekhawatiran' => 'Sangat khawatir limbah dari kegiatan ini akan mencemari sungai yang menjadi sumber air bagi warga.', + 'Harapan' => 'Berharap ada sistem pengolahan limbah yang baik sehingga tidak mencemari lingkungan.', + 'TingkatKekhawatiran' => 2, + 'Status' => 'approved', + 'TanggalDiajukan' => now()->subDays(1), + 'TanggalDiproses' => now()->subHours(12), + 'created_at' => now()->subDays(1), + 'updated_at' => now()->subHours(12), + ], + [ + 'KegiatanID' => $kegiatanIds[1], + 'Nama' => 'Ahmad Wijaya', + 'Peran' => 'lsm', + 'NIK' => '3171234567890125', + 'Email' => 'ahmad.wijaya@email.com', + 'NoTelepon' => '081234567892', + 'Gender' => 'laki-laki', + 'KondisiLingkungan' => 'Area ini masih alami dengan banyak pohon dan burung. Merupakan habitat beberapa spesies lokal.', + 'NilaiLokal' => 'Tempat ini memiliki nilai konservasi tinggi sebagai habitat satwa lokal dan paru-paru kota.', + 'Kekhawatiran' => 'Khawatir akan hilangnya habitat satwa dan berkurangnya ruang terbuka hijau.', + 'Harapan' => 'Berharap ada kompensasi berupa penanaman pohon di lokasi lain dan program konservasi.', + 'TingkatKekhawatiran' => 2, + 'Status' => 'approved', + 'TanggalDiajukan' => now()->subHours(12), + 'TanggalDiproses' => now()->subHours(6), + 'created_at' => now()->subHours(12), + 'updated_at' => now()->subHours(6), + ], + [ + 'KegiatanID' => $kegiatanIds[1], + 'Nama' => 'Dr. Maria Kusuma', + 'Peran' => 'akademisi', + 'NIK' => '3171234567890126', + 'Email' => 'maria.kusuma@email.com', + 'NoTelepon' => '081234567893', + 'Gender' => 'perempuan', + 'KondisiLingkungan' => 'Dari segi geologis, area ini stabil. Namun perlu perhatian khusus pada drainase.', + 'NilaiLokal' => 'Secara akademis, area ini menarik untuk penelitian tentang urban development.', + 'Kekhawatiran' => 'Khawatir tentang dampak jangka panjang terhadap sistem drainase dan kemungkinan banjir.', + 'Harapan' => 'Berharap ada studi dampak lingkungan yang komprehensif dan sistem mitigasi yang tepat.', + 'TingkatKekhawatiran' => 3, + 'Status' => 'approved', + 'TanggalDiajukan' => now()->subHours(6), + 'TanggalDiproses' => now()->subHours(3), + 'created_at' => now()->subHours(6), + 'updated_at' => now()->subHours(3), + ], + [ + 'KegiatanID' => $kegiatanIds[2], + 'Nama' => 'Rudi Hartono', + 'Peran' => 'masyarakat', + 'NIK' => '3171234567890127', + 'Email' => 'rudi.hartono@email.com', + 'NoTelepon' => '081234567894', + 'Gender' => 'laki-laki', + 'KondisiLingkungan' => 'Lingkungan cukup padat penduduk dengan aktivitas ekonomi yang tinggi.', + 'NilaiLokal' => 'Area ini adalah pusat ekonomi lokal dengan banyak warung dan toko kecil.', + 'Kekhawatiran' => 'Khawatir akan gangguan terhadap aktivitas ekonomi masyarakat selama pembangunan.', + 'Harapan' => 'Berharap ada kompensasi ekonomi dan lapangan kerja bagi masyarakat yang terdampak.', + 'TingkatKekhawatiran' => 4, + 'Status' => 'approved', + 'TanggalDiajukan' => now()->subHours(3), + 'TanggalDiproses' => now()->subHours(1), + 'created_at' => now()->subHours(3), + 'updated_at' => now()->subHours(1), + ], + ]; + + foreach ($sampleTanggapan as $tanggapan) { + SaranTanggapan::create($tanggapan); + } + } +} diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php index e776cd9..7664825 100644 --- a/database/seeders/UserSeeder.php +++ b/database/seeders/UserSeeder.php @@ -33,6 +33,17 @@ class UserSeeder extends Seeder ); $kadis->syncRoles(['Kadis']); + // Perusahaan user + $perusahaan = User::updateOrCreate( + ['email' => 'perusahaan@dinaslhdki.id'], + [ + 'name' => 'Perusahaan', + 'username' => 'perusahaan', + 'password' => Hash::make('Perling2025$'), + ] + ); + $perusahaan->syncRoles(['Perusahaan']); + // PPKL user (note: domain as provided) $ppkl = User::updateOrCreate( ['email' => 'ppkl@dinaslhkdki.id'], diff --git a/docs/registration-number-format.md b/docs/registration-number-format.md new file mode 100644 index 0000000..6998584 --- /dev/null +++ b/docs/registration-number-format.md @@ -0,0 +1,53 @@ +# Registration Number Format + +## Secure Registration Number Generation + +The system automatically generates a unique 12-character registration number for each announcement with enhanced security to prevent easy guessing. + +### Format Structure: + +``` +ENV + XXXXXXXXX +``` + +Where: + +- **ENV** = Environmental document prefix (3 characters) +- **XXXXXXXXX** = 9 secure random alphanumeric characters (excluding similar-looking characters) + +### Character Pool: + +- Uses: `23456789ABCDEFGHJKLMNPQRSTUVWXYZ` +- Excludes: `0, 1, I, O` (to prevent confusion) +- No lowercase letters (for consistency) + +### Examples: + +- **ENV4B7X9K2MQ** - Secure random generation +- **ENVH3K8P5W7R** - Another secure random generation +- **ENV9F2N6Y4MP** - Each number is unpredictable + +### Security Features: + +1. **Cryptographic Hash** - Uses SHA-256 for randomness +2. **Timestamp Seed** - Includes microtime for uniqueness +3. **Unpredictable** - No date/time patterns visible +4. **No Sequential** - Cannot guess next number +5. **Character Filtering** - Excludes confusing characters + +### Technical Implementation: + +- Generated using cryptographic hash functions +- Seeds include timestamp + microtime + random integers +- Character pool designed to avoid visual confusion +- Multiple entropy sources for maximum security +- Still maintains 12-character length requirement + +### Usage: + +1. Number is automatically generated when form is submitted +2. Field is completely hidden from users (no manual interaction) +3. System validates uniqueness before saving to database +4. Success message shows the final registration number +5. Each generation is completely unpredictable and secure +6. No user interface for regeneration (fully automated) diff --git a/public/assets/images/auth/auth_img.png b/public/assets/images/auth/auth_img.png new file mode 100644 index 0000000000000000000000000000000000000000..34ef96200447beeabded54e99a5f2c7082d5ff0f GIT binary patch literal 131417 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

{%Bn+aA;khQEtK(D6H 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

R3BMvIq1PzjTAzFOY|1t*V*(A`K zTVMG&W|o~PmMdG7CFU)fC+j;&6y^ycitWrx1w_L<*y2GH@p)cH!^cwLd#jK2D%QQ^TiG0&g;qv|8 zn_hOEzX^P)&msz-EQ~#7%F;IsI3?Ph7JXsOR30{;1L?%R*Y}JKnjV^6Q9>M1WG7zu zxS$VZ9}SCirMyGmj-nB%uL9=U`BtQcyAVcf#}{ajZJu5#$lou1^&6Z^NeH2+B;@Hz z?X83mO49D>n_m+G*x{erQz#Ph+Ky5-6|8|87UD^ZMm+Y|Y5d*a$|d=M$;nn+UV6>- zn3!IM`|r95U;oNSDsj0RK*1;%#Zyvi zA>M^C2`%zuigvM#ru|^+Y~+(N8qw>02+@uncnGKG=k!5cj7Csy-!v5s(zjHi@( z^Ai{0&6W4^xBl`X>^(eH7Cm;qQ0}3^r!Srn1@Z7;kcG>RNskqvyp&lHtcbMvo=si* z1gbB5r?NXAJfB(1l-grh`xVX)rjo~5t^ggM0pYiJeM0Yrinn{${`7)r&`LNbg=SY4 z7w=!E?*EW(9O|kbIw{XV_Yy!qQA6@c0LsOXJhTv%FJ*#&)C-d#6R7nsKO;g2shODG z^s-+EA>?Vt?!AZblILHBZ5OQ1-aa>UHh*T8MO#lB9dgyz_$%#AvF+38XzZi&Sjp`_ ze(w=H{Ln&5-=*{?CZ@1r^+wFB+ln)%Ph#&wU&fIG4`SK!)tIjSQa!vbm#9aZlaKmF z4hNH710~@43{`Kz1>7pQ@hKm#(CZvm@Y^gkt|Nci0Ve1Cq zk;hNt=-gsa-~HjQUWhfTCe*RoQ~8Q3W^u!F4>xlWA3nHDotLXlB6!0@e+$NO%5Fqq z3#Zj^O^04F8GEDY>`r!26FeE`#^|m%c4`9mKfVGV`N}5T{>V%d=CbooV5s-b6)P}Y zBwBGEu)@7`+#W04|0xhu>q)WKSMI+3!V3k+)PvwH^x>k&3~`++mwi+xH|44Gp1bpQ zm0x{*kIp;%`Oe8C2Axe`{F>&v>Y5Ajy*Ip|kT*hSPa?W2M;d)e{FUprS zUI_AdFM07S>1o^2e*@b4(C6Y(oWJ$99hIp3BnTmdqLPrOF}wF2!Vi7lOOm|;W1Kl* zWC&wPi!5jZ30jz{-NxV<#9%Q>43`ppZ0{-j=ifhy%$6}>8*w?)ic3^R;qLqY9*^(- z8YZTeVdcyQDD?_$Y$pk6Y+rPe&?m#HoV_m!#9)Zo`iHh_>#xJ-l|Ytd+R_rE9Qum0LNJbbk~sYuXp-*PkY- z=U;yEt_|3^Z$%?6XO^F_h0g_FpI}s#Kv~$8(&@HG&4+A*8KLC{s7z z6Uu7W6{`Ss--!FiL%g7Ca|`J>aXf?>nERw%n8&GSeo0`e{c88$zT<;jpob9BKv7A^ z)0o|R4`S<<^|<HLUGH0O`v$#~gpdeDB_U69?%lBmKlptw#0BSjxXMeZ`}2DoH}s?%T}yQ;<70C((z@LxLkk!%*xuNd;$9Y{hNCOhYZjq7847u%vB24Wgc2=abG=gpQfI#Xg@p@yUr zuZaxf#JPU!_=e{m!S&BMl9g<2B`#lh(}GW*Pn+?>k40`3I@A9R&jYHE?;^1 zQOvCHxc#A(Nw}b#Of0kNAEm&EcDS847GGYdG_`cs3H79J3Z@1G_S8d1YxfQvpTg&N zuEoc0--ulYmp4O&H?LbjuMo4x?D;-#X0aafCOwOEO8Lt^ZXN)xB=F9bVdA-T%nDx_ zwj?yINbZ=s_by;zK_y)ee{DqNSqjRUHEUMlN8a*k=z9<09~D=(TPyqqgY*oI_pK9Y zwWmb$r+RtS1p2-RLt4YAiZCi7c_f{B*%rzmpC|NE5<(;tm4rOanLTy_(^FG;=?gB; z&J7bD`VDqpnD#drKMvw0yb+Wg-7u~-YnS2mKX^4>_r}Zc$&Y>&kLP5v}FpRTeptz!KAxkIvRmiK<>LyqrG2I^) z&Qx`;yqBN++IoEQuJxFiKHaoUGd#9b;1a`zdS=BKa;;E~H}w7=mbN{<6oENJn7TfZ zD7SkAX=&ji$*KD*PvyxI>R1$&O@4s(7@BR<36?FN!kd5cwb0KSSFW!dz5%EgEB3pT zT3`kdD%!@mo|iRFZI?zvr1_jW9HQ9dTuMSn4p)CAgy8)j`V5ZF&gDjk@7b?@7kyZT z(P!c(+Nd5$p9Ll6lMha*h>*UuLl;w!dNtAqzIGG#KJaBMoN8AkRW@Od-MVh$#m%Qk z)^EA8nREHIzyAOZ?z^wG-F&Qts$^JFzpbB-g>oTuA+J`?_^dgC2=pO&pYo8ZB*_ma z;`>;>*w(H!^cG9$n5?rhihrAM#;C5nl=bI9x|0a?&VGl8l;UD5MhMh-{Oj-AjSu|n zea%o%X~vEelv12KarL66NFv;utlg*%qwVQb4Vw^9e%WBQQl2JJQQ3O#z{@c-WQW z7RuqKrn6()XG(1YWKM1=EVICJPu@=^u=1p)2S}w;gPAHQgy?px(CE zKOcPW?fBbIJrI+q&)36Y4?niE@?6ff!(t1DV2Ncb!<@?rJod=#-GV;T&78{;uHZd@ z5D0SUtcN_Wkzx=Ko6>HKDcSH&oYATFnB1yt`RU;X{r~F+ceP$hRV-Kjm1){z@*-PA zI`v{cKlGvl&1$pvhsAtg9X~d0WczAG*)DC_1=Z#2k+5pFM|)bK=Ku^h-DN0mjv>qM z{{1WQ$vZdT=DRjv)iU9|L{^F6*V2lu(si(&|{jvS&Ty=Z`3-4M!ni$e%qdLi$_@$N+ZGdp_-grFZr%6zZnG!6B77U4OxZy=}xc<9N0@Ia9pPFj^T>U#a30EC+VSlP^=USYH zKh%GfhcfQh-b#B+gqQnun9H{=;0IrNxZ0j*K0|W+ zrBg1Y5#qZnEtvGB=n^8X#VWl|f$pD!k6=|#MXX}u?;OS>9v1#(3-@6B=4;{>2rq!#z9$j$y9+s0D z3on9d=1(o)XMgd3N`22;@fMzkT1<91$FAdh>J=8|kwP*Pkq%{{3B4UxjCNK?$})NU z{IC5HW{;l)A%sXKK?oro|M8D*!b|?Ymn92E8cANfId2XLi?})EweUh3<>xv<`24J)tg5SJkDjyTyQm}rdK9Is>dN!vv$M9 zSiAA!Chmbp@4>!@zk>DWUy1cwuE5l?nNA1#?(Ki5D1<<44|zF8QX0J;$pc}Bkcy@V zZRW&2a&4*%%Vg$Bi?b7^N|YiU8^K%u=_7_fUNCpG-tFy{qxq# zD{;FYc;AhSxaqS!GczlvL=bgcuUw;bEy=oC#Hk!6BF+XoY_^$Tm0vGD-wA#)4t?po1TCTfaVq2W4 zyseAob1Fqb4129QPM?N9e7IRmr&z2e+i=hNu?46Sm&GLOw2~P1nP7M23sHqTHhTgy zt5=wJ3EjUjj(KLp{_1*@4#l>8UgjP99iYUg9tI52T^;Nw2iapjT6rnCI1eGD1Vtqw zB=W`EcHn(~_8GkOO|J&5fg25?ZZ2Olr_wIcBNvp2(UKFw*zxhWOu+?X%i%-+zXOZwnBrB5$6McU2Jia70H6Dc?NDOZ7|Pa5*^kIj zBAPjP4#V{dGRMdBJ*k-&3$1blGUrbac|*joWZ$6)yz@_1Hrv;|ViDK9{B$EQOVwzY zn#zxvw$6Twm`3;JR4IKpeXq(SMqivfPkClz)lv8DgFko>MbT(RMfkIrFFG+ZQwZv@ zrgGlzc0S(w;YC9s;S{Fb!|c&kRE9cP$rhr;ZX$%MLlVex&ZLiZ6U`~k*?Q`Qzq)+~ zG_oZawOmjq>JL$znk3;!q@ z(<}O17(g0H?TOF)%^Yt1(sInK+luLBt1y3ZwsLeV6huXy?|hhZdFliPlarOWTm_5# zwq~IAaMs?=dMNGT$M0{vmnV-O#EO~qn4DM!-5{-bSo%~*s-n-z8R}bV2Q4;aZn^oY zL}*uWFBQB9Im$^>^Bce5Fca)vixnKMP-ZtGtSeL?{Ms;G8Z(uC`kt5iM(pl<7&tbk z6DbY*lhrTlBw1jWm&XQc6Gy&?i4LCU)mQPDBwB&mFD(1Dn8VIT2KeOXC!4>SRdrkW zroBcKDkXH*!mlDI!&r5B3%y`a_JS`wwigTg_GZUF z_TU6|9}hwd;-O{==A|%fuiTq|>NQxqZWYqoqfn+4Kg3B3@IZLTMgQpPqlOrZb27XR zld`izT}z@nzT6XGYeD%xKL0fkLP!aUNvuICiiIfDGUO*xt4=H=o zm+MxA*9j+FatJZG8@uT~&d&e!9KQ-HYiezG9TI3@uDg-2i5Hupu z=yOPcDnlq?>Sb&chP(OrC5<$XL}(9!@8916Rr>!7}h28xU%hQYEgLn zc>7JsF+`+JxBmgKaPR;Y9^KPr>EqS8`H>0Sf7F@a={iTjhrD;a;YVJ9jT_hG54%)g zEgC~yr@#3b(rr(<+%q4yUH81r#bSt?@8_LBdSmM$umAS#AHe*=X%Iq435rTWNJg`0 z&+{+C_6s&Z4dWBWRLPDjiaYh|(r_#xGDGr#&;0Ei{;v9ydDg*d4`RK*PVISY#O0ZV z%rJEY8~F76Tq`bT_cw8;YjGKDey8n9S+9x7>BdvKX5+;;exwtZ^T)BG61nv`yQ*u% z4jo3WzhuN@W4lyeSd3JXqNfWz%9ie<@lviV6jmDlww~7D7eyP16&0oQ3uU?NVux40 zaIx`N-d}m@U<~dixJlcgR2^5&tf%a9NOlM|e5k4smZd}Ll+#V^d*;YxHG;~0=dR9s z`MKJA*?KN#Rv`=5OI9|AYzS*#a((*Kl>%dUpR&~}^_ThT-hXUgA>A?RDQ|l705~&y zv{?bR%_gPwnLPvCb7%lp>QFXYr>p(CH@pPfF5D2qOQ9I23xsE({3|@9f|p!9JEgc( zFG6fTHDQX440Ei_^X>1t5qI445C|cp4~j}cNRcnzwi7@2eJ@VKV0&z}V8joCi%6)t zFzQOaT}N)m#bY7PZ~s>7rR)l+W#|J?OA;aK8J%o@VyZ0W%d;jz^_+Q?3eS1I{Fm~9LM{9s}1HqsS z^<)#Z8(x|+?Mdl0_}l+6hy9PAY0_U@^l*I!s7nj%)FN^JqxZB6`dGZr9EbJyE%!e3 zW$fQ`4>oMQ8f!OR6oO_RhgeGA&bi!j@e7+pfa!UwSs8ba6%rJ5(!z`mXt)|hF1;p&DLH=&u2>k1x@OVY#x%~YP4DjfFJsh>a;CZIr^zAl_)<|!!WfCAx4R6((O)_3L zkoPX-5yFS$;{DKl3dNLEHAQ{ihnuGxLf-Q-0;1h+{#@<3oM={y{jqxG*o)_|W$k<% z5-q-v2*1#-78_prK!j+Iw;046 z=PX7DO2q7aIjqgQ+8>C8dYpIwY@bONIXuc>#dpX?{MH*skItn=b@qjti*>ax4C0Fe z4;1G>3PG8w;MFlN=NkC@cuLQS7ghRum_PoD?*bu&jDn()5Yo%rSF7{^+ty6Xi|2TS+vKx^B?}u(Kh^|A7L}5@~l~ZQR78CQi;n0 z1##JDPo7?w!@f#f9(=SFmvtH`j%&(*SmtDa*5dMlOJ0PHRh$El-rI`H^Do2s+ncZ6A9fp_1&kJpUOd@!U0s;P=Qv6^wk5n^HRQ zq6*``Bot(4P$I|(-f*Gj=P@oXUsL`4H1Nrz0VaelAVh@Fw` z;gt{w=TgdHGaYlXuA!}DK|E}sP#nUDtYtc}Y7=wF1UCwOsABK_0sh1L>Xn#Q;5E-W zfa|U~fahK~i}=YL8Asf>IxT|{Yf+%ce$jXH^>_+PWhf!r2qVIdEJGn&`!Z+|Y1LGZ z@uR(V*CGWLY89t5R5Z=Y;k@P`}iq7N2cQKK~J$eLUcp=ihs7TLbAoq64{V;+e zJZI|N_7frpK?otE;P6*M$WU&-=OO&hKk#yGNd(1J;DtkGT0+C;R z-5zXNeysKUoH|wggt#EVmNGeuAk&#w*6oCC8u7y$d?ta8Ld(ed!0Rg5`+*k3W`cX$WZnloW<i+J%fj^X-i4&m6T3GCRnLIiV}Q0NtwT}QI=Z9KYI$}JC*c1pk55}BBH z18`Zy?&b<<#+$A?1-UH+rPm_1`a52=(JedI;l{6=k9|j%W7V?L*t~XLb)K=rWg9R* zRuY;$*RGh29J*PG+ZVRf|7>w(JSprJ<{MFI?}+=44si3s6Db_hTVm^92+d}zGk%>AJjpI@Bi-`( z6L|Q+h5mxLf{~kEtY?OM?QyJ!w60vesd9#$!0GuD>3k@|0BQ(iolYYzk36at^od1K z-WezrP>aiYwb-?lxLi1S9FOg~6UPqi!u0YP@vTfb+$@Zz^LcWa2q{)uh0^jB1nDX;cY$$6EfvKP`89;h^G)n!7!7D3fF`kh4DM12KYlwB9D0ZMmD2}ntI zgHqB+H$!)Kqevqq-O`;y#~?9ucOx-$&Mw2cgkr-@2Xayzu^NldCV)$n(x;@qFL_=KGwvxuy%@(N_ zgAN=56Ac<+=aMBZ6Kf^TT0cz+!p@Wtg|16?YW=D+Ij~%_-v_aWv}RR_r2gpE;O>~; zWhI_L8L)NH-QxwG2Ghq3crI+Y@)xI8+4fnmQLcFY9Agk=IM>5#xw2lwhW%FahN~p7 z+7X|-)da9;iqIutT>mmAp?@zwaKAgBEVWmAUew^w>UVhiW23PPSN2-GDIaRoBuQBy z0Oa$yfvdeJu5Sw9Pt@6JF5zB&Pq|!R9&GzL0ZsQZd)QC8cwaI-dsuI`2+5v-BX&Y% z3mw7Fnl(H1RsR@qS-NGYwY|GMKhjzB3RrMKa=50P?y5(zN)2>c{`{b6 z?8nUJ;syRq@`kr~cqg93_3`JTAx*Id=o@Dq(+K25exSAGR6oF#-6o;<>rZM~~strz&l3jy&v zJ8Z(d$9?-p>rBTCKOdLDXs{uK{LI(OM+tOWb2a{XxJJ{1f4PdLMLP1YYniuuwq9V1 zfbghpp|>q&*BSKPdd64NUSs1#_pSvsSytc4rUCK;d#9Zh*%i^VVePSk54W+XbZ=&y zP1z;r&)m*&0FPPG=LnwlQ{+HHc37G32CNeQS_w26+u|@P$(Tgl`G6l#!W{a}XeImk zC?^l?Hd8Qct&RveMS#wv(^xW3~M# z>}t$+tDR|re&haz<1EAY08>4TAt6ekTq->o@GpkXHr5isCO3a=ac zQD^|Aw?AP{olUjwq7`F7M^b>K)d?>fW~K~|qNq)Z$a+9PrStI)|7motc0$MA`rk5^ zNZ3`2;omaH`$hz>geeY1E2OUZYSJc(bXFZm^r0>dGu2bs3q~>>$-_CCj=lDp+_5u& zA#mGE3`qh-P#+;pq_&b4#klf#K1bFO1=1`zz)=}S@fm)8w9vmA?Z&vDyP``~+-?VS z*5jtQxkZy46uIAe4qXw|z-Y(F2OIS>^XeL9MLeJ=95n42LdXAbvE#{tv5&w;C__5rjpq8>tJy6m$Z~x*O4&d@|AM_z!hyjLUk~YUbI(ZKhiQV{f3Id@ z@zmzIZdXEH(nznFZb}y?wE6=^KMrzl&%##ymEJsz)vm^Zl>_cPO8_teNn9t8W^_r^ z^)Mx*o=~nG80Zk)c{_cm;ntEEKpI1`xWR=ak`1UR^SH4)Jsj@JSkL#k!ZLC~8|4>_ zG1xtJm69tOV*QC)pf!qKgVBkffOi$R$?)@q>s8V3A__B2hFwa*IE%iUVKN%U=lRv^ zR+OX8Y`&z1zMSu24HhUX7wskEVzl4Xu(2%4zZ5)NKEtp%{QM)nWZ+2n{x1Cxl0{gu zi^z(T*Lh0h@1P+aR9>;1R{b5WpU!_YP6(eUPe+U?bIchgwUXLDMD^u;&HujpzTnNq zk2tO~=rLc(8M5yZ={y!C<4*bxZUtHN>#7M;k!t#<2mgv$*mu_>q?%6!P01M!M;dlBJ}RsUo0p(=b?e?`3>ZNT`MNd|;Qj zmO^x5GpD`7O;#bIU8DP*%4bCUo8g>hAfTQVl+9d*Y{jNym=Y_pCrzSH--lO{@h~3r zgpTD$7s5jNZ>G~t6ytU!?6H#EiTbgL*~+Z5JcQK*`{7PGGxElJ9hS-uWAO?!%e&B% z=zC0g|0M%KSlW>g`9b?k_6d1LW+7#JR+QC!ke-LgdAB8uXt3x~nSfB9pYY>bqKaxYPy?&e(4r z0}8%~0JMA@04@;K%JLA^PPNK0=1XH{7Re#CjY$hPntXf-_EMDt(FPAT3OnqmUyH?R zD>gMO5hlw*>_L7i(bGcrLy=eB_qxAe=NH1`1J#nuGn0#;RJ30?#4mN%l(H68?v0Fp zDp1sX4O7P!`v%?~c(3hZXe7uKw0DK7>ZL0c!0JF{(B%Kl>2_$Luwr4Y_6k`B5w^Li zma|Z+vQtQ)aBxt2;@P=;boP`Q_X9^F1q}g-o6F6@m~%aD`9!w!$A;EJo#j78DLRNO zZJJD**=+PXt?@;k`Cg!nQULlSv006WbdL0rbbZYVTMSkrNAx(ZI#1#x7lqoJt_);c zT1_3g-O{1uorT|dSUmCGQdadr)}4%9ZQJB%3F>Xc9-~ZV@yD()umq`J-6$F&)+Qw&+%GVy^2c-}wzx^Nw+Bqc7xY+?vBN z*k3ynB~_m+Mahv(M9iqSQ}(A9d@&aN)#Z0@PEX!g!VxmpWj9}4DFv~U)*BRw=VBFR z=eGYsO$y*DtS`DvKG05~IV(9ZJzMv~c|N6}+NnjXc>Ku!Dme78MtlZ7>bgeO0s0oD z>8ERbICja&}6B5hAU z*VYgIeqZsb-;MWLgIFW&Jjb3%zgdcA9BPa&PPDDga|fA&W!+xKn<8(@CY*s$52#q{74VXl}7{{T@j4=+(3&$^3O zaR!TDruSO0_T(2_rMlb$Y)C%qazF1oW(m4a_95n|@kmR@q7&4rzaucTF5s8FbGNRC z*K(i8>QH!1C9kpR1g7>}6rG5tJzRIQFmt^J+8z5+PZv=oP;M>%bwrkQ-#|!-n4i`C zmQQNVq2eo4;dMn89wE1=jn^w&(55($hV<)t8hG!%+!hAt{ z>+%|G7{1Y&h1mk@k5AEh8bs!K0i-xNew#s*j7`A6rOjD4+3}$UcFALI_}W=J>i_6p zknX>`dxHQtpltfwZRR~zQ7zYBK^7q>u`S#zzt{q|`jT`10J%90szn1lP0MAa!ETC4 zO;W?SW+{8m*AUiJHWZhoH}*5OovBP?zTzzVK<7g#16IC~n)jY|F1qaRHJ&L&Z#b|{ z)~5WK-4M_mt-y?_>?02|=nXrBBhC;2vFI?_QmtMVq8T0ZKfbDkW=jWFf5l#yp@;jA zAV8RqgCVdZsE8@kgXW5GfzIS_ydw(hblb5c$&I4<@;7Bvu>`TO2(Nw9a_YLJNVX#H zWlX|E>g7MHmoOLWKWZjRWCm5lv6s1z>Nd{339QB&;UPaTs@bo zJPLg8hmfkOBf?)?qxyk|jXF*C?;!PlybHV--{CS(dv46|kvF0-pHljY^8bJzeHV|| zAI{ERQiu36|N9&LXI9(IykPgghz*QH#7FnvSrA~o!J@P4q{Q> z3z=__)xb+iXD2B8QGBBJ6?8(pG3J9%ggKG^o7kOD;n&Q~hP9LvZKf-_*72Ln6rNuu z&m!Gg?sR987hK=CB@aOJ-V%rHY6>uV7JiSUMAx-g3k0}Y25`T1ZNm$1G&T@%6Dq=0 zyBh3J_E;=ixRajLV6z@P|=07RP-oJy$^ zvkfyvsmJkjfUalm&3A6lRQ{DfSllQ-Jk|N3p zfd8tfb$QHCwRFIxB%wZ?Y`T()HTX=;sKcY>B zJ0ZsLxCs>+I2irQlHeyCY|ec(p&oN8!C8OvcOLoc{h`9hLQ7}eCH^lm{CvqKzA`}}Y09g5+ zF?hs7ROYJ?)6QeZ2zqyr#=T` zCv(yDVY8~}T7In;J^RE}JXRa=^`x^h^kDt1zKd>+z&-5(WiN~^V}?}WPOJO)$`84) z>Ze80@6p5U;q?+A?(g!mOM_3O3-gFA;Y*~#ER0pZQeLfyaph^nA{*Z zo^qmjDX5`E&W1GQ#)Ph!qH3YvM%n$&YbL6{iLE*b#F{&*vUBjFz)Zaj-Z7$Qzz1Wq zQZ|DfCWb;^(Sq}e&MYKU7P$xFwr3@=%}X2uKST^q&!MkeHGcMch!Ka%+pmD?;czS04Eyw67y0hnDE!c+)K!M_3_>ksi)C?h^? zMTnipN@R*lW^lU2I0dmDO`=omxj$TK))y= z(XJcEIFKEt*(;8Nz-sX^+;Xo*o@_JXnijv8h;Ldqy=W7?bBInBhRK91>4n%u1eFB8z zD&Rg`pSYlWnXsrCK#*=SUPzQDlelH$eE~l;}IwD+=HFs z-MAdOxA)+tO{v2M382FAjrXQk)gNF^C;7FO(MYRFMIV-aqq|hjiP$gcn&}fU%xTPM z%q_K4Qt%cFo7NW8nSrffPYvyZ=B2l@DaRbkdyVLk8gXv|Vaj!c1ulx0M63f#5_x&B z)u#SE-C2o}mw}7$PZ#7~4inq$ETt!!K<*7FlosJ8^}p@r9V71+@L#!%F0LSPs-P6G zS&?nB5`fG)#WP}kOv9~m)%UlhS^ZJx%((7&`+j({G_NJ}p2kN!A#(mtUMth8>$A_z ztl^%S<Zeh*6q%EO8viI##R10;8>alghCWH?0&k6r`4eKvl?&A4(+ zdVn7+e+V4tTU+ZqxFDGV9>g|HuEBM_AP5=Y(i;{qa({HDpOYpF3Fo-TX7)WWUW>2m zoQ&j9)zCSZI#XhqZ-&Jd`K$F*pLg*oi3f`DbtQ>3luU!6BO>Pc@QykCQve`xL`f+E zR_>Xj>uKqoQzSO;Ri)Ggjka=z9$lLctq0WRXbaXhekbs5t3J?S{a8~jW#Qe5-x*ii z+nVjG`x|z+QwY=s?3Uhtm94n?y6$q;`yO%E{!4*~cOq+Su5WUxSBcS)oQWvUGJYRZ zf-kS!i&&==-Atdit&&=PqIX=>+(ed8OlEPj;*e>1JN9Fp zLMzNA>^S8LIn_xlk{@(_vD>zKF^FNT81S3rGZaVW{8l85AV9J+vRs+IJEwfmB*pbb zg+h8s>G%#^kY_Bv_Awxt2+l+lDBHy<5|p&pa-|XY zc-pX$?6QX&o=HV&%re>;GzVnwQK;^eUp->;VFjZE&+djcsk5tP4Gs{7SfasBuLE8M zUDfG-LZRMJ{_i@_I#h|7y$tA8n`U4P_oENxEVVzc|Jr$YXmL}WTKQ+yg?nTA2s_>i z89yvnm2u5yf6g}Bd0^30dmyDsC)y*E4Lr=7>3laEDQ}FG&QHH3GXZ&W)HyD1H1uSv zIAX352|LPl6CjrBl`?$P*3$*mb5xyDfN!zdqs%vAId z{_8qT?0PFz9GI@nv?n2NQbvnL=P)w{JqQWB#!#c&KWrvS>Uw_4{8uW+|4QX)Ytm|I ziJWtN9KFq{jYr2ws!dsd>U3`L?n+1AZ?61hlf7W<^LbDQKE670t*xbko{kh6L9((C{c;5=S#Z)P>TwQg<{4zynq2|rmJFUK3l5(c;RQZsH)&BtV2+b+ z^vDX8Zj9tWi9B+!@4c~Sl@%A|m(M$bCxn{4iQCaweo9jFY*bqMA05uVb1r{ed!^PO z9Z>i>G+W1VjltICcIrLbMD9p9I7f*Jh5bW0F}0i5y5sP%v-$ewgqQN=2W>qOhPsn{ zrJHbmk*>v@16{hBEdBuxeL?^QiObzoCMd$I<6Z{Ay5PS=Kmj|bc~7&0P3ZI6ha=5p z+qRm$Mt(fvCcI(uqTR3K<76>SEaP(iP=W5v1UjCLL_pVkipuj_u0UlC8F^%xI*w(f z3_anZ z!g%U1s>INkE*g6>_FVB|r9toaFd;b-J(y&@_D=*E{xq zhF$T)SiQtR^%qTqXsLnZ&=Z#D4^s8uf*ntdsL+=!)#BJp-{gBW+WTN9J?97YNv>bf z=Pos8mmJo{;a$R1?A~l&RDErxi~jMoN0|z9ehYOUKAr>!MEQzYJXQ_YW;kZXFry6d zc?f6Cv5oKio?uu`p!k=>n0w0~^g;r~C;wlc7cud_0|Jh4Q-=OPDdW*KXYWlm-}$ih z$vMH)^_GM_DSJx@#ZspC-aq}_wY(oaP>*R@MKsXJA&5@n-77-@pdo>5FH+pJOwS-6 zpSMzH{KV*T)!1Pbg15~iGy~>GZ2UH}b7?h!;2tjl(HUY-2cF>*DrRHy>ivI~yvgr5 zUO8LKhhDiB^bB!f!GvPfl{1?ZgVIRIzeEUg&o&Vi1~{lwbR9n=j+u(Vrvko|2)i(8 z8ZvMgv}aevldA~Ra)kYDqu$8__FbCH;`+{z2Yt_Zva<}IJ9P3Q8YajDM?ML4RAY-6 z`LQ*BbXhvGIc-0kdm3``rwBBm^vx;n^*c=;+*uVcgdy1NpZU|*5uaJsvqr@$PItXamHEi=wZcs^aD+D^_ywI&$U3a z^hUO!QZOVX8W4d=Y!LeBcUmTrfW3Di<;qLtyAWM_bP;-();rIv{o!I)mB)NWKFPt> zS2e}f$%Oip;bnX@57k~loARgo54&bfzF#eVnk>_$PndT9;x0LIs*G6liJ~iHI`!+Y z)FUsvlFbd2JwS@HTVt!o*vzonlwPlMa$neCeg6BR+V4sA;bM>d&scNSR8cJQS(s3{ zCHBE5PK}+iBX%h@dq1fY(|b9+n8v#W^j0%6PDJ3a6h*_gs1pL(&!`G6D@TC2J!nQT zXxFS9p&%-|orl=vzy+QTMm#qkcuV3Ne|7>aa`{Y-k|ZZVfqP+DE02RueAU<|G;Z>6 z`2eQuD_ceuQz0J}&qetDXM~o!^DS^d1);3Zk^R>URRo@QH-i4v-CL5G<;ULCn6ir>eIDrV!Z->THDK4`Iy7cfaLVhzP7fk}{??%p{+QL}sJ|^2< z@ROz@duLG}hqBn`;pmUwTc1A!K6fc?rmWDbu~-eK8DgwumCGgTh2WJnp&lzl-MGG= zo$$h|#b4p1a)L5>2a<7W5WtGgcn)2Qo(@A~PxN$9o^;~QxnAh8G;Kj2ex8j?nOv{GjtO_20R2D= zEDRZ(46%s5*_^U$cAKEG`Y|?1oOCOc*`f~L;R64|xAeGl3}dr&88c<9Txmt=j~V9s zSoFJO6Oa?Y4aKqFPKvxeW&c-sLdJRIa!TrQmRQUcZ#HHZp99_nvy=X4;k=}+=jjQ< z7@ar{b2W=M1cXvI+>%1k663|37zey;Wx2mo{HYaFtYm@CZ0^Az)1^y=gG(^*cI2|2 zCqU3uj(_m+&&&LcBJ?d44mm~DE;Fq(q(Jzn@_lYp(zgtCEhK(h$mGnCFGYc^s z^*j7Qp(YF_m~Lui@V1*NX2rb0Mv_0PLNpcoGuIRrXEg~a1%B~wBQ>Z1z@#8wk#=zjfJFB3ukGu2+c$L4d{o`#S*%3}}hYFXP)(bO@6 z%*?ap5WwRk@Ep+PY(i}>Z^8jYD*{K(D_*ZM1O%uj>F3H`2a&t3A-JO0tC`@CV+_fMY)arwW|X{+EnV`D}8ax+RRZiEwu2f8E@(9bi-~mj;m--H?}H4 ziArwYQzyXTiO{Wmv>&tirI{Ay_jVDlGn%c6E=heU7cul}mruUd&YFc>C6ibyzd9J%zR zGd+`j)d>%gY1)U785n*MpYNQ@boAPo-A*pDyxJ!Z8v-~9>G*!v0@X>VULRK=L)sbtAs{aMWrz)aplna)Y28nZI`)I) z$EAd2B+riqOdTBF+k(P<^YEwdtM*|pkwz9-Fr?k7|?i#}z7?g@A z==oEJ6N;Fz4;z5*%Qw6Yv1zyLiP0_2GD~bWnvW~`AWlJ0u8tE?_P&xcK>%d)i|69S z#KMVo4WHp@NK>W5t;LM5(~RA-EjA?XnHdei6ej-579C6s-taq9O0MlFTS_q!arlx# zpnAR6P>T@;ba(A@Q!C90{Wjt@Da1tjC?`x|slq#0$s~uXLqu~0!B1EB2Wy<%VQ75oQBw6~*wM1Cb zr(Jb#tKq?@z*8;k=HSyaIBt2hb^mShGqcR6Urq3SP(fo$2l?|JKm?fWq{}G?Y^%sn zHiIWAGbjiMZ;tiIxe{9VP=GVBtn9)`_*Sn08?9tccV%8`U-2Yzc${yTsdwZgSy}7? zPjd~a;tpEFtEhL!@)?zNiw3jQr`?wN&L06$N6GJ{SNKAWn!HgqI&G4g zMhysc?h^kJ;5?;2@W7(%_+=TrFz=65c$T5yz*KSrmW9D+DivtZ>U}BixS6>OhS#zM zXR64LLzHKVDju!Ro-M*v0v%rkLDOTBar9E=RJ8wC5XPUq&az?u6!>ErMc#w^vo!^^ zfr6xZw)NWu;8w*CP^{XQ&qgo!ISl6jgsP$TYOv7Iyp16n+vmp^H< zZ$zdVwiAlincy~yHsJBEwGuUpcDR~9xFB0Fo{9S{6`aSh>>QS?#3XCJ@yL5AVdl9} z#6rLlO7@wS()PPXiDt&4?UkRj;b-I29v^k(jX640M%L1XnNoCs`~q>G4mQYYW1f0} z%YjnNKD=c-q5-G+F5raQ5Z+A89|-aHZ@Ke39<0YToQbHY1~>kmg^Y+KtruI}NuDXu zs`w42zS=Bc9zSGG%!zv&WCwpWz|cW%mf}-3obI*=(iI!?rf9wEs%LnjP;Sz`3HUWm>se6qgxzL(0#1p=7f_d zc5bH=FG3C6!;erL=k&TYlfQ|TM2%-WyqkkB{=Cd0nr<*Z~OCA z$wqul;)eK1Q+VV~LwVwQ^NLw~fW#ZwSJUa^i@?Riwl_4RWJWh6)twIBH zB+kl>S{|S7oe&_a2k%*lGg)dgb?{E+iC%E>y?ca)^^V%m9=o-;= zzkXwwjQ8W~F)RcS&(2#sAcZuu7t&3smLb4uUyciQ4`0vtRNMcuE9B)-&}q) zGAIigJzSVIpOD^mygXo36Hi>Zb2xnBkf3CI@ZhG`;*;%Hxf0lg+vUH{fAQT+Tn%*$ zGkI!fc#VOG-*9C%X2og&5d>CnoOyjKDU+2c>WTNfvLY_~Sq{ZV?cduIdnk@B-y%aT zZalf|zsKf9d-N%u&c5a00yW7J(+h`YVKRU% zd>F0c8s|f)+$E`j?$WmprqqU3zo<&qm9?tyQ9I!(5bJy_1Hm{@hr)nDn7zs(Aval_ zC&K1_rV;nYK!7*g@cNO0Xm{^!MUs;JBz2g-QuIrbK4r7RYL@FZ`==z*`}Ja~K3Nr! z){W46IMqgQuJ>BoR}u=RkQ?>h$O%uzO2XAi8a{Mk$J-res~sg5m?7CYL$ke7^lb!R zQc*&W3W((+NJNONJF6bi&cOJ(Qre0oUG43g$j)*alAWK1k2DTtKqIsbBkOB`Kd%AL z0?OF}#u7HOup*(y=i9ZQSVZ!L_P#(K`O;XFCEA~f=VdCso?nRebv%iPd>8!0`q9Og zW|?ewNOh$hUfO}n=f_npkv~0n^z)+t9a7=fh^Y*-Ap!ec?B&hi^tses0-Nufrbh5! zk@()Z-y`o<-z$l}F%<>|#C%K06eCTdB%vA2Zi2m^`9#2f<<0ZSVpSqtGKKFfaRB>o zU!A9p9V?4=Rr`wyEvKH@OZhB8;5XX0ls%gRo~9S05{m5_6P2q0a2$wr_;EfreB1v_d5xW$zkgT3MP$`Kv3-xs*&!1JBJ>F`5hoYif=qZ5^%TzAihEju)Pw zQ}9KeOZW!(WDs-mjV*}Xe}WN%Eg-E@0O*w8{x--co0pGE(ZW|s2e0DuLo>V8@U{8g zJLwEJYg7d^YQLI1Ct&r%W|0m|MLV&StT$MY##LUNj{YtIUFbJ8l<7|7e z`3RjeC99omnP#217PN92VtY7yhPX?syzkq^f|s@#5Kf7`R|wcTi`Keb6%C}UV>`ki z6BU+(OEKK?^Nl+l9`gl$2?P_DmXjjsrxGLX->-ZmiJhy-sw=+oiv4$3Qs%rob)rdH z(N#fjvvqh+wE1&C=FY#C8;F?r#6qJ|@-@}CuiO=N3gEP0!}f-DIb!{5oSwnFqyaWY zmXH`)CLj)9I@Bg}L0WYmt*4|Rn`^F1-n-2c(9h}{5g;$_TNhd)aGLqh@pV9{T`Sw` zJuxzrgNB}UT^$dHx~8&w;9{DzrjW%J(4y!Z4J}jPXPL<1GSo&L*>e<+$~;@2jTq73 zcwEASq>tW3^G{&aoOa$YWs&Fw&4b%1r`VxU^_-81P>C{In`+BNG%jUP=7vM5JEKAY zUBbzB)4I!q)6ck4uqZ+@XEOBl(T9L)?%KOZ8^uN+ZM1AQ6&A7>|Xo9m1>oGfVRj08uO}z*} zLE;f@^e13G+N1Zj^^q#Pt%nS1qHRI>{GS{0xK;Y{Hrf=vhjGn`I)+ zg>1PkmRQme(C?2hstt7@pWM7pzfuFG0&NpG*iQPerf+s*3qb-s*6Cc1PGnR@uF zP?v)uGkwa@KX&a4vPQITfqc?cI}(03RwlaKLkYW#3OR|I6sc_*(4`(18~x5fxh=12 z0<`p2<*sn&Cc;;L=;o}|@Ne!EFv9$sNXx&CLnOF%H>b-R)LIUc&B2(IcjQ@tL~Y*r z_~FGYp&wWLcnYbHfRLWlP2`0q=1L=ACv%`S-`fk*-<`z>XO)F!h<7|f$%W!{7u1m$ z{0qlbSppFw)GDiLydTgNG3rg0VV=8BU^)Pgz_pu^A4`ZdBskglX_{t?LzH81vB>D~ z?R~X;kHj8@blL>C?pp7Lks6saC~G)>pMZJG{B}8JKPFUcJ*7gpX)y@1=sW9u48N^T zq>h=7KJKD4C+VP2L%%yMjdZ~3A3|w6#R(f+JdsLx-Lho*w9F;TL5JVFCY41D^cC(8 z?)K(4lTB-Az*GBa+zZX+U`x(iGD?I&)Gp^yAgqLUCt+&aylI*G^|4JxJBeFO9@LeU9j3tU~7dWFF?UHPaDn$++E^CbRty2e`c=@ z8JfY)KlPn9BKaR@g^*QznlzFk4yEvK5FMB%rhCkXvXC5g z6D6-}i2~*=wmd_2BP`0jagX_fTq0xAqNimC8A0O*TX&jFx7H65kAcPxY z;MPugcdNYpbUcOAJJTT@ZK)*(|HLZb_Zjy=qgVaR&V}gj59JuF02HuF%8kkOZ*HG7 zV(zJEN?Y|n$1q=3E$lRfYJbrj*j8?Ty}Ws`fe^0VBhc?UaEfoOvHEHK31M?-0{9an z2;Ub7iF(Dq7X$WQ;H!_+!lzS-9M<0X_$T#Rtnw5Z+Qwl=bF(}NKu8GLiZSz8v*%xJ z7mF$fZt9HHZU;DM3W+JVsEKjafb7)DM`|}f^+Q)DvH9@oq@I!F;1Njj?IO?pp=w)B z@0}N*1vZ{r6Pr6q7)H1iy0ISWZZ4B|$~akLd)K=xBa+E8nJjpmRv*4S(RywTY3u;% zk6P(BtJ$-fS_<2XD=-B8_8r0sV9=hB$(0#$KH*OKx&-} zlYJcho=0f^Zn^M7>CS~olDl-7qV7{ZR_`z$R*`=&?ny$4xV^YRGzSEzT;dsv`DP!t z?9LQPvP}sny5P^&k36B+-nl=L>%g?jVY#RiSNax>Lb}$|OtkR4TI4Cs;*c-tn?1g3 zK*BHutBe~X+nWzFkMxdw%uhQ_RequqT-5~kp$^`aMojaU3=6P+S=8D}3?qk%(BJXX zZd>U@VOhogYFkW=8n08iWV^5=DFd4fJAEVH$M*XU(A;ROOl}y|y%f=^T>W--clu0t zy?!;|?Z4rG(%Txx>-KR)Ht4Zc_`+%9>9a2b0zW221R%t_ee1`t!B92XY5OqQwk8t0 zh^qY7Xlk=R9O{m}M&f1}#Sid()Y8?}sor&cl*3011= zq-nc$*1MW8@0-0HEnSd^!buB*X=n5>({ed{7N>d?>T4O7Z5`JB z^e;8#AK1wR?z=2beH22WRBw)iS;kVRbBRf zv>N$CGGvz2sS$TB_<4yaJ)FpwPMe9t0(_aE#nJD$O@3KIER^tjc`)NzRuXr{CP6Fe zSm|wxc`u8R??F5m@iy=}#|3{e@f19=SM@?+U@Mc578KU!MxFD3IiU1d%pi);X|fHN0oqeZP2oB=Vuv_vlITm7?wj+%l z0_dh%2Szd2%W)@F%Q5+*klE||82+e@Ga|}+X@5U*lK&WMjvdZ%MJEY$^i>5loS^B> ze;35_%&9x@ z!VQ;gyJ>xl?C;~1^J3xhbzR9CR)HQq0gI`-6Jm?Gk| z_VpfI-%)tXU&K}4YqCJkeU1p!WC!7Y396asBq|s*C-@da5lf0u;ZE?gC`$YAbRsOq`RPH4bQKLeGV>rrGyk+ys zXk5darp2cGmf56DgX@FA4@Lo8SHLqIB6lgM3|hjX2dHJa46lqa0dk`y-06wD>Q2=8~O?!&7P*lUlf2C1a z0GgfDO-z5`F-Xo*i*>fRnQdjPJS3jwtNpQ=4wQ`yskpf4P{7kISgH50FbAv+1 zU^ai2$s=bv>0tS`xTz8h_+#I&R~W8MUlzg>wiDj*^Kjv^;schnNC+``kF1v|XUe!a zB9qsBpqD|e5tM)PWM-u5rvB4Ud7VWx*omYQauD-3Eca+=<+@Yw zBJ?)7See@WsI{XDH+5o7Y$cm`D&B~#FBO9_-i@hfU7eUdsqQc5JOqCue003g=Htt% zyV7GS(F=4ZNrSwU>Vlp9CiP=Em`OrKx&2&VB(q>e}Gbal5PT4=}!`_Rjv@72y zy(yz(TzuCq-pj^MYOe}_XNBJHNTzwr;B2f_&j9qObp4mYsf{>uA;%UwJil*VrAsU^)RZ|&wiJtn z(#%%4^8HbM*K{|*AIJ9~lPFEs+6fHyY3(nagVJa_@6&qSXgYTGr?HK;u2vfFwp+;f zMX?iqKoF!{3C+KC?6s7ckQ;6!$Gi?ys1RO@Y=Ua-GE2!}irPA$f=aqDmddmD!=)w` zwVM_eK_iz`qoHmxV9`TdKU$50%XHGRR=_Lbx`{&Ol%{;qMy}Q|aHjya0hhBMg;+0V z+}%hUo_>|djO{q(>WE3z9EkQL_BdcJ$gt8yM$3JNdcWUej$Zh_QI!L(5L_!(Ptuw4 z&11lJzluo@dtwsqiAheS(Q4qo8dl z*25P3di%k*NT;w~W@_)U)>=@5K*G1bnPc*i-hf}9i??r%Fhe}*GXooFUx^KKWGqK% zJW_1N?MJ4cf_c>F3^U~mklza@9k@M$qg2QJZ?gHNUCgIwFm+@Bj>|47JwA;E<9ap_ zc&Fo+FdWyydICq|C5C;a4XIiA%SXisKNMy!K{;MkroG>aoSdKXJgz_=-aC$;ZE;pr zq1Xu=I!d#$-TGZg?0X+ca3m_RMr?$(7~HTo!=Zg!0k$-%H=b-?i~x=B7vW}zMXEDi z7@x(lWd2G!tZ>(onvy-N`i^Ti4dYX8W3YzvZ7yn(b=Kw|8vqs2(IlJM2A zx1aW(55>Id`@Uu?ze(5ieEILV{EPV9!#T-3v;Up)ZkjRfXpkB+ecid;b@BFM)RfVw zFvdz0z^5$G#K@v>aH3Cc>ZUM|JpHoRK3&P$Wxf>r728ynU)X8-BCkUtanO^|utY4u z`sl0gka6#@CkrPd3788zT?P+TE4*RX?_6zIC31g094EorD2s*dF3m`vig?DprW2RV z@ZoMT|H5-g=<3Q)`|GafMr(pgQ9KI-Flv_chug<|;0u^aTQ=9B?GrFUg_SMn;x7Ay zpUs5G$#xpAYnM76eUy6XE?5?WLa>lR1K>3seYYsa4uB>>CA9D_m>9_9Dio6y_nYx! zdjW`vO$ovK3%<2RMnL;3C-ymJaSJ0IlG+%)toEfgD!n~PSNE~0A`a7Ul4Q?{8fYaK zKgVU0_asl(TO0xnx$};axfP?iQ=|7-a&vwnax=jV`Bfj9B*mr^4e*PdTX7e7`kNV~ z{n)PHWHoR(E3fN$@raKVbjJRwfvWu%G}!lsiV4AP=~_&oP5>lp+KrTah9BOzVPV`K z*q3xsz?Gw0nBR|4T-#?aU_Hi_5BFPbxV*#%UBy=hppzy67On83rBjjR@j|*>VYx!0 z!)b~uE{7FQK8K5=s4wcKAvRS*X%I`$A@|txi|r+eHe2l0!jR|Gz>DP?vgWx$VY2ZX7NCy0d~xl= zV1K)_O#b~BgKodm)-ANv#K9as_$N7=!N!}>S2Jmj<+IK(tQ%+xu9jr`lQ@X(*+oog zt^eN8xqaHjMj7&H^|g&g(OH%LhJ>hSsx%S3PkVoWnXynb8QrKnq@F?!WK!ou>5G5S zNimo#)D^MUKUU&g(1qZ1GLlXGz!r+aYX(M1a#;uYNmP7Aeu920v_{H{0)x;=NjrG- z%hW)F=1mLT75u=u+D{2-&VkTNlmCCpgE!TuIRb!%( z?M9{r8R(WG|7zj5Rk*Nn5dHy-^cXz*yzE=S_H`K$Nl?yCTEgeG`NPz8?zAwUaaVOYGEWmg?{!UAnwB! zwBG6f1K*4;%mYli!Q2_Q;W`h9o%P?Y-3A zQ)VMaL=}n~m!dO|uKGvj!u0CqBc%$Z0m!Q*wBpH|BG=^=aNh)* zX{6ZZA~A^lr?syr+Couq@q|5WRKNqaTHU^n!BR{P3TS zh?`6{rXXu@8*u{Dkq_aC{bEx-xN{{^^;p5BJcj4wAF<6_#SRpS*;i{ey@Bjlo&#!) z0h~%pZ}O_x4Pio+>1{}Uu>n~Br@gO!s$*-SO)kOR3GVLh4hgQo-QDe=!QI^@xVs++ z?(Xi+!JQD^;l8ilAMxtWPct>UYIb$)>D|41t<@!y_yg3G&~&v%RsxiiYU~5tK8Ih- z6hI#ktQ9b7Z69Cw31amv00;MA8U_{;g2=9w;7r29T0f;TMM>NsD0)4dt_`icDiM=u z5g)-cfmCs2Zo0R&hF|&1fJ;0)Io?o;m|f~>1>#Sqzao`xn3yqy8a0j}M4dZcfdd=X zgG9`@ocivu} z3v}H!g7oB#768+^i|~r52<-c^h#3t0dqaFGa92eHF2F4`2_IP+2Ob z*oViutRj@Sk>-s@QigUPKEuB`KefLzzr8$}qxzABNSCwm2hx!TM|S%wp8fBXCMGq# zX^*L=+Jt)h{==8k%X->BZ?8iB0vM^_8VvKlAy<|jzd!mdbghx6Sc84AHVTW|leM#K z;a;$aiLKNLrp6r^Skwede>t8ook81WpM411f3{ZQD8+6HsbNan7}?NeeYjC{Wj~@^ zGqde)vlcsNGg`N>lE&HteKsRV+r9{+LoMh0SM-o5O1?tG#3#`|lH~quYwAW4&3UF6BsHYxmmVYA z-HlB1wH$75!I4ST=#>u9>);ypYda%>D}PZwwmHk0^GlAC>)QKeZadtWS#gHJ`&GHX z@Do;8A9>UitKEs**h+siB#uxH+O%$tuWuLH&s$Jrq1BrD+C-hotsLF!bMT?Y#O`|C z^0;{nk+okeLF5S&p~9M=l&{8)9>xv9Bco0@UaX(cMVW7A?ft=JBi{JiCYj?WlL2#6-l$YfkG{=)-B! zliCb7U=MK$G4^q^McmW&QNe1`SGS+Zx?C+5Y+i1odp%vwO02kS^cVZ-{f}j;IeP@l z`f`e+QPW^g$fb2fzAX+~tr4R)Zx43Rc0pLGxFnspk0($`8a`jn=dLR}Hoo*`xRxfj znZE^i)ZsYuOef3XeG3SU2dz`xoi{ZZMwd9?hv+^MzhpQpY@JB=2g|q~F4OlyA_Y{# zI(u_^4hB3~&!*?bu8B~`xV~pHI|Ze1yD>pT8ZJWc;c~$sT0moS^Y%#-PLPF!nVh z@q7@aZOVhUb?|)9xOw??eFhkGYQj#qR0J;MgJ2;hp3j=vC zeAx*1`mZdL@~&HKUJ~FTn8pu|GMk8-;i|7KlG1&TO064NsP@MA={WoyHdnxr!RXhZ z{DI36@=%~K`w}zU=(K)E?WEWSP8q{KH9Ujf95ClX$^OxY3#S=C;|gVd`kb`UH7;YT z{+^qqH3KIdUxk@-ipzd0HupCmn*qCZ;(q|An&VCqErz zJ)Rb6y6GZ}(s3|CFjaq&48>fcaokNgiP&&8EVhrY<(ji7P8lsvvinF`3PD&lb+`-6 zrE{GfVQ{CMh+KLWo1^Kgq?jhrBg&Gp=O?Wwo1?32!8n*W`cQ5~cX+YknKJ zytm8P11s#D3pEh>0qzc3`}8AC={QX`Sm-w~Zl?6*lL=jP0Udq|W3_P(G_|K|dh5v5 zD4lZdf9L7ta|Jot`4@J6R7?%c@7K5D{O~xzQgI2R`yIkvCbF9CX}Vm)|HtbCql*Ua z@W=D*7|NW))7c>E*g}TlT@jtqdp2KqhEd9Vjcvw(>z~h}o#L;X?qqeVKynP_pa%v& z_sOG`G6=@enhQl`c4<|ac*s&tOJvoZ>??N9x&k8@(gdf;qiE9k#&K3va%_y@AZ4;V z+`#FQ!DEDh)wS&oS~F{$=R55sG1zrg7?Se*J1Y!}{EKU=BJbIIhwMBKfnKNwMI%}d zTHR9f&cEL`c?*5f#XD_0Ie$wVfQ{^|CFJrL*kss42ceM)g>v zt`HJWDo>c$U51OaX8>7*+2qhJ+jm3li9LkT!l@Tdmh8sMyA{I2Tk~#Z6~CN=S7KD$irXTWA9ZFH(Reqpi$eclNj}}v2la3%M(-RmL^}Cyl z^sQ<##%AXKkxZowl^6hQ8UoB}RJ3K019Z%JI_o ziz$52Km$`rK2#-+(By|XLT$qGFjACa!l&q3dztoqi%qi7R5oE41Vq_Kgx=f)vK}Xn zh_Wg}v3V@LI-*H}Rqz|24jSv*3kepXhP684T9NxWvN^Go(A1}?fMpKs`!nHc*(PTD zZqL?%^&G-JRJ-%8)VkD~I7$Z4fb;-M>+)mMwxFl-y@8!B-LEpckZtiG!+vF|O;njY ztD15{eR&ghF?1hm1F`0cv(Zx5rnap7pSr2nnm!>)H{3{gQ00*Vyl-f~_&thlM&jXj zo?35l&bBs&pjgc4j~AqBD&HONf_79zs&1 z`CE2vS{4cc8WkEWVd-6n9!y6XY5@sW-*-e@243W6Q2~q8fw(LMr$&w9xHJ?^CyU~0 zXEaG$(He!U1dU3DGSJZR`S z4V=~4yR}gF;hHNey*_nvaH3O|q}#Vh1i>cvBA+c*Um-uE+m4#(aLMHWl9mJjqcGjQbQFIv?O`_+Yofz{}TTBau0mo&ufdc*%2g?4E1yXoJF&)NHZcNazd%R>-; z%1XN3ONr{mwG}Lh&7upm!2>6z8TR<-|6`mT!HBF=?BNVPp>t+2j{@UuH|h8H`dP9~ z%r{{m^t_mxt}&}bEt%U*K9$`<&af#u3nltv4G;tjo=x)Da(Wsc-2-G*kOa;4fT+z% z#}vjY$5b;&BWqh%Y=0!I@(6x2#jnAdY- zMLD<1iXne^MKt-L?^>Mm2_7z9L~pqo-1wUHm64-;1Su)i`+3?X!;kVVEG8VEHIXwd z+uskERg}0(@VpIoxKHhuV{UJZnA7^f$SS4eq?AM^x%Rg!eplKp7l@Dxb{-KWFxYVS z-~3*r1~=S9ER1VkB#&cFdb%jxO=_Ej5S}}VHW2nJg46+GfV@H(akg3m{@;SBFV4*U zzouOoZ!xUIuweA19|s2`Z@%0V^j_XQCM!{!xCCoX*!I1*nm;eFvvZ)No+ zn%w83PI6su{OLsSxuU^9qI7E0TX;cYK`8}Qv@_xfgyNd}h-g20;u;@Au<`@I^p3-K z@#1XLxeZ8$zSXK+a|lKWC_3KAx-3vvLYls`BFO>N_9s?TQ$4zh=e(#G@r zHNp(uS!`Ivx6(h`;<^zq$I^moJ(ly~GtvwUgNS)fXCKtQb8pDC%W5IpfNu zH%Cm4X!K+7ml9*?z!T8~i^q%I;9{Atduo%Mc+N5{tPS3ijhf8S97Hv*{uKRH1n_lf@J#&^H+4=orH_A;r~&-;1YFkL@kjg1O>br zagP`nq0P-z)bkDv1Qq1D(3Y|DehD6wno{~7PjX*})YH8;)2BodLVAz>ILnPa)nl$| z(~XP(d&X32B!=}Xpo3k;Jd8vt*I;_A<+1>mR9E+@wKlGjHwu=5?ieN1Q_}FXH%gjd z=&Lac-teKap=;9`Yj8bs7K&}Ya&{P8pTNOCOiI83>lC#p1ecix&z6-E&Jl6^ybR_E zYYZr7lr_gzL-Q!F)U`)OQ#1;*heJ^v)k{O{80pBgpoe?XKn!N27SJla&y6@|02h!< zx8ZYKFbEexqCv|VcE>Uli>_Wqbm(Nmof>{NVcE%St9U83MPTu9Brk#cykDAf(L4WK z*pDx1RB7}Z5GdR&+-PfmTWdNIvAfHbm#uPKKeRA{4t+HYkvmuo{TCP9bf7OdwG-;d zwzVELjV00n!tIT16Pht6ij1-zvL4JC^+iz`Tg*$=o#E)$sVP%PaF;ELr)KqpB#mnkKPD~0EQ zPyW@uQ5VTGIEZ@RKQBlo#F%erl$pp!)S1+kJTyuIv|lVdMp;7!{Jj$*!g6~3tp*jx zFa~)9*0Bt6%CAs)*7C{~MRi=D+8bO`7^222aEnaT{WvV<4`{1^2*IfsqrwWd3E{#f zQdayg1DJzRT(YeLuPxSRA|#y{71Uvpa|#X4$7NzC*aFvZL-P)cqS^HzW_+we{u|J) zRl8neB7I^gj^NfHkFN>W1@O&h;$gfUv|JB5&`^gRU$AZ|*>7)Qa*{VbPRx&$mS-B@ z!E=AJ+{4^xJqV8e=CTrTyIR1_R#PuyY-A)2pfQ$chc0p!ASj@VjXe#-|^;*VYmI_&4XhUL4h{;T+Q3Ltad)?J4;ov9R zAE8Y}^*eE-)|v=qVOj9IRxq9n#jvnMR7@b3LfAKIuKp7fq)azjU2C!zL3yJTQPD|U0B-Y zdNHQx)~*5_x!@Kkdp+$oGjqrLZ*)1&gu6UB3VLydQ}j98-eB?o`oHCDYO9>Dg<+PD zR-McSy)&)t`4F>1XQ%_&?9&Imd^3k^A%gAfMgBFR4sJuDIiyTHQ4Q=EYA2A!zfW7< zr4}R=vQjJ9-AZ(=Ab7AjsuR|}#wZ^P1E4=~q^izKB~@bT8t&v0$LUz}T8&L_2hFoW z6=FS>@yl~Mr=+Yuin8-jU<4|`=T$lf;JAtucFZs8^1f90%l*c^QS8mr>}nARg{o1ig&12$0bt5Az(PUV5!~7i@go6ZLytAup$5+| z!@Np;P|$Uk_~D`p(#w5gHcQBUFIl6>lW*}yH=UZDP4k-IDeh;$)3%St-OdzOfpYWA zcISbEw%YFR@Q%!G@DXmbZE|Z?js|+49Kx*5DEsB=0Ii0|*U5@mFULwR&S25;oYfCF zJ?Tg1+pHdqNUaeQG5PEs_P8bH1c z?7+q-e#=U)#P2PNiLE3+0(I9sR~#9dIqtBMoU6(8*lK-lQO;C@mS11^qwD(jJ!&Bl zTm7F`7q(PZuWQURb0#%+MnU7g0?jh{3F*~>m{;@5kGfR+hkKsfF6hyDx8H`EcBWrr z_LtQUBbH_d7!!#`)Dxcv^z6zqYV|L`7MfnI`B)P@2N;9_hFWgRYByECr~W=;}y~KbD|ThHbnjm}3h82x80(a3b|7H7N83>G1v_5^6(3bJ}$#pHVSB zYAueCs6x99Kua4*!~WdC*0Vj~rCzOn-YLOwif^NBE@69$yDGOo?L#SfkIj@2Qr9E) zPKSF~Ad)3dm&G_s^}F5KQ-qQ_pClIAzpS&FkQz>nn9lg&1QoD3$Z{}zYF*?1h7c}A zhSW1Ly5hW!c@vk`E-8|xYEvg*BLpvg3E;LrLr%O2Z;{%m&6@_2z)+_?!TH$h_Hc$P=Z+E+YtVPQ+$IvVMKLEL(e9!dl<&qP6z zjFwFY6%oKQrNropEHoa1xRZF5IM}7kGre1~-xFb`r;@|@yP%e;h-JlBfsFt@Lvmrk zQpAcQh(8XS3Nbp`h*tboQ>_1NUu*-?>91Y3*?%3i|C}H0;9=Hlv#`GrNs=;4yTYOfF*iuiqa9<0?yB%AiXaf~Qr`N6nABi9M z-C9u%1}e+xlHN{6ckJr!emW}a-L%xj{9R;8NR^<u~s0?Y(8Y=j{U~%|G*hVR{nkk5HRT5&20Wjow{#5B+9O_(7w;y!JNf z%kwKQ;~1xXhc^qMLBSUL@%0N5ngQxa!=W}<2&+$$n_pzo!*xt>QUw9|L4j6`C3i7X z{pc84LWK`=yfQ7;E@6W=#I$lm=+3<|OEm{JmW4+HNbpgnO{jd1dpE@}Wx{qGrWROQ z{>MmKMd4_L*4rJ6(Rgt3FcufO&EF07wsL3~#yQ@)4|WAerhI|!17 zjF#8yD&ceH^4nMINR`?Ep8eZ}ve!C+oRGoOlwrvzVTAaqW+H(b3Gfz#_>mzvvQ51J zkii_n9MAjT9Ak_zA?y2pq=%nlt>`U3)2QyU5a-Sv<#&dhq|G(AE|J>l%qwanexnv! zj@#s*DKN6+6PfksHv&Z&&8~7qWV(EpCZ%!l(KC;a!5^iwg64Z1$-GI$lYp93NiKkG z=A{9sTsrjlpt%_Nszs2oroNWrNG_W~PHVQTba3n7NzxA)t+exGC$yxyEa}}7CGB%M zEHrQ$n}Kd9rx&Zd>byPOqn0A-f3*8(_Pyz4d5V#+RgeI_EP{zrS&Wd2obIg)^Tl=ZvC157hWV=y&@mP>^2s=lFyQ5AJnJ zD|THK_~pk8RAg_woCr(F7Msg?*~;e#27Mf8Y@AF|21% zxG(vbzxmp@+GT!Z=Y7(g-P-a31Z(kO#BY%^ftA5PRro%yM@;Z{P1di%%k4f(L`Fi` z$6y(?(2pK8IigA8{`b7>F`Wkdj4zwqds(p>uWFvP;u=kP;`3kn24v9{!di$Yok)zL zcbrz0)`M9~pVASrZ|x#365Jf+;YXbWypJekdq+}OQbw@he(4U-c8<0XXWToO+(o*9 zyO|czZP0WP%i9o5L(UHQ(E8<=bM?`CT#ENqBr^xPBkDC7GL8flHuP}^Q*nh51vM&b zct!U{z4j2(RkP6j+)B+a%Y<-(64afD$J`;Yt><$NW zdTt2*g}x@ujmhsrH|fr@%910HoqplLMv*CrsYn451=J@GJsL66D5zH(Q~q5)uE)B4 zG{&bZ;&s1=Cgtd~;<@(4m^mS|{OJIVgm<;GAC+ z=8aO|TF+0K93DMpz@;#hqX<4Rgkl1;;7kX^^duW-QQ;|u3{gI`T6WQ^>%|}5f2)jL zh&(<&={E+_p8a~&QXmhl^*w4c0LeHU9CE1JZa3n>u0l?mSFbWS8*+Q4&8_5cV1B zV?{c(R(wYpCHQ*c3>isM$|8hzFfPocrkyPO6{0lw-Q*%@*tHIJIx2szW zRpz$=Rze=!ElaNpxiX2faaCDx!i>ArLv>hTUJry;esl`P+=~e6RpR^Sj&PCA*{jx??+X=ut8LZ!kMsZ3V*}4$7U response.json()) .then((data) => populateFilters(data)) - .catch((error) => console.error("Gagal load wilayah.json:", error)); + .catch((error) => + console.error("Gagal load wilayah dari database:", error) + ); function populateFilters(data) { populateSelect("kabkota", data.kabkota); @@ -14,31 +16,45 @@ function populateSelect(id, options) { const select = document.getElementById(id); if (!select) return; - select.innerHTML = options - .map( - (opt) => ` + // Add default option + let defaultOption = + '"; + + select.innerHTML = + defaultOption + + options + .map( + (opt) => ` ` - ) - .join(""); + ) + .join(""); } -// Fetch Layanan JSON +// Fetch Layanan dari API Database document.addEventListener("DOMContentLoaded", function () { - fetch("/assets/json/home/layanan.json") + fetch("/api/layanan/data") .then((response) => response.json()) .then((data) => { initializeLayanan(data); setupUIHandlers(); }) - .catch((error) => console.error("Gagal load layanan.json:", error)); + .catch((error) => + console.error("Gagal load layanan dari database:", error) + ); }); function initializeLayanan(data) { renderHeader(data.header); renderTabs(data.tabs); renderContents(data.contents); - changeTab("pertek"); + changeTab("amdal"); } // Data Header @@ -62,7 +78,7 @@ function renderTabs(tabs) { (tab) => ` ` @@ -86,7 +102,9 @@ function renderContents(contents) { } else { return ` `; } @@ -94,7 +112,7 @@ function renderContents(contents) { .join(""); } -function renderStandardItem(item) { +function renderStandardItem(item, index) { return `
@@ -106,14 +124,25 @@ function renderStandardItem(item) {
-

${item.title}

-

${item.description}

- Baca selengkapnya ... +
+ ${item.no_registrasi} + ${item.pemrakarsa} +
+

${item.title}

+

${item.description}

+
${item.periode}
- +
`; @@ -178,8 +207,387 @@ function setupUIHandlers() { 'input[placeholder="Search"]' ); if (searchInput) searchInput.value = ""; + + // Reload original data + loadOriginalData(); }); } + + // Apply filter + const applyFilterButton = document.querySelector(".bg-blue-600"); + if (applyFilterButton) { + applyFilterButton.addEventListener("click", function () { + applyFilters(); + }); + } + + // Search input + const searchInput = document.querySelector('input[placeholder="Search"]'); + if (searchInput) { + let searchTimeout; + searchInput.addEventListener("input", function () { + clearTimeout(searchTimeout); + searchTimeout = setTimeout(() => { + applyFilters(); + }, 500); // Debounce 500ms + }); + } + + // Handle "Berikan Tanggapan" button clicks + document.addEventListener("click", function (e) { + if (e.target && e.target.classList.contains("berikan-tanggapan-btn")) { + const itemId = e.target.getAttribute("data-item-id"); + const itemTitle = e.target.getAttribute("data-item-title"); + const itemDescription = e.target.getAttribute( + "data-item-description" + ); + const itemPeriode = e.target.getAttribute("data-item-periode"); + + if (itemId) { + // Fetch detail from API + fetch(`/api/layanan/detail/${itemId}`) + .then((response) => response.json()) + .then((data) => { + showFeedbackForm(data); + }) + .catch((error) => { + console.error("Error fetching detail:", error); + // Fallback to basic data + showFeedbackForm({ + nama_kegiatan: itemTitle, + deskripsi_kegiatan: itemDescription, + periode: itemPeriode, + }); + }); + } else { + // Fallback for old data structure + showFeedbackForm({ + nama_kegiatan: itemTitle, + deskripsi_kegiatan: itemDescription, + periode: itemPeriode, + }); + } + } + }); +} + +// Function to show the feedback form +function showFeedbackForm(detailData) { + const contentsContainer = document.querySelector("#layanan-contents"); + if (!contentsContainer) return; + + // Keep tabs visible, just reset their state + const tabButtons = document.querySelectorAll(".tab-btn"); + tabButtons.forEach((button) => { + button.classList.remove("bg-blue-900", "text-white"); + button.classList.add("bg-white", "border", "border-gray-300"); + }); + + // Render the feedback form + contentsContainer.innerHTML = ` +
+ ${renderInformasiRencanaKegiatan(detailData)} + ${renderSaranPendapatForm()} +
+ `; +} + +// Function to render "Informasi Rencana Kegiatan" section +function renderInformasiRencanaKegiatan(data) { + return ` +
+
+

Informasi Rencana Kegiatan

+
+
+
+
+
+
+ +
${ + data.no_registrasi || "-" + }
+
+
+ +
${ + data.jenis_dokumen || "-" + }
+
+
+ +
+ +
+ ${data.nama_kegiatan || "-"} +
+
+ +
+
+ +
${ + data.bidang_usaha || "-" + }
+
+
+ +
${ + data.skala_besaran || "-" + }
+
+
+ +
+
+ +
${ + data.lokasi_kegiatan || "-" + }
+
+
+ +
${ + data.kewenangan || "-" + }
+
+
+ +
${ + data.pemrakarsa || "-" + }
+
+
+ +
+ +
${ + data.provinsi_kota || "-" + }
+
+ +
+ +
+ ${data.deskripsi_kegiatan || "-"} +
+
+ +
+ +
+ ${data.dampak_potensial || "-"} +
+
+
+ +
+ +
+
+ + + + +

Peta Lokasi Kegiatan

+ ${ + data.latitude && data.longitude + ? `

${data.latitude}, ${data.longitude}

` + : "" + } +
+
+
+ +
+ ${data.deskripsi_lokasi || "-"} +
+
+
+ +
+ ${data.periode || "-"} +
+
+
+ +
+
+
+
+
+ `; +} + +// Function to render "Saran, Pendapat dan Tanggapan Kegiatan" form +function renderSaranPendapatForm() { + return ` +
+
+

Saran, Pendapat, dan Tanggapan untuk Kegiatan

+
+
+
+
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ +
+ + +
+
+
+ +
+
+ + +
+
+ + +
+
+ +
+
+
+
+ + Data wajib diisi + +
+ +
+ + Data wajib diisi + +
+ +
+ + Data wajib diisi + +
+ +
+ + Data wajib diisi + +
+ +
+ +
+ Khawatir +
+ + + + + +
+ Harapan +
+
+
+
+ +
+ + (Ukuran Maks 1 MB) +
+
+ + + +
+ +
+
+
+ +
+ + +
+
+
+
+ `; +} + +// Function to go back to the main list +function goBackToList() { + // Re-render the original content from database + fetch("/api/layanan/data") + .then((response) => response.json()) + .then((data) => { + renderContents(data.contents); + changeTab("amdal"); // Default to AMDAL tab + }) + .catch((error) => + console.error("Gagal load layanan dari database:", error) + ); } // Tab switching function @@ -206,3 +614,100 @@ function changeTab(tabName) { selectedContent.classList.remove("hidden"); } } + +// Handle tab click - check if we need to return to table view first +function handleTabClick(tabName) { + // Check if we're currently in feedback form view + const contentsContainer = document.querySelector("#layanan-contents"); + const isFeedbackForm = + contentsContainer && !contentsContainer.querySelector(".tab-content"); + + if (isFeedbackForm) { + // Return to table view first, then switch to the clicked tab + fetch("/api/layanan/data") + .then((response) => response.json()) + .then((data) => { + renderContents(data.contents); + changeTab(tabName); + }) + .catch((error) => + console.error("Gagal load layanan dari database:", error) + ); + } else { + // Normal tab switching + changeTab(tabName); + } +} + +// Star rating functionality +document.addEventListener("click", function (e) { + if (e.target && e.target.classList.contains("rating-star")) { + const rating = parseInt(e.target.getAttribute("data-rating")); + const stars = document.querySelectorAll(".rating-star"); + + stars.forEach((star, index) => { + if (index < rating) { + star.classList.remove("text-gray-300"); + star.classList.add("text-yellow-400"); + } else { + star.classList.remove("text-yellow-400"); + star.classList.add("text-gray-300"); + } + }); + } +}); + +// Map tab ID to document type +function mapTabToDocumentType(tabId) { + const mapping = { + amdal: "AMDAL", + "ukl-upl": "UKL-UPL", + addendum: "Addendum", + audit: "AUDIT", + }; + return mapping[tabId] || "AMDAL"; +} + +// Apply filters function +function applyFilters() { + const searchValue = + document.querySelector('input[placeholder="Search"]')?.value || ""; + const kabkotaValue = document.getElementById("kabkota")?.value || ""; + const kecamatanValue = document.getElementById("kecamatan")?.value || ""; + const kelurahanValue = document.getElementById("kelurahan")?.value || ""; + + // Get current active tab + const activeTab = document.querySelector(".tab-btn.bg-blue-900"); + const activeTabId = activeTab ? activeTab.id.replace("tab-", "") : "amdal"; + + const params = new URLSearchParams({ + search: searchValue, + kabkota: kabkotaValue, + kecamatan: kecamatanValue, + kelurahan: kelurahanValue, + jenis_dokumen: mapTabToDocumentType(activeTabId), + }); + + fetch(`/api/layanan/filter?${params}`) + .then((response) => response.json()) + .then((data) => { + renderContents(data); + changeTab(activeTabId); + }) + .catch((error) => { + console.error("Error applying filters:", error); + }); +} + +// Load original data function +function loadOriginalData() { + fetch("/api/layanan/data") + .then((response) => response.json()) + .then((data) => { + renderContents(data.contents); + changeTab("amdal"); + }) + .catch((error) => + console.error("Gagal load layanan dari database:", error) + ); +} diff --git a/public/assets/json/home/layanan.json b/public/assets/json/home/layanan.json index 3b98103..3e57f9f 100644 --- a/public/assets/json/home/layanan.json +++ b/public/assets/json/home/layanan.json @@ -4,42 +4,12 @@ "subtitle": "Daftar Pengumuman dan Informasi terkait kegiatan yang mengajukan izin lingkungan" }, "tabs": [ - { "id": "pertek", "label": "PERTEK" }, - { "id": "rintek", "label": "RINTEK" }, { "id": "amdal", "label": "AMDAL" }, { "id": "addendum", "label": "Addendum" }, { "id": "ukl-upl", "label": "UKL - UPL" }, { "id": "audit", "label": "AUDIT" } ], "contents": { - "pertek": [ - { - "title": "Kegiatan Penggalian Kuarsa/Pasir Kuarsa, LUKITO HARTONO LAWY", - "description": "Dampak Potensials: Penurunan Kualitas Udara, Peningkatan Kebisingan, Peningkatan Air Larian, Peningkatan Timbulan Sampah, Terjadinya Gangguan Lalu Lintas, Terbukanya Kes", - "link": "#", - "periode": "27 Maret - 10 April 2025" - }, - { - "title": "Pembangunan Waterfront Malalayang, TARCISIUS ASWIN JULIZAR, W", - "description": "Dampak Potensials: Pra Konstruksi 1. Persepsi Masyarakat Tahap Konstruksi 1. Peningkatan Kesempatan Kerja dan Berusaha 2. Peningkatan Sedimentasi 3. Perubahan Garis", - "link": "#", - "periode": "26 Maret - 9 April 2025" - } - ], - "rintek": [ - { - "title": "Test Penggalian Kuarsa/Pasir Kuarsa, LUKITO HARTONO LAWY", - "description": "Dampak Potensials: Penurunan Kualitas Udara, Peningkatan Kebisingan, Peningkatan Air Larian, Peningkatan Timbulan Sampah, Terjadinya Gangguan Lalu Lintas, Terbukanya Kes", - "link": "#", - "periode": "27 Maret - 10 April 2025" - }, - { - "title": "Pembangunan Waterfront Malalayang, TARCISIUS ASWIN JULIZAR, W", - "description": "Dampak Potensials: Pra Konstruksi 1. Persepsi Masyarakat Tahap Konstruksi 1. Peningkatan Kesempatan Kerja dan Berusaha 2. Peningkatan Sedimentasi 3. Perubahan Garis", - "link": "#", - "periode": "26 Maret - 9 April 2025" - } - ], "amdal": [ { "title": "Kegiatan Penggalian Kuarsa/Pasir Kuarsa, LUKITO HARTONO LAWY", diff --git a/resources/views/admin/pengguna/index.blade.php b/resources/views/admin/pengguna/index.blade.php deleted file mode 100644 index 67b3b3a..0000000 --- a/resources/views/admin/pengguna/index.blade.php +++ /dev/null @@ -1,492 +0,0 @@ -@extends('layout.layout') -@php - $title='Users Grid'; - $subTitle = 'Users Grid'; - $script =''; -@endphp - -@section('content') - -
-
-
- Show - - - -
- - - Add New User - -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- S.L -
-
Join DateNameEmailDepartmentDesignationStatusAction
-
-
- -
- 01 -
-
25 Jan 2024 -
- -
- Kathryn Murphy -
-
-
osgoodwy@gmail.comHRManager - Active - -
- - - -
-
-
-
- -
- 02 -
-
25 Jan 2024 -
- -
- Annette Black -
-
-
redaniel@gmail.comDesignUI UX Designer - Inactive - -
- - - -
-
-
-
- -
- 03 -
-
10 Feb 2024 -
- -
- Ronald Richards -
-
-
seannand@mail.ruDesignUI UX Designer - Active - -
- - - -
-
-
-
- -
- 04 -
-
10 Feb 2024 -
- -
- Eleanor Pena -
-
-
miyokoto@mail.ruDesignUI UX Designer - Active - -
- - - -
-
-
-
- -
- 05 -
-
15 March 2024 -
- -
- Leslie Alexander -
-
-
icadahli@gmail.comDesignUI UX Designer - Inactive - -
- - - -
-
-
-
- -
- 06 -
-
15 March 2024 -
- -
- Albert Flores -
-
-
warn@mail.ruDesignUI UX Designer - Active - -
- - - -
-
-
-
- -
- 07 -
-
27 April 2024 -
- -
- Jacob Jones -
-
-
zitka@mail.ruDevelopmentFrontend developer - Active - -
- - - -
-
-
-
- -
- 08 -
-
25 Jan 2024 -
- -
- Jerome Bell -
-
-
igerrin@gmail.comDevelopmentFrontend developer - Inactive - -
- - - -
-
-
-
- -
- 09 -
-
30 April 2024 -
- -
- Marvin McKinney -
-
-
maka@yandex.ruDevelopmentFrontend developer - Active - -
- - - -
-
-
-
- -
- 10 -
-
30 April 2024 -
- -
- Cameron Williamson -
-
-
danten@mail.ruDevelopmentFrontend developer - Active - -
- - - -
-
-
- -
- Showing 1 to 10 of 12 entries - -
-
-
- -@endsection diff --git a/resources/views/auth/signup.blade.php b/resources/views/auth/signup.blade.php index ad04b65..a0fda66 100644 --- a/resources/views/auth/signup.blade.php +++ b/resources/views/auth/signup.blade.php @@ -7,32 +7,47 @@
-
-
- +
+
+
- + -

Sign Up to your Account

-

Welcome back! please enter your detail

+

Daftar Akun

+ {{--

Silakan masukkan detail Anda

--}}
-
+ + @csrf + + @if(session('status')) +
{{ session('status') }}
+ @endif + + @if($errors->any()) +
+
    + @foreach($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif
- +
- +
@@ -40,72 +55,62 @@ - +
- + +
+
+
+
+
+ + + + +
+
- Your password must have at least 8 characters
-
- - -
- Or sign up with -
-
- - -
-
-

Already have an account? Sign In

-
+
-@php - $script = ''; -@endphp + +@push('scripts') + +@endpush - \ No newline at end of file + diff --git a/resources/views/components/backend/jadwal/modal_add.blade.php b/resources/views/components/backend/jadwal/modal_add.blade.php index 453d921..dd541d4 100644 --- a/resources/views/components/backend/jadwal/modal_add.blade.php +++ b/resources/views/components/backend/jadwal/modal_add.blade.php @@ -9,6 +9,15 @@
@csrf
+
+ + +
@@ -32,57 +41,15 @@
- -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
+ +
+
diff --git a/resources/views/components/frontend/navbar.blade.php b/resources/views/components/frontend/navbar.blade.php index 38e2a76..58a7d80 100644 --- a/resources/views/components/frontend/navbar.blade.php +++ b/resources/views/components/frontend/navbar.blade.php @@ -22,7 +22,7 @@