From 56b2bd372590966cfff32b8471f8dc6b864fa9d1 Mon Sep 17 00:00:00 2001
From: Abah Roland <59082428+vickyrolanda@users.noreply.github.com>
Date: Wed, 1 Jan 2025 18:35:20 +0700
Subject: [PATCH] Rilis 2501.0.0
---
.gitignore | 8 +-
.php-cs-fixer.php | 5 +-
.../Analisis/Config/config.php | 10 +-
Modules/Analisis/Enums/TahapPedataanEnum.php | 620 +++-
Modules/Analisis/Enums/TipePertanyaanEnum.php | 632 ++++-
.../AnalisisIndikatorController.php | 937 ++++--
.../AnalisisKategoriController.php | 892 ++++--
.../AnalisisKlasifikasiController.php | 904 ++++--
.../Controllers/AnalisisLaporanController.php | 965 +++++--
.../Controllers/AnalisisMasterController.php | 1178 ++++----
.../AnalisisParameterController.php | 905 ++++--
.../Controllers/AnalisisPeriodeController.php | 928 ++++--
.../AnalisisResponChildController.php | 879 +++++-
.../Controllers/AnalisisResponController.php | 1018 ++++---
.../AnalisisStatistikJawabanController.php | 1071 +++++--
Modules/Analisis/Libraries/Analisis.php | 972 ++++---
Modules/Analisis/Libraries/Bdt.php | 851 +++---
Modules/Analisis/Libraries/Gform.php | 1012 ++++---
Modules/Analisis/Libraries/Import.php | 723 +++--
Modules/Analisis/Models/AnalisisIndikator.php | 1002 ++++---
Modules/Analisis/Models/AnalisisKategori.php | 622 +++-
.../Analisis/Models/AnalisisKlasifikasi.php | 641 ++++-
Modules/Analisis/Models/AnalisisMaster.php | 620 +++-
Modules/Analisis/Models/AnalisisParameter.php | 634 ++++-
Modules/Analisis/Models/AnalisisPeriode.php | 636 ++++-
Modules/Analisis/Models/AnalisisRespon.php | 939 ++++---
.../Analisis/Models/AnalisisResponBukti.php | 641 ++++-
.../Analisis/Models/AnalisisResponHasil.php | 664 ++++-
.../Providers/AnalisisServiceProvider.php | 18 +-
Modules/Analisis/Routes/web.php | 606 +++-
.../Anjungan/Config/config.php | 14 +-
.../BackEnd/AnjunganBaseController.php | 804 +++++-
.../BackEnd/AnjunganController.php | 929 ++++--
.../BackEnd/AnjunganMenuController.php | 991 +++++--
.../BackEnd/AnjunganPengaturanController.php | 900 +++++-
.../FrontEnd/AnjunganBerandaController.php | 843 +++++-
.../FrontEnd/AnjunganController.php | 808 +++++-
.../FrontEnd/AnjunganSuratController.php | 1038 +++++--
Modules/Anjungan/Models/Anjungan.php | 559 +++-
Modules/Anjungan/Models/AnjunganMenu.php | 676 ++++-
.../Providers/AnjunganServiceProvider.php | 28 +-
Modules/Anjungan/Routes/web.php | 535 +++-
.../Views/assets/css/custom/screen.css | 60 +
.../Views/assets/css/custom/style.css | 114 +
.../Views/frontend/beranda/index.blade.php | 4 +-
.../Anjungan/Views/frontend/index.blade.php | 46 +-
.../BukuTamu/Config/config.php | 14 +-
Modules/BukuTamu/Database/.gitkeep | 0
.../2024_12_19_011545_create_akses_modul.php | 825 ++++++
...4716_create_table_buku_keperluan_table.php | 945 +++++++
...34827_create_table_buku_kepuasan_table.php | 937 ++++++
...944_create_table_buku_pertanyaan_table.php | 953 +++++++
...20_005059_create_table_buku_tamu_table.php | 905 ++++++
.../Database/Seeders/BukuTamuSeeder.php | 625 +++++
.../BukuTamu/Database/Seeders/ModulSeeder.php | 601 ++++
.../Database/Seeders/SettingSeeder.php | 617 ++++
.../BukuTamu/Database}/index.html | 0
.../BackEnd/AnjunganBaseController.php | 800 +++++-
.../BackEnd/KeperluanController.php | 875 +++++-
.../BackEnd/KepuasanController.php | 860 +++++-
.../BackEnd/PertanyaanController.php | 883 +++++-
.../Controllers/BackEnd/TamuController.php | 924 ++++--
.../FrontEnd/BukuTamuController.php | 927 ++++--
Modules/BukuTamu/Models/KeperluanModel.php | 615 +++-
Modules/BukuTamu/Models/KepuasanModel.php | 637 ++++-
Modules/BukuTamu/Models/PertanyaanModel.php | 613 +++-
Modules/BukuTamu/Models/TamuModel.php | 622 +++-
.../Providers/BukuTamuServiceProvider.php | 28 +-
Modules/BukuTamu/Routes/web.php | 542 +++-
.../BukuTamu/Views/frontend/index.blade.php | 12 +-
Modules/BukuTamu/composer.json | 2 +-
Modules/BukuTamu/module.json | 2 +-
.../Kehadiran/Config/{app.php => config.php} | 6 +-
.../2024_12_20_031434_create_akses_modul.php | 833 ++++++
...45742_create_kehadiran_jam_kerja_table.php | 348 ++-
...5747_create_kehadiran_hari_libur_table.php | 953 +++++++
...8_create_kehadiran_alasan_keluar_table.php | 977 +++++++
..._create_kehadiran_perangkat_desa_table.php | 985 +++++++
...45751_create_kehadiran_pengaduan_table.php | 945 +++++++
.../Database/Seeders/KehadiranSeeder.php | 641 +++++
.../Database/Seeders/ModulSeeder.php | 609 ++++
.../Database/Seeders/SettingSeeder.php | 625 +++++
.../Kehadiran/Helpers/kehadiran_helper.php | 668 ++++-
.../BackEnd/AlasanKeluarController.php | 925 ++++--
.../BackEnd/HariLiburController.php | 946 +++++--
.../BackEnd/JamKerjaController.php | 878 +++++-
.../BackEnd/PengaduanController.php | 881 +++++-
.../BackEnd/RekapitulasiController.php | 900 +++++-
.../FrontEnd/PerangkatController.php | 1008 +++++--
Modules/Kehadiran/Models/AlasanKeluar.php | 606 +++-
Modules/Kehadiran/Models/HariLibur.php | 585 +++-
Modules/Kehadiran/Models/JamKerja.php | 633 ++++-
Modules/Kehadiran/Models/Kehadiran.php | 632 ++++-
.../Kehadiran/Models/KehadiranPengaduan.php | 681 ++++-
.../Providers/KehadiranServiceProvider.php | 31 +-
Modules/Kehadiran/Routes/web.php | 559 +++-
.../Views/frontend/layouts/index.blade.php | 4 +-
Modules/Kehadiran/composer.json | 6 +-
Modules/Kehadiran/module.json | 2 +-
Modules/Lapak/Config/config.php | 40 +
.../Lapak/Config/shortcut.php | 41 +-
.../BackEnd/LapakAdminController.php | 148 +-
.../BackEnd/LapakKategoriAdminController.php | 777 +++++
.../BackEnd/LapakPelapakAdminController.php | 769 +++++
.../Lapak/Http/Controllers}/index.html | 0
.../lapak => Modules/Lapak/Http}/index.html | 0
Modules/Lapak/Models/Pelapak.php | 465 +++
Modules/Lapak/Models/Produk.php | 457 +++
.../Lapak}/Models/ProdukKategori.php | 84 +-
.../Lapak/Models}/index.html | 0
.../Lapak/Providers/LapakServiceProvider.php | 77 +-
.../Lapak/Routes}/index.html | 0
Modules/Lapak/Routes/web.php | 433 +++
.../Views/backend}/kategori/cetak.blade.php | 0
.../Views/backend}/kategori/form.blade.php | 0
.../Views/backend}/kategori/index.blade.php | 2 +-
.../Lapak/Views/backend}/navigasi.blade.php | 0
.../Views/backend}/pelapak/cetak.blade.php | 0
.../Views/backend}/pelapak/form.blade.php | 0
.../Views/backend}/pelapak/index.blade.php | 2 +-
.../Views/backend}/pelapak/maps.blade.php | 0
.../Views/backend}/produk/cetak.blade.php | 0
.../Views/backend}/produk/detail.blade.php | 0
.../Views/backend}/produk/form.blade.php | 2 +-
.../Views/backend}/produk/index.blade.php | 14 +-
Modules/Lapak/composer.json | 28 +
.../pengaduan => Modules/Lapak}/index.html | 0
Modules/Lapak/module.json | 14 +
app/Casts/Path.php | 2 +-
app/Casts/Sebutan.php | 2 +-
app/Casts/Zoom.php | 2 +-
app/Console/Commands/AcakDataCommand.php | 2 +-
app/Console/Commands/ModuleCommand.php | 2 +-
.../Commands/Modules/MigrationMakeCommand.php | 633 +++++
.../Commands/Modules/SeedMakeCommand.php | 593 ++++
.../Commands/Modules/Stubs/migration.stub | 24 +
app/Console/Commands/Modules/Stubs/seed.stub | 16 +
app/Console/Commands/ViewClearCommand.php | 2 +-
app/Console/Kernel.php | 2 +-
app/Enums/AgamaEnum.php | 2 +-
app/Enums/AktifEnum.php | 2 +-
app/Enums/AnalisisRefSubjekEnum.php | 2 +-
app/Enums/AsuransiEnum.php | 2 +-
app/Enums/BahasaEnum.php | 2 +-
app/Enums/BaseEnum.php | 2 +-
app/Enums/BidangBelanjaEnum.php | 457 +++
app/Enums/CacatEnum.php | 2 +-
app/Enums/CaraKBEnum.php | 2 +-
app/Enums/DerajatSuratEnum.php | 2 +-
app/Enums/DokumenEnum.php | 2 +-
app/Enums/Dtks/DtksEnum.php | 2 +-
app/Enums/Dtks/Regsosek2022kEnum.php | 2 +-
app/Enums/FirebaseEnum.php | 2 +-
app/Enums/GolonganDarahEnum.php | 2 +-
app/Enums/HamilEnum.php | 2 +-
app/Enums/HubunganRTMEnum.php | 2 +-
app/Enums/JabatanKelompokEnum.php | 2 +-
app/Enums/JawabanKepuasanEnum.php | 2 +-
app/Enums/JenisKelaminEnum.php | 2 +-
app/Enums/JenisPeraturan.php | 2 +-
app/Enums/KarakterSuratEnum.php | 2 +-
app/Enums/KategoriDokumenPeraturanEnum.php | 545 ++++
app/Enums/KategoriPublicEnum.php | 2 +-
app/Enums/KategoriPublik.php | 2 +-
app/Enums/KategoriPublikEnum.php | 465 +++
app/Enums/KeuanganRefRek1Enum.php | 473 ++++
app/Enums/ListSasaranEnum.php | 2 +-
app/Enums/OfflineModeEnum.php | 2 +-
app/Enums/PekerjaanEnum.php | 2 +-
app/Enums/PendidikanKKEnum.php | 2 +-
app/Enums/PendidikanSedangEnum.php | 2 +-
app/Enums/PindahEnum.php | 2 +-
app/Enums/ReferensiEnum.php | 2 +-
app/Enums/SHDKEnum.php | 2 +-
app/Enums/SakitMenahunEnum.php | 2 +-
app/Enums/SasaranEnum.php | 2 +-
app/Enums/SatuanWaktuEnum.php | 2 +-
app/Enums/SistemEnum.php | 2 +-
app/Enums/Statistik/StatistikEnum.php | 2 +-
.../Statistik/StatistikJenisBantuanEnum.php | 2 +-
app/Enums/Statistik/StatistikKeluargaEnum.php | 2 +-
app/Enums/Statistik/StatistikPendudukEnum.php | 2 +-
app/Enums/Statistik/StatistikRtmEnum.php | 2 +-
app/Enums/StatusDasarEnum.php | 2 +-
app/Enums/StatusDasarKKEnum.php | 2 +-
app/Enums/StatusEnum.php | 2 +-
app/Enums/StatusKTPEnum.php | 2 +-
app/Enums/StatusKawinEnum.php | 2 +-
app/Enums/StatusKawinSpesifikEnum.php | 2 +-
app/Enums/StatusPendudukEnum.php | 2 +-
app/Enums/StatusPengaduanEnum.php | 2 +-
app/Enums/StatusSuratKecamatanEnum.php | 2 +-
app/Enums/SukuEnum.php | 2 +-
app/Enums/TampilanArtikelEnum.php | 2 +-
app/Enums/TipeLinkEnum.php | 2 +-
app/Enums/WargaNegaraEnum.php | 2 +-
app/Events/CodeIgniterEvent.php | 457 +++
app/Events/Event.php | 2 +-
app/Events/ExampleEvent.php | 2 +-
app/Exceptions/Handler.php | 2 +-
.../DokumentasiPembangunanOpendkExport.php | 2 +-
app/Exports/KlasifikasiSuratExport.php | 2 +-
app/Exports/PembangunanOpendkExport.php | 2 +-
app/Exports/PendudukOpendkExport.php | 2 +-
app/Exports/PesertaBantuanOpendkExport.php | 2 +-
app/Exports/ProgramBantuanOpendkExport.php | 2 +-
app/Exports/SuratDinasExport.php | 2 +-
app/Exports/SuratLayananExport.php | 2 +-
.../AnalisisIndikatorTransformer.php | 641 +++++
.../AnalisisJumlahJawabanTransformer.php | 673 +++++
.../AnalisisMasterTransformer.php | 617 ++++
app/Http/Transformers/ArtikelTransformer.php | 561 ++++
.../BantuanPesertaTransformer.php | 617 ++++
.../Transformers/DptTransformer.php} | 148 +-
app/Http/Transformers/GaleriTransformer.php | 553 ++++
app/Http/Transformers/IdmTransformer.php | 529 ++++
.../InformasiPublikTransformer.php | 625 +++++
.../InventarisAssetTransformer.php | 625 +++++
.../InventarisGedungTransformer.php | 633 +++++
.../InventarisJalanTransformer.php | 625 +++++
.../InventarisKontruksiTransformer.php | 657 +++++
.../InventarisPeralatanTransformer.php | 657 +++++
.../InventarisTanahTransformer.php | 625 +++++
.../Transformers/InventarisTransformer.php | 585 ++++
.../KategoriProdukHukumTransformer.php | 657 +++++
.../KelompokAnggotaTransformer.php | 625 +++++
app/Http/Transformers/KelompokTransformer.php | 569 ++++
.../Transformers/LapakKategoriTransformer.php | 609 ++++
.../Transformers/LapakPelapakTransformer.php | 601 ++++
.../Transformers/LapakProdukTransformer.php | 593 ++++
.../LogSuratDinasVerifikasiTransformer.php | 689 +++++
.../LogSuratVerifikasiTransformer.php | 649 +++++
.../Transformers/PembangunanTransformer.php | 593 ++++
.../Transformers/PemerintahTransformer.php | 585 ++++
.../Transformers/PengaduanTransformer.php | 577 ++++
app/Http/Transformers/PetaTransformer.php | 537 ++++
.../Transformers/ProdukHukumTransformer.php | 593 ++++
app/Http/Transformers/SdgsTransformer.php | 537 ++++
.../Transformers/StatistikTransformer.php | 577 ++++
app/Http/Transformers/StuntingTransformer.php | 569 ++++
.../SuplemenTerdataTransformer.php | 625 +++++
.../Http/Transformers/SuplemenTransformer.php | 68 +-
app/Http/Transformers/WilayahTransformer.php | 561 ++++
app/Imports/BantuanImports.php | 2 +-
app/Imports/KlasifikasiSuratImports.php | 2 +-
app/Imports/SuratDinasImports.php | 2 +-
app/Jobs/Job.php | 2 +-
app/Jobs/TestJob.php | 2 +-
app/Libraries/Captcha.php | 2 +-
app/Libraries/Checker.php | 2 +-
app/Libraries/DateConv.php | 2 +-
app/Libraries/FeedParser.php | 433 +++
app/Libraries/FeedReader.php | 433 +++
app/Libraries/FlxZipArchive.php | 2 +-
app/Libraries/JobProses.php | 425 +++
app/Libraries/Keuangan.php | 417 +++
app/Libraries/LogFormatter.php | 2 +-
app/Libraries/LogViewer.php | 2 +-
app/Libraries/MyException.php | 441 +++
app/Libraries/NoCaptcha.php | 2 +-
app/Libraries/OTP/AbstractManager.php | 505 ++++
app/Libraries/OTP/Interface/OtpInterface.php | 561 ++++
app/Libraries/OTP/OtpManager.php | 465 +++
app/Libraries/OTP/Repository/OtpEmail.php | 537 ++++
app/Libraries/OTP/Repository/OtpTelegram.php | 561 ++++
app/Libraries/Paging.php | 401 +++
app/Libraries/Rekap.php | 2 +-
app/Libraries/Release.php | 2 +-
.../Libraries/Reset/Email/EmailRepository.php | 20 +-
.../Reset/Interface/PasswordInterface.php | 617 ++++
.../Interface/PasswordResetInterface.php | 657 +++++
app/Libraries/Reset/Password.php | 465 +++
app/Libraries/Reset/PasswordRepository.php | 545 ++++
app/Libraries/Saas.php | 385 +++
.../Libraries/Shortcode.php | 84 +-
app/Libraries/ShortcutModule.php | 2 +-
app/Libraries/Sistem.php | 2 +-
app/Libraries/SpreadsheetExcelReader.php | 529 ++++
app/Libraries/Statistik.php | 2 +-
app/Libraries/Stunting.php | 2 +-
app/Libraries/TinyMCE.php | 2 +-
app/Libraries/TinyMCE/FakeDataIsian.php | 2 +-
.../TinyMCE/KodeIsianAnggotaKeluarga.php | 2 +-
app/Libraries/TinyMCE/KodeIsianAritmatika.php | 2 +-
app/Libraries/TinyMCE/KodeIsianForm.php | 2 +-
app/Libraries/TinyMCE/KodeIsianGambar.php | 2 +-
app/Libraries/TinyMCE/KodeIsianIdentitas.php | 2 +-
app/Libraries/TinyMCE/KodeIsianPasangan.php | 2 +-
.../TinyMCE/KodeIsianPenandaTangan.php | 2 +-
app/Libraries/TinyMCE/KodeIsianPenduduk.php | 2 +-
.../TinyMCE/KodeIsianPendudukLuar.php | 2 +-
app/Libraries/TinyMCE/KodeIsianPeristiwa.php | 2 +-
app/Libraries/TinyMCE/KodeIsianSurat.php | 2 +-
app/Libraries/TinyMCE/KodeIsianWilayah.php | 2 +-
.../Libraries/UserAgent.php | 60 +-
app/Listeners/CodeIgniterListener.php | 505 ++++
app/Listeners/ExampleListener.php | 2 +-
app/Listeners/FailedAdminListener.php | 2 +-
app/Listeners/LockoutAdminListener.php | 2 +-
app/Listeners/LoginAdminListener.php | 2 +-
app/Listeners/LoginPendudukListener.php | 2 +-
app/Listeners/LoginPerangkatListener.php | 2 +-
app/Listeners/LogoutAdminListener.php | 2 +-
.../SendEmailVerificationNotification.php | 2 +-
.../SendTelegramVerificationNotification.php | 2 +-
app/Mail/GenericMail.php | 401 +++
app/Mail/NewPinMail.php | 393 +++
app/Mail/ResetPasswordMail.php | 449 +++
app/Mail/VerificationMail.php | 441 +++
app/Mail/VerificationSuccessMail.php | 497 ++++
app/Mail/VerifyMail.php | 393 +++
app/Models/Agama.php | 2 +-
app/Models/Agenda.php | 2 +-
app/Models/AliasKodeIsian.php | 2 +-
app/Models/Anak.php | 2 +-
app/Models/AnggotaGrup.php | 2 +-
app/Models/Area.php | 2 +-
app/Models/Artikel.php | 2 +-
app/Models/Aset.php | 2 +-
app/Models/Bahasa.php | 2 +-
app/Models/Bantuan.php | 2 +-
app/Models/BantuanPeserta.php | 2 +-
app/Models/BaseModel.php | 2 +-
app/Models/Cacat.php | 2 +-
app/Models/Cdesa.php | 2 +-
app/Models/CdesaMutasi.php | 2 +-
app/Models/CdesaPenduduk.php | 2 +-
app/Models/Config.php | 2 +-
app/Models/CovidPemudik.php | 2 +-
app/Models/CovidVaksin.php | 2 +-
app/Models/DaftarKontak.php | 2 +-
app/Models/DisposisiSuratmasuk.php | 2 +-
app/Models/Dokumen.php | 2 +-
app/Models/DokumenHidup.php | 2 +-
app/Models/Dtks.php | 2 +-
app/Models/DtksAnggota.php | 2 +-
app/Models/DtksLampiran.php | 2 +-
app/Models/DtksPengaturanProgram.php | 2 +-
app/Models/Ekspedisi.php | 2 +-
app/Models/FcmToken.php | 2 +-
app/Models/FcmTokenMandiri.php | 2 +-
app/Models/FormatSurat.php | 2 +-
app/Models/Galery.php | 2 +-
app/Models/Garis.php | 2 +-
app/Models/Gawai.php | 2 +-
app/Models/GolonganDarah.php | 2 +-
app/Models/GrupAkses.php | 2 +-
app/Models/GrupKontak.php | 2 +-
app/Models/HubungWarga.php | 2 +-
app/Models/IbuHamil.php | 2 +-
app/Models/Inbox.php | 2 +-
app/Models/InventarisAsset.php | 2 +-
app/Models/InventarisGedung.php | 2 +-
app/Models/InventarisJalan.php | 2 +-
app/Models/InventarisKontruksi.php | 2 +-
app/Models/InventarisPeralatan.php | 2 +-
app/Models/InventarisTanah.php | 2 +-
app/Models/KB.php | 2 +-
app/Models/KIA.php | 2 +-
app/Models/KaderMasyarakat.php | 2 +-
app/Models/Kategori.php | 2 +-
app/Models/KelasSosial.php | 2 +-
app/Models/Kelompok.php | 2 +-
app/Models/KelompokAnggota.php | 2 +-
app/Models/KelompokMaster.php | 2 +-
app/Models/Keluarga.php | 2 +-
app/Models/KeluargaAktif.php | 2 +-
app/Models/Keuangan.php | 393 +++
app/Models/KeuanganManualRefBidang.php | 513 ++++
app/Models/KeuanganManualRefRek2.php | 497 ++++
app/Models/KeuanganManualRefRek3.php | 497 ++++
app/Models/KeuanganManualRinci.php | 2 +-
app/Models/KeuanganManualTemplate.php | 2 +-
app/Models/KeuanganTemplate.php | 457 +++
app/Models/KlasifikasiSurat.php | 2 +-
app/Models/Komentar.php | 2 +-
app/Models/LampiranSurat.php | 2 +-
app/Models/LaporanSinkronisasi.php | 2 +-
app/Models/Line.php | 2 +-
app/Models/LogBackup.php | 2 +-
app/Models/LogEkspor.php | 2 +-
app/Models/LogHapusPenduduk.php | 2 +-
app/Models/LogKeluarga.php | 2 +-
app/Models/LogLogin.php | 2 +-
app/Models/LogNotifikasiAdmin.php | 2 +-
app/Models/LogNotifikasiMandiri.php | 2 +-
app/Models/LogPenduduk.php | 2 +-
app/Models/LogPerubahanPenduduk.php | 2 +-
app/Models/LogPerubahanSurat.php | 2 +-
app/Models/LogRestoreDesa.php | 2 +-
app/Models/LogSinkronisasi.php | 2 +-
app/Models/LogSurat.php | 2 +-
app/Models/LogSuratDinas.php | 2 +-
app/Models/LogTolak.php | 2 +-
app/Models/LogTte.php | 2 +-
app/Models/LoginAttempts.php | 2 +-
app/Models/Lokasi.php | 2 +-
app/Models/MasterInventaris.php | 2 +-
app/Models/MediaSosial.php | 2 +-
app/Models/Menu.php | 2 +-
app/Models/Migrasi.php | 2 +-
app/Models/Modul.php | 2 +-
app/Models/MutasiCdesa.php | 2 +-
app/Models/MutasiInventarisAsset.php | 2 +-
app/Models/MutasiInventarisGedung.php | 2 +-
app/Models/MutasiInventarisJalan.php | 2 +-
app/Models/MutasiInventarisPeralatan.php | 2 +-
app/Models/MutasiInventarisTanah.php | 2 +-
app/Models/Outbox.php | 2 +-
app/Models/Pamong.php | 2 +-
app/Models/Paud.php | 2 +-
app/Models/Pekerjaan.php | 2 +-
app/Models/Pembangunan.php | 2 +-
app/Models/PembangunanDokumentasi.php | 2 +-
app/Models/Pemilihan.php | 2 +-
app/Models/Pendapat.php | 2 +-
app/Models/Pendidikan.php | 2 +-
app/Models/PendidikanKK.php | 2 +-
app/Models/Penduduk.php | 2 +-
app/Models/PendudukAsuransi.php | 2 +-
app/Models/PendudukHidup.php | 2 +-
app/Models/PendudukHubungan.php | 2 +-
app/Models/PendudukMandiri.php | 2 +-
app/Models/PendudukMap.php | 2 +-
app/Models/PendudukSaja.php | 2 +-
app/Models/PendudukStatus.php | 2 +-
app/Models/Pengaduan.php | 2 +-
app/Models/PermohonanSurat.php | 2 +-
app/Models/Persil.php | 2 +-
app/Models/Pesan.php | 2 +-
app/Models/PesanDetail.php | 2 +-
app/Models/PesanMandiri.php | 2 +-
app/Models/Point.php | 2 +-
app/Models/Polygon.php | 2 +-
app/Models/Posyandu.php | 2 +-
app/Models/Produk.php | 377 ---
app/Models/RefAsalTanahKas.php | 2 +-
app/Models/RefDokumen.php | 2 +-
app/Models/RefJabatan.php | 2 +-
app/Models/RefPendudukBidang.php | 2 +-
app/Models/RefPendudukKursus.php | 2 +-
app/Models/RefPeristiwa.php | 2 +-
app/Models/RefPersilKelas.php | 2 +-
app/Models/RefPersilMutasi.php | 2 +-
app/Models/RefPeruntukanTanahKas.php | 2 +-
app/Models/RefPindah.php | 2 +-
app/Models/RentangUmur.php | 2 +-
app/Models/Rtm.php | 2 +-
app/Models/RtmHubungan.php | 2 +-
app/Models/SakitMenahun.php | 2 +-
app/Models/SasaranPaud.php | 2 +-
app/Models/SentItem.php | 2 +-
app/Models/Setting.php | 2 +-
app/Models/SettingAplikasi.php | 2 +-
app/Models/Sex.php | 2 +-
app/Models/Shortcut.php | 2 +-
app/Models/Simbol.php | 2 +-
app/Models/SinergiProgram.php | 2 +-
app/Models/Statistics.php | 409 +++
app/Models/StatistikPengunjung.php | 2 +-
app/Models/StatusDasar.php | 2 +-
app/Models/StatusKawin.php | 2 +-
app/Models/StatusKtp.php | 2 +-
app/Models/Suplemen.php | 2 +-
app/Models/SuplemenTerdata.php | 2 +-
app/Models/SuratDinas.php | 2 +-
app/Models/SuratKeluar.php | 2 +-
app/Models/SuratMasuk.php | 2 +-
app/Models/SyaratSurat.php | 2 +-
app/Models/TanahDesa.php | 2 +-
app/Models/TanahKasDesa.php | 2 +-
app/Models/TeksBerjalan.php | 2 +-
app/Models/Theme.php | 2 +-
app/Models/Urls.php | 2 +-
app/Models/User.php | 2 +-
app/Models/UserGrup.php | 2 +-
app/Models/WargaNegara.php | 2 +-
app/Models/Widget.php | 2 +-
app/Models/Wilayah.php | 2 +-
.../Admin/ResetPasswordNotification.php | 2 +-
app/Notifications/ExampleNotification.php | 2 +-
.../Penduduk/ResetPasswordNotification.php | 2 +-
.../Penduduk/VerifyNotification.php | 2 +-
app/Observers/AuthorObserver.php | 2 +-
app/Observers/ClearCacheObserver.php | 2 +-
app/Observers/ConfigIdObserver.php | 2 +-
app/Observers/UuidObserver.php | 2 +-
app/Providers/AppServiceProvider.php | 51 +-
app/Providers/AuthServiceProvider.php | 4 +-
app/Providers/CarbonServiceProvider.php | 4 +-
app/Providers/ConsoleServiceProvider.php | 4 +-
app/Providers/DataTablesServiceProvider.php | 4 +-
app/Providers/EventServiceProvider.php | 4 +-
.../JsonApiPaginateServiceProvider.php | 113 +
app/Providers/NoCaptchaServiceProvider.php | 4 +-
.../TelegramNotificationServiceProvider.php | 4 +-
app/Providers/ViewServiceProvider.php | 37 +-
app/Providers/ZipStreamServiceProvider.php | 4 +-
app/Repositories/AnalisisRepository.php | 521 ++++
app/Repositories/ArtikelRepository.php | 513 ++++
app/Repositories/BantuanPesertaRepository.php | 569 ++++
app/Repositories/DptRepository.php | 481 ++++
app/Repositories/GaleriRepository.php | 505 ++++
.../InformasiPublikRepository.php | 577 ++++
.../InventarisAssetRepository.php | 577 ++++
.../InventarisGedungRepository.php | 585 ++++
.../InventarisJalanRepository.php | 577 ++++
.../InventarisKontruksiRepository.php | 609 ++++
.../InventarisPeralatanRepository.php | 609 ++++
.../InventarisTanahRepository.php | 577 ++++
app/Repositories/KelompokRepository.php | 521 ++++
app/Repositories/LapakKategoriRepository.php | 561 ++++
app/Repositories/LapakPelapakRepository.php | 553 ++++
app/Repositories/LapakProdukRepository.php | 545 ++++
app/Repositories/LembagaRepository.php | 513 ++++
app/Repositories/LogSuratDinasRepository.php | 561 ++++
app/Repositories/LogSuratRepository.php | 521 ++++
app/Repositories/PembangunanRepository.php | 545 ++++
app/Repositories/PemerintahRepository.php | 537 ++++
app/Repositories/PengaduanRepository.php | 529 ++++
app/Repositories/PetaRepository.php | 489 ++++
app/Repositories/ProdukHukumRepository.php | 545 ++++
.../SettingAplikasiRepository.php | 2 +-
app/Repositories/StatistikRepository.php | 529 ++++
app/Repositories/StuntingRepository.php | 521 ++++
app/Repositories/SuplemenRepository.php | 521 ++++
.../SuplemenTerdataRepository.php | 577 ++++
app/Repositories/WilayahRepository.php | 513 ++++
app/Scopes/AccessWilayahScope.php | 2 +-
app/Scopes/ConfigIdNullScope.php | 2 +-
app/Scopes/ConfigIdScope.php | 2 +-
app/Scopes/RemoveRtfScope.php | 2 +-
app/Services/ArsipFisikSurat.php | 2 +-
app/Services/Auth/PendudukMandiriProvider.php | 2 +-
app/Services/Auth/SessionGuard.php | 2 +-
app/Services/Auth/Traits/Authorizable.php | 2 +-
app/Services/Auth/Traits/LoginRequest.php | 2 +-
app/Services/CreateSymlinkModule.php | 497 ++++
app/Services/CreateSymlinkTheme.php | 489 ++++
app/Services/DTKSRegsosEk2022k.php | 2 +-
app/Services/DataEkspor.php | 2 +-
.../DataTables/ApiResourceDataTable.php | 2 +-
.../DataTables/CollectionDataTable.php | 2 +-
app/Services/DataTables/EloquentDataTable.php | 2 +-
app/Services/DataTables/QueryDataTable.php | 2 +-
.../DataTables/Traits/RenderTrait.php | 2 +-
app/Services/Feed.php | 2 +-
.../Install/CreateGrupAksesService.php | 4 +-
app/Services/LaporanInventaris.php | 2 +-
app/Services/LaporanPenduduk.php | 2 +-
app/Services/Laravel.php | 2 +-
app/Services/Pelanggan.php | 2 +-
app/Traits/Author.php | 2 +-
app/Traits/Collation.php | 2 +-
app/Traits/ConfigId.php | 2 +-
app/Traits/ConfigIdNull.php | 2 +-
app/Traits/GenerateRtf.php | 2 +-
app/Traits/Migrator.php | 2 +-
app/Traits/ProvidesConvenienceMethods.php | 2 +-
app/Traits/ShortcutCache.php | 2 +-
app/Traits/StatusTrait.php | 2 +-
app/Traits/Upload.php | 2 +-
app/Traits/Uuid.php | 2 +-
artisan | 4 +-
assets/images/back_button.png | Bin 0 -> 1667 bytes
.../plugins/laporan_keuangan/plugin.min.js | 149 +-
assets/js/validasi.js | 5 +
Dockerfile => bin/Dockerfile | 0
docker-compose.yml => bin/docker-compose.yml | 0
bootstrap/app.php | 5 +-
catatan_rilis.md | 24 +-
composer.json | 17 +-
composer.lock | 660 +++--
config/app.php | 4 +-
config/auth.php | 4 +-
config/broadcasting.php | 4 +-
config/cache.php | 4 +-
config/database.php | 4 +-
config/datatables.php | 4 +-
config/filesystems.php | 4 +-
config/fractal.php | 87 +
config/hashing.php | 4 +-
config/json-api-paginate.php | 87 +
config/logging.php | 4 +-
config/mail.php | 4 +-
config/queue.php | 4 +-
config/session.php | 4 +-
config/user_agents.php | 260 ++
config/view.php | 4 +-
config/zipstream.php | 4 +-
donjo-app/Routes/Web/admin.php | 108 +-
donjo-app/Routes/Web/frontend.php | 141 +
.../Password.php => Routes/Web/install.php} | 34 +-
donjo-app/Routes/Web/mandiri.php | 4 +-
donjo-app/Routes/api.php | 107 +-
donjo-app/Routes/console.php | 4 +-
donjo-app/Routes/web.php | 81 +-
donjo-app/config/autoload.php | 4 +-
donjo-app/config/config.php | 14 +-
donjo-app/config/constants.php | 6 +-
donjo-app/config/database.php | 4 +-
donjo-app/config/doctypes.php | 4 +-
donjo-app/config/email.php | 4 +-
donjo-app/config/foreign_chars.php | 4 +-
donjo-app/config/hooks.php | 4 +-
donjo-app/config/installer.php | 4 +-
donjo-app/config/memcached.php | 4 +-
donjo-app/config/migration.php | 4 +-
donjo-app/config/mimes.php | 4 +-
donjo-app/config/profiler.php | 4 +-
donjo-app/config/routes.php | 4 +-
donjo-app/config/sid_ini.php | 4 +-
donjo-app/config/smileys.php | 4 +-
donjo-app/config/user_agents.php | 4 +-
donjo-app/controllers/Admin_pembangunan.php | 2 +-
donjo-app/controllers/AnggotaKeluarga.php | 2 +-
.../controllers/Api_inventaris_asset.php | 2 +-
.../controllers/Api_inventaris_jalan.php | 2 +-
donjo-app/controllers/Area.php | 2 +-
donjo-app/controllers/Artisan.php | 2 +-
donjo-app/controllers/Beranda.php | 2 +-
donjo-app/controllers/Bumindes_arsip.php | 2 +-
.../Bumindes_hasil_pembangunan.php | 2 +-
.../Bumindes_inventaris_kekayaan.php | 2 +-
donjo-app/controllers/Bumindes_kader.php | 2 +-
.../Bumindes_kegiatan_pembangunan.php | 2 +-
.../controllers/Bumindes_penduduk_induk.php | 2 +-
.../controllers/Bumindes_penduduk_ktpkk.php | 2 +-
.../controllers/Bumindes_penduduk_mutasi.php | 2 +-
.../Bumindes_penduduk_rekapitulasi.php | 2 +-
.../Bumindes_penduduk_sementara.php | 2 +-
.../Bumindes_rencana_pembangunan.php | 2 +-
donjo-app/controllers/Bumindes_tanah_desa.php | 2 +-
.../controllers/Bumindes_tanah_kas_desa.php | 2 +-
donjo-app/controllers/Cdesa.php | 2 +-
donjo-app/controllers/Cdesa_mutasi.php | 2 +-
donjo-app/controllers/Cdesa_rincian.php | 2 +-
donjo-app/controllers/Covid19.php | 2 +-
donjo-app/controllers/Daftar_kontak.php | 2 +-
donjo-app/controllers/DataSuratPenduduk.php | 2 +-
donjo-app/controllers/Data_persil.php | 2 +-
donjo-app/controllers/Database.php | 2 +-
donjo-app/controllers/Dev.php | 2 +-
donjo-app/controllers/Dokumen.php | 2 +-
donjo-app/controllers/Dokumen_web.php | 2 +-
donjo-app/controllers/Dpt.php | 2 +-
donjo-app/controllers/Dtks.php | 2 +-
donjo-app/controllers/Feed.php | 2 +-
donjo-app/controllers/First.php | 2 +-
donjo-app/controllers/Gallery.php | 2 +-
donjo-app/controllers/Garis.php | 2 +-
donjo-app/controllers/Gawai_layanan.php | 2 +-
donjo-app/controllers/Gis.php | 2 +-
donjo-app/controllers/Grup.php | 2 +-
donjo-app/controllers/Grup_kontak.php | 2 +-
donjo-app/controllers/Identitas_desa.php | 2 +-
donjo-app/controllers/Info_sistem.php | 2 +-
donjo-app/controllers/Informasi_publik.php | 2 +-
donjo-app/controllers/Install.php | 6 +-
donjo-app/controllers/Install_modul.php | 2 +-
donjo-app/controllers/Inventaris_asset.php | 2 +-
.../controllers/Inventaris_asset_mutasi.php | 2 +-
donjo-app/controllers/Inventaris_gedung.php | 2 +-
.../controllers/Inventaris_gedung_mutasi.php | 2 +-
donjo-app/controllers/Inventaris_jalan.php | 2 +-
.../controllers/Inventaris_jalan_mutasi.php | 2 +-
.../controllers/Inventaris_kontruksi.php | 2 +-
.../controllers/Inventaris_peralatan.php | 2 +-
.../Inventaris_peralatan_mutasi.php | 2 +-
donjo-app/controllers/Inventaris_tanah.php | 2 +-
.../controllers/Inventaris_tanah_mutasi.php | 2 +-
donjo-app/controllers/Job.php | 2 +-
donjo-app/controllers/Kategori.php | 2 +-
donjo-app/controllers/Kelompok.php | 2 +-
donjo-app/controllers/Kelompok_anggota.php | 2 +-
donjo-app/controllers/Kelompok_master.php | 2 +-
donjo-app/controllers/Keluar.php | 2 +-
donjo-app/controllers/Keluarga.php | 2 +-
donjo-app/controllers/Keuangan_laporan.php | 545 ++++
donjo-app/controllers/Keuangan_manual.php | 2 +-
donjo-app/controllers/Klasifikasi.php | 2 +-
donjo-app/controllers/Komentar.php | 2 +-
donjo-app/controllers/Koneksi_database.php | 2 +-
donjo-app/controllers/Kontak.php | 2 +-
donjo-app/controllers/Lampiran.php | 2 +-
donjo-app/controllers/Laporan.php | 2 +-
donjo-app/controllers/Laporan_apbdes.php | 2 +-
donjo-app/controllers/Laporan_inventaris.php | 2 +-
donjo-app/controllers/Laporan_penduduk.php | 2 +-
donjo-app/controllers/Laporan_rentan.php | 2 +-
donjo-app/controllers/Lembaga.php | 2 +-
donjo-app/controllers/Lembaga_anggota.php | 2 +-
donjo-app/controllers/Lembaga_master.php | 2 +-
donjo-app/controllers/Line.php | 2 +-
donjo-app/controllers/Mailbox.php | 2 +-
donjo-app/controllers/Main.php | 2 +-
donjo-app/controllers/Man_user.php | 2 +-
donjo-app/controllers/Mandiri.php | 2 +-
donjo-app/controllers/Menu.php | 2 +-
donjo-app/controllers/Modul.php | 2 +-
donjo-app/controllers/MultiDB.php | 2 +-
donjo-app/controllers/Notif.php | 2 +-
donjo-app/controllers/Notif_web.php | 2 +-
donjo-app/controllers/OpenSIDController.php | 2 +-
donjo-app/controllers/Opendk_pesan.php | 2 +-
donjo-app/controllers/Optimasi_gambar.php | 2 +-
donjo-app/controllers/Pelanggan.php | 2 +-
.../controllers/Pembangunan_dokumentasi.php | 2 +-
donjo-app/controllers/Pemilihan.php | 2 +-
.../controllers/Pendaftaran_kerjasama.php | 2 +-
donjo-app/controllers/Pendapat.php | 2 +-
donjo-app/controllers/Penduduk.php | 2 +-
donjo-app/controllers/Penduduk_log.php | 2 +-
donjo-app/controllers/Pengaduan_admin.php | 2 +-
donjo-app/controllers/Pengaturan_lampiran.php | 2 +-
donjo-app/controllers/Pengguna.php | 2 +-
donjo-app/controllers/Pengunjung.php | 2 +-
donjo-app/controllers/Periksa.php | 2 +-
.../PeriksaKepalaKeluargaGanda.php | 2 +-
.../controllers/PeriksaKlasifikasiSurat.php | 2 +-
donjo-app/controllers/PeriksaLogKeluarga.php | 2 +-
donjo-app/controllers/PeriksaLogPenduduk.php | 2 +-
.../controllers/Permohonan_surat_admin.php | 2 +-
donjo-app/controllers/Peserta_bantuan.php | 2 +-
donjo-app/controllers/Plan.php | 2 +-
donjo-app/controllers/Plugin.php | 2 +-
donjo-app/controllers/Point.php | 2 +-
donjo-app/controllers/Polygon.php | 2 +-
donjo-app/controllers/Program_bantuan.php | 2 +-
donjo-app/controllers/Qr_code.php | 2 +-
donjo-app/controllers/Rentang_umur.php | 2 +-
donjo-app/controllers/Rtm.php | 2 +-
donjo-app/controllers/Securimage.php | 2 +-
donjo-app/controllers/Setting.php | 2 +-
donjo-app/controllers/Setting_analisis.php | 2 +-
donjo-app/controllers/Setting_aplikasi.php | 2 +-
donjo-app/controllers/Setting_mandiri.php | 2 +-
donjo-app/controllers/Setting_web.php | 2 +-
donjo-app/controllers/Shortcut.php | 2 +-
donjo-app/controllers/Simbol.php | 2 +-
donjo-app/controllers/Sinergi_program.php | 2 +-
donjo-app/controllers/Sinkronisasi.php | 2 +-
donjo-app/controllers/Siteman.php | 473 ----
donjo-app/controllers/Sitemap.php | 2 +-
donjo-app/controllers/Sms.php | 2 +-
donjo-app/controllers/Sms_outbox.php | 2 +-
donjo-app/controllers/Sms_pending.php | 2 +-
donjo-app/controllers/Sms_sentitem.php | 2 +-
donjo-app/controllers/Sosmed.php | 2 +-
donjo-app/controllers/Statistik.php | 2 +-
donjo-app/controllers/Statistik_bantuan.php | 2 +-
donjo-app/controllers/Statistik_web.php | 2 +-
donjo-app/controllers/Status_desa.php | 2 +-
donjo-app/controllers/Stunting.php | 2 +-
.../controllers/Stunting_rekapitulasi.php | 585 ++++
donjo-app/controllers/Suplemen.php | 2 +-
donjo-app/controllers/Surat.php | 2 +-
donjo-app/controllers/Surat_dinas.php | 2 +-
donjo-app/controllers/Surat_dinas_arsip.php | 2 +-
donjo-app/controllers/Surat_dinas_cetak.php | 2 +-
donjo-app/controllers/Surat_master.php | 2 +-
donjo-app/controllers/Surat_mohon.php | 2 +-
donjo-app/controllers/Teks_berjalan.php | 2 +-
donjo-app/controllers/Theme.php | 2 +-
donjo-app/controllers/Token.php | 2 +-
donjo-app/controllers/Tools.php | 2 +-
donjo-app/controllers/Vaksin_covid.php | 2 +-
donjo-app/controllers/Web.php | 2 +-
donjo-app/controllers/Web_widget.php | 2 +-
donjo-app/controllers/Wilayah.php | 2 +-
.../auth/AuthenticatedSessionController.php | 2 +-
.../auth/NewPasswordController.php | 2 +-
.../auth/PasswordResetLinkController.php | 2 +-
.../buku_umum/Dokumen_sekretariat.php | 2 +-
donjo-app/controllers/buku_umum/Ekspedisi.php | 2 +-
.../controllers/buku_umum/Lembaran_desa.php | 2 +-
donjo-app/controllers/buku_umum/Pengurus.php | 2 +-
.../controllers/buku_umum/Surat_keluar.php | 2 +-
.../controllers/buku_umum/Surat_masuk.php | 2 +-
donjo-app/controllers/external_api/Sign.php | 2 +-
.../external_api/Surat_kecamatan.php | 2 +-
donjo-app/controllers/external_api/Tte.php | 2 +-
donjo-app/controllers/fmandiri/Bantuan.php | 2 +-
donjo-app/controllers/fmandiri/Beranda.php | 2 +-
donjo-app/controllers/fmandiri/Daftar.php | 2 +-
.../fmandiri/Daftar_verifikasi.php | 2 +-
donjo-app/controllers/fmandiri/Dokumen.php | 2 +-
.../fmandiri/Kehadiran_perangkat.php | 2 +-
donjo-app/controllers/fmandiri/Lapak.php | 2 +-
donjo-app/controllers/fmandiri/Pesan.php | 2 +-
donjo-app/controllers/fmandiri/Produk.php | 2 +-
donjo-app/controllers/fmandiri/Surat.php | 2 +-
donjo-app/controllers/fmandiri/Verifikasi.php | 2 +-
.../auth/AuthenticatedSessionController.php | 2 +-
.../fmandiri/auth/NewPasswordController.php | 2 +-
.../auth/PasswordResetLinkController.php | 2 +-
.../auth/RegisteredUserController.php | 2 +-
.../VerificationNotificationController.php | 2 +-
donjo-app/controllers/fweb/Analisis.php | 521 ++++
donjo-app/controllers/fweb/Arsip.php | 497 ++++
donjo-app/controllers/fweb/Artikel.php | 513 ++++
donjo-app/controllers/fweb/Dpt.php | 2 +-
donjo-app/controllers/fweb/Embed.php | 2 +-
donjo-app/controllers/fweb/Galeri.php | 2 +-
donjo-app/controllers/fweb/Idm.php | 2 +-
.../controllers/fweb/InformasiPublik.php | 577 ++++
donjo-app/controllers/fweb/Inventaris.php | 2 +-
donjo-app/controllers/fweb/Kelompok.php | 2 +-
donjo-app/controllers/fweb/Kesehatan.php | 2 +-
donjo-app/controllers/fweb/Lapak.php | 2 +-
donjo-app/controllers/fweb/Lembaga.php | 2 +-
donjo-app/controllers/fweb/Pembangunan.php | 2 +-
donjo-app/controllers/fweb/Pemerintah.php | 2 +-
donjo-app/controllers/fweb/Pengaduan.php | 2 +-
donjo-app/controllers/fweb/Peraturan.php | 2 +-
donjo-app/controllers/fweb/Peta.php | 2 +-
donjo-app/controllers/fweb/Sdgs.php | 2 +-
donjo-app/controllers/fweb/Sotk.php | 2 +-
donjo-app/controllers/fweb/Statistik.php | 2 +-
donjo-app/controllers/fweb/Suplemen.php | 2 +-
donjo-app/controllers/fweb/Utama.php | 497 ++++
.../controllers/fweb/Verifikasi_surat.php | 2 +-
.../controllers/fweb/WilayahAdministratif.php | 617 ++++
.../controllers/internal_api/Analisis.php | 585 ++++
.../internal_api/Api_informasi_publik.php | 2 +-
.../controllers/internal_api/Artikel.php | 577 ++++
.../internal_api/BantuanPeserta.php | 633 +++++
donjo-app/controllers/internal_api/Dpt.php | 545 ++++
donjo-app/controllers/internal_api/Galeri.php | 569 ++++
donjo-app/controllers/internal_api/Idm.php | 545 ++++
.../internal_api/InformasiPublik.php | 641 +++++
.../controllers/internal_api/Inventaris.php | 601 ++++
.../internal_api/InventarisAsset.php | 641 +++++
.../internal_api/InventarisGedung.php | 649 +++++
.../internal_api/InventarisJalan.php | 641 +++++
.../internal_api/InventarisKontruksi.php | 673 +++++
.../internal_api/InventarisPeralatan.php | 673 +++++
.../internal_api/InventarisTanah.php | 641 +++++
.../controllers/internal_api/Kelompok.php | 585 ++++
donjo-app/controllers/internal_api/Lapak.php | 561 ++++
.../controllers/internal_api/Lembaga.php | 577 ++++
.../controllers/internal_api/LogSurat.php | 585 ++++
.../LogSuratDinas.php} | 52 +-
.../controllers/internal_api/Pembangunan.php | 609 ++++
.../controllers/internal_api/Pemerintah.php | 601 ++++
.../controllers/internal_api/Pengaduan.php | 593 ++++
donjo-app/controllers/internal_api/Peta.php | 553 ++++
.../controllers/internal_api/ProdukHukum.php | 609 ++++
donjo-app/controllers/internal_api/Sdgs.php | 553 ++++
.../controllers/internal_api/Statistik.php | 593 ++++
.../controllers/internal_api/Stunting.php | 585 ++++
.../controllers/internal_api/Suplemen.php | 2 +-
.../controllers/internal_api/Wilayah.php | 2 +-
donjo-app/core/AdminModulController.php | 2 +-
donjo-app/core/Admin_Controller.php | 2 +-
donjo-app/core/Api_Controller.php | 2 +-
donjo-app/core/MY_Controller.php | 2 +-
donjo-app/core/MY_Exceptions.php | 2 +-
donjo-app/core/MY_Model.php | 2 +-
donjo-app/core/MY_Router.php | 4 +-
donjo-app/core/MandiriModulController.php | 2 +-
donjo-app/core/Mandiri_Controller.php | 2 +-
donjo-app/core/ModulTrait.php | 2 +-
donjo-app/core/WebModulController.php | 2 +-
donjo-app/core/Web_Controller.php | 2 +-
donjo-app/helpers/core_helper.php | 2 +-
donjo-app/helpers/database_helper.php | 2 +-
donjo-app/helpers/donjolib_helper.php | 2 +-
donjo-app/helpers/general_helper.php | 32 +-
donjo-app/helpers/illuminate_helper.php | 2 +-
donjo-app/helpers/opensid_helper.php | 2 +-
donjo-app/helpers/password_helper.php | 2 +-
donjo-app/helpers/pict_helper.php | 2 +-
donjo-app/helpers/surat_helper.php | 2 +-
donjo-app/helpers/tglindo_helper.php | 2 +-
donjo-app/helpers/theme_helper.php | 2 +-
donjo-app/helpers/web_helper.php | 2 +-
.../language/indonesia/calendar_lang.php | 4 +-
donjo-app/language/indonesia/date_lang.php | 4 +-
donjo-app/language/indonesia/db_lang.php | 4 +-
donjo-app/language/indonesia/email_lang.php | 4 +-
.../indonesia/form_validation_lang.php | 4 +-
donjo-app/language/indonesia/ftp_lang.php | 4 +-
donjo-app/language/indonesia/imglib_lang.php | 4 +-
.../language/indonesia/migration_lang.php | 4 +-
donjo-app/language/indonesia/number_lang.php | 4 +-
.../language/indonesia/passwords_lang.php | 4 +-
.../language/indonesia/profiler_lang.php | 4 +-
.../language/indonesia/unit_test_lang.php | 4 +-
donjo-app/language/indonesia/upload_lang.php | 4 +-
donjo-app/libraries/Cache/MY_Cache.php | 69 -
donjo-app/libraries/FeedParser.php | 494 ----
donjo-app/libraries/Job_prosess.php | 60 -
donjo-app/libraries/MY_Email.php | 64 -
donjo-app/libraries/MY_Form_validation.php | 87 -
donjo-app/libraries/MY_Upload.php | 283 --
donjo-app/libraries/MyException.php | 52 -
donjo-app/libraries/OTP/Abstract_manager.php | 177 --
.../libraries/OTP/Interface/OTP_interface.php | 121 -
donjo-app/libraries/OTP/OTP_manager.php | 58 -
.../libraries/OTP/Repository/OTP_email.php | 194 --
.../libraries/OTP/Repository/OTP_telegram.php | 193 --
donjo-app/libraries/Paging.php | 120 -
.../Reset/Email/Email_repository.php | 239 --
.../Reset/Interface/Password_interface.php | 146 -
.../libraries/Reset/Password_repository.php | 150 -
donjo-app/libraries/Saas.php | 83 -
.../libraries/Spreadsheet_Excel_Reader.php | 1946 -------------
.../Exceptions/CouldNotSendNotification.php | 87 -
donjo-app/libraries/Telegram/Telegram.php | 229 --
donjo-app/models/Acak_model.php | 2 +-
donjo-app/models/Agenda_model.php | 2 +-
donjo-app/models/Analisis_import_model.php | 2 +-
donjo-app/models/Analisis_indikator_model.php | 2 +-
donjo-app/models/Analisis_master_model.php | 2 +-
donjo-app/models/Analisis_periode_model.php | 2 +-
donjo-app/models/Analisis_respon_model.php | 2 +-
donjo-app/models/Anjungan_model.php | 2 +-
donjo-app/models/Aset_model.php | 2 +-
donjo-app/models/Bip2012_model.php | 2 +-
donjo-app/models/Bip2016_luwutimur_model.php | 2 +-
donjo-app/models/Bip2016_model.php | 2 +-
donjo-app/models/Bip_ektp_model.php | 2 +-
donjo-app/models/Bip_model.php | 2 +-
donjo-app/models/Covid19_model.php | 2 +-
donjo-app/models/Data_persil_model.php | 2 +-
donjo-app/models/Database_model.php | 2 +-
donjo-app/models/Dpt_model.php | 2 +-
donjo-app/models/Ekspedisi_model.php | 2 +-
donjo-app/models/Ekspor_model.php | 2 +-
donjo-app/models/First_artikel_m.php | 2 +-
donjo-app/models/First_gallery_m.php | 2 +-
donjo-app/models/First_menu_m.php | 2 +-
donjo-app/models/First_penduduk_m.php | 2 +-
donjo-app/models/Grup_model.php | 2 +-
donjo-app/models/Impor_model.php | 2 +-
donjo-app/models/Inventaris_asset_model.php | 2 +-
donjo-app/models/Inventaris_gedung_model.php | 2 +-
donjo-app/models/Inventaris_jalan_model.php | 2 +-
.../models/Inventaris_kontruksi_model.php | 2 +-
.../models/Inventaris_peralatan_model.php | 2 +-
donjo-app/models/Inventaris_tanah_model.php | 2 +-
donjo-app/models/Kelompok_model.php | 2 +-
donjo-app/models/Keluar_model.php | 2 +-
donjo-app/models/Keluarga_model.php | 2 +-
donjo-app/models/Keuangan_grafik_dd_model.php | 569 ----
.../models/Keuangan_grafik_manual_model.php | 2 +-
donjo-app/models/Keuangan_grafik_model.php | 2 +-
donjo-app/models/Keuangan_manual_model.php | 2 +-
donjo-app/models/Keuangan_model.php | 2 +-
donjo-app/models/Klasifikasi_model.php | 2 +-
donjo-app/models/Lapak_model.php | 2 +-
donjo-app/models/Lapor_model.php | 2 +-
donjo-app/models/Laporan_bulanan_model.php | 2 +-
donjo-app/models/Laporan_penduduk_model.php | 2 +-
.../models/Laporan_sinkronisasi_model.php | 2 +-
donjo-app/models/Log_ekspor_model.php | 2 +-
donjo-app/models/Mandiri_model.php | 2 +-
donjo-app/models/Modul_model.php | 2 +-
donjo-app/models/Notif_model.php | 2 +-
donjo-app/models/Pamong_model.php | 2 +-
.../models/Pembangunan_dokumentasi_model.php | 2 +-
donjo-app/models/Pembangunan_model.php | 2 +-
donjo-app/models/Penduduk_log_model.php | 2 +-
donjo-app/models/Penduduk_model.php | 2 +-
donjo-app/models/Pengaduan_model.php | 2 +-
donjo-app/models/Penomoran_surat_model.php | 2 +-
donjo-app/models/Periksa_model.php | 2 +-
donjo-app/models/Permohonan_surat_model.php | 2 +-
donjo-app/models/Plan_area_model.php | 2 +-
donjo-app/models/Plan_garis_model.php | 2 +-
donjo-app/models/Plan_lokasi_model.php | 2 +-
donjo-app/models/Plan_point_model.php | 2 +-
donjo-app/models/Program_bantuan_model.php | 2 +-
donjo-app/models/Referensi_model.php | 2 +-
donjo-app/models/Rtm_model.php | 2 +-
donjo-app/models/Setting_model.php | 2 +-
donjo-app/models/Shortcode_model.php | 497 ----
donjo-app/models/Siak_model.php | 2 +-
donjo-app/models/Sinkronisasi_model.php | 2 +-
donjo-app/models/Stat_shortener_model.php | 2 +-
donjo-app/models/Statistik_penduduk_model.php | 2 +-
.../models/Statistik_pengunjung_model.php | 2 +-
donjo-app/models/Suplemen_model.php | 2 +-
donjo-app/models/Surat_keluar_model.php | 2 +-
donjo-app/models/Surat_master_model.php | 2 +-
donjo-app/models/Surat_model.php | 2 +-
donjo-app/models/Teks_berjalan_model.php | 2 +-
donjo-app/models/Theme_model.php | 2 +-
donjo-app/models/Track_model.php | 2 +-
donjo-app/models/Url_shortener_model.php | 2 +-
donjo-app/models/Urut_model.php | 2 +-
donjo-app/models/User_model.php | 2 +-
donjo-app/models/Vaksin_covid_model.php | 2 +-
donjo-app/models/Web_dokumen_model.php | 2 +-
donjo-app/models/Web_gallery_model.php | 2 +-
donjo-app/models/Web_komentar_model.php | 2 +-
donjo-app/models/Web_menu_model.php | 2 +-
donjo-app/models/Web_sosmed_model.php | 2 +-
donjo-app/models/Web_widget_model.php | 2 +-
donjo-app/models/Wilayah_model.php | 2 +-
donjo-app/models/migrations/Data_awal.php | 8 +-
.../models/migrations/Migrasi_2024010171.php | 32 +-
.../models/migrations/Migrasi_2024020171.php | 21 +-
.../models/migrations/Migrasi_2024030171.php | 7 +-
.../models/migrations/Migrasi_2024040171.php | 48 +-
.../models/migrations/Migrasi_2024050171.php | 7 +-
.../models/migrations/Migrasi_2024060171.php | 22 +-
.../models/migrations/Migrasi_2024070171.php | 7 +-
.../models/migrations/Migrasi_2024080171.php | 7 +-
.../models/migrations/Migrasi_2024090171.php | 20 +-
.../models/migrations/Migrasi_2024100171.php | 76 +-
.../models/migrations/Migrasi_2024110171.php | 23 +-
.../models/migrations/Migrasi_2024120171.php | 18 +-
.../models/migrations/Migrasi_2024121851.php | 55 -
.../models/migrations/Migrasi_2025010171.php | 549 ++++
donjo-app/models/migrations/Migrasi_beta.php | 4 +-
donjo-app/models/migrations/Migrasi_rev.php | 4 +-
.../migrations/Migrasi_surat_bawaan.php | 6 +-
donjo-app/models/migrations/Migrasi_umum.php | 4 +-
.../2023_12_22_015242_create_agenda_table.php | 4 +-
...22_015242_create_alias_kodeisian_table.php | 4 +-
...015242_create_analisis_indikator_table.php | 4 +-
...eate_analisis_kategori_indikator_table.php | 4 +-
...5242_create_analisis_klasifikasi_table.php | 4 +-
...22_015242_create_analisis_master_table.php | 4 +-
...015242_create_analisis_parameter_table.php | 4 +-
...5242_create_analisis_partisipasi_table.php | 4 +-
...2_015242_create_analisis_periode_table.php | 4 +-
...015242_create_analisis_ref_state_table.php | 4 +-
...15242_create_analisis_ref_subjek_table.php | 4 +-
...242_create_analisis_respon_bukti_table.php | 4 +-
...242_create_analisis_respon_hasil_table.php | 4 +-
...22_015242_create_analisis_respon_table.php | 4 +-
...2_create_analisis_tipe_indikator_table.php | 4 +-
...15242_create_anggota_grup_kontak_table.php | 4 +-
...2_22_015242_create_anjungan_menu_table.php | 4 +-
...023_12_22_015242_create_anjungan_table.php | 4 +-
.../2023_12_22_015242_create_area_table.php | 4 +-
...2023_12_22_015242_create_artikel_table.php | 4 +-
..._22_015242_create_buku_keperluan_table.php | 4 +-
...2_22_015242_create_buku_kepuasan_table.php | 4 +-
...22_015242_create_buku_pertanyaan_table.php | 4 +-
...23_12_22_015242_create_buku_tamu_table.php | 4 +-
...12_22_015242_create_bulanan_anak_table.php | 4 +-
...2_22_015242_create_captcha_codes_table.php | 4 +-
..._22_015242_create_cdesa_penduduk_table.php | 4 +-
.../2023_12_22_015242_create_cdesa_table.php | 4 +-
.../2023_12_22_015242_create_config_table.php | 4 +-
..._22_015242_create_covid19_pantau_table.php | 4 +-
...22_015242_create_covid19_pemudik_table.php | 4 +-
..._22_015242_create_covid19_vaksin_table.php | 4 +-
...242_create_disposisi_surat_masuk_table.php | 4 +-
...2023_12_22_015242_create_dokumen_table.php | 4 +-
...12_22_015242_create_dtks_anggota_table.php | 4 +-
...2_22_015242_create_dtks_lampiran_table.php | 4 +-
...2_create_dtks_pengaturan_program_table.php | 4 +-
..._015242_create_dtks_ref_lampiran_table.php | 4 +-
.../2023_12_22_015242_create_dtks_table.php | 4 +-
..._015242_create_fcm_token_mandiri_table.php | 4 +-
...23_12_22_015242_create_fcm_token_table.php | 4 +-
..._22_015242_create_gambar_gallery_table.php | 4 +-
.../2023_12_22_015242_create_garis_table.php | 4 +-
...3_12_22_015242_create_gis_simbol_table.php | 4 +-
...3_12_22_015242_create_grup_akses_table.php | 4 +-
...12_22_015242_create_hubung_warga_table.php | 4 +-
...23_12_22_015242_create_ibu_hamil_table.php | 4 +-
.../2023_12_22_015242_create_inbox_table.php | 4 +-
...2_015242_create_inventaris_asset_table.php | 4 +-
..._015242_create_inventaris_gedung_table.php | 4 +-
...2_015242_create_inventaris_jalan_table.php | 4 +-
...5242_create_inventaris_kontruksi_table.php | 4 +-
...5242_create_inventaris_peralatan_table.php | 4 +-
...2_015242_create_inventaris_tanah_table.php | 4 +-
...te_kader_pemberdayaan_masyarakat_table.php | 4 +-
...023_12_22_015242_create_kategori_table.php | 4 +-
...2_create_kehadiran_alasan_keluar_table.php | 4 +-
...5242_create_kehadiran_hari_libur_table.php | 4 +-
...15242_create_kehadiran_jam_kerja_table.php | 4 +-
...15242_create_kehadiran_pengaduan_table.php | 4 +-
..._create_kehadiran_perangkat_desa_table.php | 4 +-
...2_015242_create_kelompok_anggota_table.php | 4 +-
...22_015242_create_kelompok_master_table.php | 4 +-
...023_12_22_015242_create_kelompok_table.php | 4 +-
...reate_keuangan_manual_ref_bidang_table.php | 4 +-
...ate_keuangan_manual_ref_kegiatan_table.php | 4 +-
..._create_keuangan_manual_ref_rek1_table.php | 4 +-
..._create_keuangan_manual_ref_rek2_table.php | 4 +-
..._create_keuangan_manual_ref_rek3_table.php | 4 +-
...242_create_keuangan_manual_rinci_table.php | 4 +-
...create_keuangan_manual_rinci_tpl_table.php | 4 +-
...22_015242_create_keuangan_master_table.php | 4 +-
...42_create_keuangan_ref_bank_desa_table.php | 4 +-
...ate_keuangan_ref_bel_operasional_table.php | 4 +-
...15242_create_keuangan_ref_bidang_table.php | 4 +-
...015242_create_keuangan_ref_bunga_table.php | 4 +-
..._015242_create_keuangan_ref_desa_table.php | 4 +-
...42_create_keuangan_ref_kecamatan_table.php | 4 +-
...242_create_keuangan_ref_kegiatan_table.php | 4 +-
...242_create_keuangan_ref_korolari_table.php | 4 +-
...create_keuangan_ref_neraca_close_table.php | 4 +-
...42_create_keuangan_ref_perangkat_table.php | 4 +-
...242_create_keuangan_ref_potongan_table.php | 4 +-
..._015242_create_keuangan_ref_rek1_table.php | 4 +-
..._015242_create_keuangan_ref_rek2_table.php | 4 +-
..._015242_create_keuangan_ref_rek3_table.php | 4 +-
..._015242_create_keuangan_ref_rek4_table.php | 4 +-
...2_015242_create_keuangan_ref_sbu_table.php | 4 +-
...15242_create_keuangan_ref_sumber_table.php | 4 +-
..._create_keuangan_ta_anggaran_log_table.php | 4 +-
...reate_keuangan_ta_anggaran_rinci_table.php | 4 +-
...5242_create_keuangan_ta_anggaran_table.php | 4 +-
...015242_create_keuangan_ta_bidang_table.php | 4 +-
...2_015242_create_keuangan_ta_desa_table.php | 4 +-
...te_keuangan_ta_jurnal_umum_rinci_table.php | 4 +-
...2_create_keuangan_ta_jurnal_umum_table.php | 4 +-
...5242_create_keuangan_ta_kegiatan_table.php | 4 +-
...015242_create_keuangan_ta_mutasi_table.php | 4 +-
...2_create_keuangan_ta_pajak_rinci_table.php | 4 +-
..._015242_create_keuangan_ta_pajak_table.php | 4 +-
..._015242_create_keuangan_ta_pemda_table.php | 4 +-
...242_create_keuangan_ta_pencairan_table.php | 4 +-
...242_create_keuangan_ta_perangkat_table.php | 4 +-
...242_create_keuangan_ta_rab_rinci_table.php | 4 +-
...15242_create_keuangan_ta_rab_sub_table.php | 4 +-
...22_015242_create_keuangan_ta_rab_table.php | 4 +-
...2_create_keuangan_ta_rpjm_bidang_table.php | 4 +-
...create_keuangan_ta_rpjm_kegiatan_table.php | 4 +-
...242_create_keuangan_ta_rpjm_misi_table.php | 4 +-
..._keuangan_ta_rpjm_pagu_indikatif_table.php | 4 +-
...te_keuangan_ta_rpjm_pagu_tahunan_table.php | 4 +-
..._create_keuangan_ta_rpjm_sasaran_table.php | 4 +-
...2_create_keuangan_ta_rpjm_tujuan_table.php | 4 +-
...242_create_keuangan_ta_rpjm_visi_table.php | 4 +-
...42_create_keuangan_ta_saldo_awal_table.php | 4 +-
...242_create_keuangan_ta_spj_bukti_table.php | 4 +-
...242_create_keuangan_ta_spj_rinci_table.php | 4 +-
...5242_create_keuangan_ta_spj_sisa_table.php | 4 +-
...22_015242_create_keuangan_ta_spj_table.php | 4 +-
...015242_create_keuangan_ta_spjpot_table.php | 4 +-
...242_create_keuangan_ta_spp_rinci_table.php | 4 +-
...22_015242_create_keuangan_ta_spp_table.php | 4 +-
...5242_create_keuangan_ta_sppbukti_table.php | 4 +-
...015242_create_keuangan_ta_spppot_table.php | 4 +-
...242_create_keuangan_ta_sts_rinci_table.php | 4 +-
...22_015242_create_keuangan_ta_sts_table.php | 4 +-
...242_create_keuangan_ta_tbp_rinci_table.php | 4 +-
...22_015242_create_keuangan_ta_tbp_table.php | 4 +-
...reate_keuangan_ta_triwulan_rinci_table.php | 4 +-
...5242_create_keuangan_ta_triwulan_table.php | 4 +-
.../2023_12_22_015242_create_kia_table.php | 4 +-
..._015242_create_klasifikasi_surat_table.php | 4 +-
...023_12_22_015242_create_komentar_table.php | 4 +-
..._12_22_015242_create_kontak_grup_table.php | 4 +-
.../2023_12_22_015242_create_kontak_table.php | 4 +-
..._22_015242_create_lampiran_surat_table.php | 4 +-
...5242_create_laporan_sinkronisasi_table.php | 4 +-
.../2023_12_22_015242_create_line_table.php | 4 +-
...3_12_22_015242_create_log_backup_table.php | 4 +-
...3_12_22_015242_create_log_ekspor_table.php | 4 +-
...015242_create_log_hapus_penduduk_table.php | 4 +-
...12_22_015242_create_log_keluarga_table.php | 4 +-
...23_12_22_015242_create_log_login_table.php | 4 +-
...5242_create_log_notifikasi_admin_table.php | 30 +-
...42_create_log_notifikasi_mandiri_table.php | 30 +-
...12_22_015242_create_log_penduduk_table.php | 4 +-
...42_create_log_perubahan_penduduk_table.php | 4 +-
...2_015242_create_log_restore_desa_table.php | 4 +-
...2_015242_create_log_sinkronisasi_table.php | 4 +-
...23_12_22_015242_create_log_surat_table.php | 4 +-
...23_12_22_015242_create_log_tolak_table.php | 4 +-
...2023_12_22_015242_create_log_tte_table.php | 4 +-
..._22_015242_create_login_attempts_table.php | 4 +-
.../2023_12_22_015242_create_lokasi_table.php | 4 +-
...12_22_015242_create_media_sosial_table.php | 4 +-
.../2023_12_22_015242_create_menu_table.php | 4 +-
...2023_12_22_015242_create_migrasi_table.php | 4 +-
...12_22_015242_create_mutasi_cdesa_table.php | 4 +-
...2_create_mutasi_inventaris_asset_table.php | 4 +-
..._create_mutasi_inventaris_gedung_table.php | 4 +-
...2_create_mutasi_inventaris_jalan_table.php | 4 +-
...eate_mutasi_inventaris_peralatan_table.php | 4 +-
...2_create_mutasi_inventaris_tanah_table.php | 4 +-
...3_12_22_015242_create_notifikasi_table.php | 4 +-
.../2023_12_22_015242_create_outbox_table.php | 4 +-
...22_015242_create_password_resets_table.php | 4 +-
...2023_12_22_015242_create_pelapak_table.php | 4 +-
...eate_pembangunan_ref_dokumentasi_table.php | 4 +-
..._12_22_015242_create_pembangunan_table.php | 4 +-
...023_12_22_015242_create_pendapat_table.php | 4 +-
...23_12_22_015242_create_pengaduan_table.php | 4 +-
...2_015242_create_permohonan_surat_table.php | 4 +-
.../2023_12_22_015242_create_persil_table.php | 4 +-
...12_22_015242_create_pesan_detail_table.php | 4 +-
.../2023_12_22_015242_create_pesan_table.php | 4 +-
.../2023_12_22_015242_create_point_table.php | 4 +-
...2023_12_22_015242_create_polygon_table.php | 4 +-
...023_12_22_015242_create_posyandu_table.php | 4 +-
...22_015242_create_produk_kategori_table.php | 4 +-
.../2023_12_22_015242_create_produk_table.php | 4 +-
...22_015242_create_program_peserta_table.php | 4 +-
...2023_12_22_015242_create_program_table.php | 4 +-
...015242_create_ref_asal_tanah_kas_table.php | 4 +-
..._12_22_015242_create_ref_dokumen_table.php | 4 +-
..._12_22_015242_create_ref_jabatan_table.php | 4 +-
...15242_create_ref_penduduk_bahasa_table.php | 4 +-
...15242_create_ref_penduduk_bidang_table.php | 4 +-
...015242_create_ref_penduduk_hamil_table.php | 4 +-
...15242_create_ref_penduduk_kursus_table.php | 4 +-
..._015242_create_ref_penduduk_suku_table.php | 4 +-
...2_22_015242_create_ref_peristiwa_table.php | 4 +-
...2_015242_create_ref_persil_kelas_table.php | 4 +-
..._015242_create_ref_persil_mutasi_table.php | 4 +-
..._create_ref_peruntukan_tanah_kas_table.php | 4 +-
...3_12_22_015242_create_ref_pindah_table.php | 4 +-
...2_015242_create_ref_sinkronisasi_table.php | 4 +-
...2_015242_create_ref_status_covid_table.php | 4 +-
...2_015242_create_ref_syarat_surat_table.php | 4 +-
...12_22_015242_create_sasaran_paud_table.php | 4 +-
...23_12_22_015242_create_sentitems_table.php | 4 +-
...2_015242_create_setting_aplikasi_table.php | 4 +-
...2_22_015242_create_setting_modul_table.php | 4 +-
...3_12_22_015242_create_statistics_table.php | 4 +-
...023_12_22_015242_create_suplemen_table.php | 4 +-
...2_015242_create_suplemen_terdata_table.php | 4 +-
...12_22_015242_create_surat_keluar_table.php | 4 +-
..._12_22_015242_create_surat_masuk_table.php | 4 +-
..._12_22_015242_create_sys_traffic_table.php | 4 +-
...3_12_22_015242_create_tanah_desa_table.php | 4 +-
..._22_015242_create_tanah_kas_desa_table.php | 4 +-
...2_22_015242_create_teks_berjalan_table.php | 4 +-
...23_12_22_015242_create_tweb_aset_table.php | 4 +-
...3_12_22_015242_create_tweb_cacat_table.php | 4 +-
...12_22_015242_create_tweb_cara_kb_table.php | 4 +-
...2_015242_create_tweb_desa_pamong_table.php | 4 +-
...15242_create_tweb_golongan_darah_table.php | 4 +-
...2_create_tweb_keluarga_sejahtera_table.php | 4 +-
...2_22_015242_create_tweb_keluarga_table.php | 4 +-
...15242_create_tweb_penduduk_agama_table.php | 4 +-
...42_create_tweb_penduduk_asuransi_table.php | 4 +-
...42_create_tweb_penduduk_hubungan_table.php | 4 +-
...15242_create_tweb_penduduk_kawin_table.php | 4 +-
...242_create_tweb_penduduk_mandiri_table.php | 4 +-
..._015242_create_tweb_penduduk_map_table.php | 4 +-
...2_create_tweb_penduduk_pekerjaan_table.php | 4 +-
...eate_tweb_penduduk_pendidikan_kk_table.php | 4 +-
..._create_tweb_penduduk_pendidikan_table.php | 4 +-
..._015242_create_tweb_penduduk_sex_table.php | 4 +-
...5242_create_tweb_penduduk_status_table.php | 4 +-
...2_22_015242_create_tweb_penduduk_table.php | 4 +-
...015242_create_tweb_penduduk_umur_table.php | 4 +-
...create_tweb_penduduk_warganegara_table.php | 4 +-
..._015242_create_tweb_rtm_hubungan_table.php | 4 +-
...023_12_22_015242_create_tweb_rtm_table.php | 4 +-
...015242_create_tweb_sakit_menahun_table.php | 4 +-
..._015242_create_tweb_status_dasar_table.php | 4 +-
...22_015242_create_tweb_status_ktp_table.php | 4 +-
..._015242_create_tweb_surat_format_table.php | 4 +-
...5242_create_tweb_wil_clusterdesa_table.php | 4 +-
.../2023_12_22_015242_create_urls_table.php | 4 +-
...23_12_22_015242_create_user_grup_table.php | 4 +-
.../2023_12_22_015242_create_user_table.php | 4 +-
.../2023_12_22_015242_create_widget_table.php | 4 +-
...12_22_015243_create_dokumen_hidup_view.php | 4 +-
...2_22_015243_create_keluarga_aktif_view.php | 4 +-
...2_015243_create_master_inventaris_view.php | 4 +-
...2_22_015243_create_penduduk_hidup_view.php | 4 +-
...43_create_rekap_mutasi_inventaris_view.php | 4 +-
...15245_add_foreign_keys_to_agenda_table.php | 4 +-
..._foreign_keys_to_alias_kodeisian_table.php | 4 +-
...reign_keys_to_analisis_indikator_table.php | 4 +-
...s_to_analisis_kategori_indikator_table.php | 4 +-
...ign_keys_to_analisis_klasifikasi_table.php | 4 +-
..._foreign_keys_to_analisis_master_table.php | 4 +-
...reign_keys_to_analisis_parameter_table.php | 4 +-
...foreign_keys_to_analisis_periode_table.php | 4 +-
...gn_keys_to_analisis_respon_bukti_table.php | 4 +-
...gn_keys_to_analisis_respon_hasil_table.php | 4 +-
..._foreign_keys_to_analisis_respon_table.php | 4 +-
...eign_keys_to_anggota_grup_kontak_table.php | 4 +-
...dd_foreign_keys_to_anjungan_menu_table.php | 4 +-
...245_add_foreign_keys_to_anjungan_table.php | 4 +-
..._015245_add_foreign_keys_to_area_table.php | 4 +-
...5245_add_foreign_keys_to_artikel_table.php | 4 +-
...d_foreign_keys_to_buku_keperluan_table.php | 4 +-
...dd_foreign_keys_to_buku_kepuasan_table.php | 4 +-
..._foreign_keys_to_buku_pertanyaan_table.php | 4 +-
...45_add_foreign_keys_to_buku_tamu_table.php | 4 +-
...add_foreign_keys_to_bulanan_anak_table.php | 4 +-
...d_foreign_keys_to_cdesa_penduduk_table.php | 4 +-
...015245_add_foreign_keys_to_cdesa_table.php | 4 +-
...d_foreign_keys_to_covid19_pantau_table.php | 4 +-
..._foreign_keys_to_covid19_pemudik_table.php | 4 +-
...d_foreign_keys_to_covid19_vaksin_table.php | 4 +-
...gn_keys_to_disposisi_surat_masuk_table.php | 4 +-
...5245_add_foreign_keys_to_dokumen_table.php | 4 +-
...add_foreign_keys_to_dtks_anggota_table.php | 4 +-
...dd_foreign_keys_to_dtks_lampiran_table.php | 4 +-
..._keys_to_dtks_pengaturan_program_table.php | 4 +-
...oreign_keys_to_dtks_ref_lampiran_table.php | 4 +-
..._015245_add_foreign_keys_to_dtks_table.php | 4 +-
...d_foreign_keys_to_gambar_gallery_table.php | 4 +-
...015245_add_foreign_keys_to_garis_table.php | 4 +-
...5_add_foreign_keys_to_gis_simbol_table.php | 4 +-
...5_add_foreign_keys_to_grup_akses_table.php | 4 +-
...add_foreign_keys_to_hubung_warga_table.php | 4 +-
...45_add_foreign_keys_to_ibu_hamil_table.php | 4 +-
...015245_add_foreign_keys_to_inbox_table.php | 4 +-
...foreign_keys_to_inventaris_asset_table.php | 4 +-
...oreign_keys_to_inventaris_gedung_table.php | 4 +-
...foreign_keys_to_inventaris_jalan_table.php | 4 +-
...ign_keys_to_inventaris_kontruksi_table.php | 4 +-
...ign_keys_to_inventaris_peralatan_table.php | 4 +-
...foreign_keys_to_inventaris_tanah_table.php | 4 +-
...to_kader_pemberdayaan_masyarakat_table.php | 4 +-
...245_add_foreign_keys_to_kategori_table.php | 4 +-
..._keys_to_kehadiran_alasan_keluar_table.php | 4 +-
...ign_keys_to_kehadiran_hari_libur_table.php | 4 +-
...eign_keys_to_kehadiran_jam_kerja_table.php | 4 +-
...eign_keys_to_kehadiran_pengaduan_table.php | 4 +-
...keys_to_kehadiran_perangkat_desa_table.php | 4 +-
...foreign_keys_to_kelompok_anggota_table.php | 4 +-
..._foreign_keys_to_kelompok_master_table.php | 4 +-
...245_add_foreign_keys_to_kelompok_table.php | 4 +-
...gn_keys_to_keuangan_manual_rinci_table.php | 4 +-
..._foreign_keys_to_keuangan_master_table.php | 4 +-
...n_keys_to_keuangan_ref_bank_desa_table.php | 4 +-
..._to_keuangan_ref_bel_operasional_table.php | 4 +-
...eign_keys_to_keuangan_ref_bidang_table.php | 4 +-
...reign_keys_to_keuangan_ref_bunga_table.php | 4 +-
...oreign_keys_to_keuangan_ref_desa_table.php | 4 +-
...n_keys_to_keuangan_ref_kecamatan_table.php | 4 +-
...gn_keys_to_keuangan_ref_kegiatan_table.php | 4 +-
...gn_keys_to_keuangan_ref_korolari_table.php | 4 +-
...eys_to_keuangan_ref_neraca_close_table.php | 4 +-
...n_keys_to_keuangan_ref_perangkat_table.php | 4 +-
...gn_keys_to_keuangan_ref_potongan_table.php | 4 +-
...oreign_keys_to_keuangan_ref_rek1_table.php | 4 +-
...oreign_keys_to_keuangan_ref_rek2_table.php | 4 +-
...oreign_keys_to_keuangan_ref_rek3_table.php | 4 +-
...oreign_keys_to_keuangan_ref_rek4_table.php | 4 +-
...foreign_keys_to_keuangan_ref_sbu_table.php | 4 +-
...eign_keys_to_keuangan_ref_sumber_table.php | 4 +-
...keys_to_keuangan_ta_anggaran_log_table.php | 4 +-
...ys_to_keuangan_ta_anggaran_rinci_table.php | 4 +-
...ign_keys_to_keuangan_ta_anggaran_table.php | 4 +-
...reign_keys_to_keuangan_ta_bidang_table.php | 4 +-
...foreign_keys_to_keuangan_ta_desa_table.php | 4 +-
...to_keuangan_ta_jurnal_umum_rinci_table.php | 4 +-
..._keys_to_keuangan_ta_jurnal_umum_table.php | 4 +-
...ign_keys_to_keuangan_ta_kegiatan_table.php | 4 +-
...reign_keys_to_keuangan_ta_mutasi_table.php | 4 +-
..._keys_to_keuangan_ta_pajak_rinci_table.php | 4 +-
...oreign_keys_to_keuangan_ta_pajak_table.php | 4 +-
...oreign_keys_to_keuangan_ta_pemda_table.php | 4 +-
...gn_keys_to_keuangan_ta_pencairan_table.php | 4 +-
...gn_keys_to_keuangan_ta_perangkat_table.php | 4 +-
...gn_keys_to_keuangan_ta_rab_rinci_table.php | 4 +-
...eign_keys_to_keuangan_ta_rab_sub_table.php | 4 +-
..._foreign_keys_to_keuangan_ta_rab_table.php | 4 +-
..._keys_to_keuangan_ta_rpjm_bidang_table.php | 4 +-
...eys_to_keuangan_ta_rpjm_kegiatan_table.php | 4 +-
...gn_keys_to_keuangan_ta_rpjm_misi_table.php | 4 +-
..._keuangan_ta_rpjm_pagu_indikatif_table.php | 4 +-
...to_keuangan_ta_rpjm_pagu_tahunan_table.php | 4 +-
...keys_to_keuangan_ta_rpjm_sasaran_table.php | 4 +-
..._keys_to_keuangan_ta_rpjm_tujuan_table.php | 4 +-
...gn_keys_to_keuangan_ta_rpjm_visi_table.php | 4 +-
...n_keys_to_keuangan_ta_saldo_awal_table.php | 4 +-
...gn_keys_to_keuangan_ta_spj_bukti_table.php | 4 +-
...gn_keys_to_keuangan_ta_spj_rinci_table.php | 4 +-
...ign_keys_to_keuangan_ta_spj_sisa_table.php | 4 +-
..._foreign_keys_to_keuangan_ta_spj_table.php | 4 +-
...reign_keys_to_keuangan_ta_spjpot_table.php | 4 +-
...gn_keys_to_keuangan_ta_spp_rinci_table.php | 4 +-
..._foreign_keys_to_keuangan_ta_spp_table.php | 4 +-
...ign_keys_to_keuangan_ta_sppbukti_table.php | 4 +-
...reign_keys_to_keuangan_ta_spppot_table.php | 4 +-
...gn_keys_to_keuangan_ta_sts_rinci_table.php | 4 +-
..._foreign_keys_to_keuangan_ta_sts_table.php | 4 +-
...gn_keys_to_keuangan_ta_tbp_rinci_table.php | 4 +-
..._foreign_keys_to_keuangan_ta_tbp_table.php | 4 +-
...ys_to_keuangan_ta_triwulan_rinci_table.php | 4 +-
...ign_keys_to_keuangan_ta_triwulan_table.php | 4 +-
...2_015245_add_foreign_keys_to_kia_table.php | 4 +-
...oreign_keys_to_klasifikasi_surat_table.php | 4 +-
...245_add_foreign_keys_to_komentar_table.php | 4 +-
..._add_foreign_keys_to_kontak_grup_table.php | 4 +-
...15245_add_foreign_keys_to_kontak_table.php | 4 +-
...d_foreign_keys_to_lampiran_surat_table.php | 4 +-
...ign_keys_to_laporan_sinkronisasi_table.php | 4 +-
..._015245_add_foreign_keys_to_line_table.php | 4 +-
...5_add_foreign_keys_to_log_backup_table.php | 4 +-
...reign_keys_to_log_hapus_penduduk_table.php | 4 +-
...add_foreign_keys_to_log_keluarga_table.php | 4 +-
...45_add_foreign_keys_to_log_login_table.php | 4 +-
...add_foreign_keys_to_log_penduduk_table.php | 4 +-
...n_keys_to_log_perubahan_penduduk_table.php | 4 +-
...foreign_keys_to_log_restore_desa_table.php | 4 +-
...foreign_keys_to_log_sinkronisasi_table.php | 4 +-
...45_add_foreign_keys_to_log_surat_table.php | 4 +-
...45_add_foreign_keys_to_log_tolak_table.php | 4 +-
...5245_add_foreign_keys_to_log_tte_table.php | 4 +-
...d_foreign_keys_to_login_attempts_table.php | 4 +-
...15245_add_foreign_keys_to_lokasi_table.php | 4 +-
...add_foreign_keys_to_media_sosial_table.php | 4 +-
..._015245_add_foreign_keys_to_menu_table.php | 4 +-
...add_foreign_keys_to_mutasi_cdesa_table.php | 4 +-
..._keys_to_mutasi_inventaris_asset_table.php | 4 +-
...keys_to_mutasi_inventaris_gedung_table.php | 4 +-
..._keys_to_mutasi_inventaris_jalan_table.php | 4 +-
...s_to_mutasi_inventaris_peralatan_table.php | 4 +-
..._keys_to_mutasi_inventaris_tanah_table.php | 4 +-
...5_add_foreign_keys_to_notifikasi_table.php | 4 +-
...15245_add_foreign_keys_to_outbox_table.php | 4 +-
...5245_add_foreign_keys_to_pelapak_table.php | 4 +-
...s_to_pembangunan_ref_dokumentasi_table.php | 4 +-
..._add_foreign_keys_to_pembangunan_table.php | 4 +-
...245_add_foreign_keys_to_pendapat_table.php | 4 +-
...45_add_foreign_keys_to_pengaduan_table.php | 4 +-
...foreign_keys_to_permohonan_surat_table.php | 4 +-
...15245_add_foreign_keys_to_persil_table.php | 4 +-
...add_foreign_keys_to_pesan_detail_table.php | 4 +-
...015245_add_foreign_keys_to_pesan_table.php | 4 +-
...015245_add_foreign_keys_to_point_table.php | 4 +-
...5245_add_foreign_keys_to_polygon_table.php | 4 +-
...245_add_foreign_keys_to_posyandu_table.php | 4 +-
..._foreign_keys_to_produk_kategori_table.php | 4 +-
...15245_add_foreign_keys_to_produk_table.php | 4 +-
..._foreign_keys_to_program_peserta_table.php | 4 +-
...5245_add_foreign_keys_to_program_table.php | 4 +-
..._add_foreign_keys_to_ref_jabatan_table.php | 4 +-
...foreign_keys_to_ref_syarat_surat_table.php | 4 +-
...add_foreign_keys_to_sasaran_paud_table.php | 4 +-
...45_add_foreign_keys_to_sentitems_table.php | 4 +-
...foreign_keys_to_setting_aplikasi_table.php | 4 +-
...dd_foreign_keys_to_setting_modul_table.php | 4 +-
...5_add_foreign_keys_to_statistics_table.php | 4 +-
...245_add_foreign_keys_to_suplemen_table.php | 4 +-
...foreign_keys_to_suplemen_terdata_table.php | 4 +-
...add_foreign_keys_to_surat_keluar_table.php | 4 +-
..._add_foreign_keys_to_surat_masuk_table.php | 4 +-
..._add_foreign_keys_to_sys_traffic_table.php | 4 +-
...5_add_foreign_keys_to_tanah_desa_table.php | 4 +-
...d_foreign_keys_to_tanah_kas_desa_table.php | 4 +-
...dd_foreign_keys_to_teks_berjalan_table.php | 4 +-
...foreign_keys_to_tweb_desa_pamong_table.php | 4 +-
...dd_foreign_keys_to_tweb_keluarga_table.php | 4 +-
...gn_keys_to_tweb_penduduk_mandiri_table.php | 4 +-
...dd_foreign_keys_to_tweb_penduduk_table.php | 4 +-
...reign_keys_to_tweb_penduduk_umur_table.php | 4 +-
...245_add_foreign_keys_to_tweb_rtm_table.php | 4 +-
...oreign_keys_to_tweb_surat_format_table.php | 4 +-
...ign_keys_to_tweb_wil_clusterdesa_table.php | 4 +-
..._015245_add_foreign_keys_to_urls_table.php | 4 +-
...45_add_foreign_keys_to_user_grup_table.php | 4 +-
..._015245_add_foreign_keys_to_user_table.php | 4 +-
...15245_add_foreign_keys_to_widget_table.php | 4 +-
donjo-app/models/seeders/Data_awal_seeder.php | 2 +-
donjo-app/models/seeders/Seeder.php | 2 +-
.../models/seeders/dataAwal/GisSimbol.php | 2 +-
.../models/seeders/dataAwal/GrupAkses.php | 2 +-
.../dataAwal/KeuanganManualRefKegiatan.php | 2 +-
.../models/seeders/dataAwal/PendudukSuku.php | 2 +-
.../models/seeders/dataAwal/RentangUmur.php | 2 +-
.../seeders/dataAwal/SettingAplikasi.php | 2 +-
.../models/seeders/dataAwal/SettingModul.php | 2 +-
.../models/seeders/dataAwal/Twebaset.php | 2 +-
donjo-app/third_party/MX/Modules.php | 2 +-
donjo-app/third_party/MX/Router.php | 4 +-
donjo-app/third_party/faker/config/faker.php | 4 +-
.../faker/controllers/Faker_Controller.php | 4 +-
.../faker/helpers/config_helper.php | 39 +-
.../faker/helpers/faker_helper.php | 4 +-
.../controllers/Pelanggan_Controller.php | 10 +-
.../third_party/pelanggan/libraries/Cek.php | 2 +-
.../Pendaftaran_kerjasama_controller.php | 4 +-
.../security/config/security/headers.php | 4 +-
.../libraries/security/Security_header.php | 4 +-
.../security/Security_trusted_host.php | 4 +-
.../autentikasi/notifikasi_lupa_sandi.php | 101 -
.../notifikasi_verifikasi_email.php | 100 -
donjo-app/views/bagan/bagan_sisip.php | 19 -
donjo-app/views/bagan/chart_bagan.php | 136 -
donjo-app/views/covid19/unduh.php | 4 +-
donjo-app/views/errors/cli/error_404.php | 4 +-
donjo-app/views/errors/cli/error_db.php | 4 +-
donjo-app/views/errors/cli/error_general.php | 4 +-
donjo-app/views/feed.php | 53 -
donjo-app/views/fmandiri/buat_surat.php | 149 -
donjo-app/views/fmandiri/dokumen/form.php | 113 -
donjo-app/views/fmandiri/dokumen/index.php | 119 -
donjo-app/views/fmandiri/email/kirim-pin.php | 80 -
.../fmandiri/email/verifikasi-berhasil.php | 74 -
donjo-app/views/fmandiri/email/verifikasi.php | 77 -
donjo-app/views/fmandiri/lupa_pin.php | 173 --
donjo-app/views/fmandiri/masuk.php | 343 ---
donjo-app/views/fmandiri/notif.php | 56 -
donjo-app/views/fmandiri/notifikasi.php | 13 -
.../views/fmandiri/pendaftaran-verifikasi.php | 500 ----
donjo-app/views/fmandiri/pendaftaran.php | 221 --
donjo-app/views/fmandiri/pendapat.php | 62 -
donjo-app/views/fmandiri/permohonan_surat.php | 97 -
.../fmandiri/permohonan_surat_tinymce.php | 86 -
donjo-app/views/fmandiri/pilihan_syarat.php | 60 -
donjo-app/views/fmandiri/surat.php | 178 --
donjo-app/views/fmandiri/template.php | 374 ---
donjo-app/views/fmandiri/verifikasi.php | 408 ---
donjo-app/views/footer.php | 273 --
donjo-app/views/gis/aparatur_desa.php | 56 -
donjo-app/views/gis/aparatur_wilayah.php | 25 -
donjo-app/views/gis/cetak_peta.php | 65 -
donjo-app/views/gis/penduduk_gis.php | 198 --
donjo-app/views/global/aktifkan_cookie.php | 14 -
donjo-app/views/global/ambil_foto.php | 19 -
donjo-app/views/global/blok_ttd_pamong.php | 39 -
donjo-app/views/global/capture.php | 70 -
donjo-app/views/global/cetak_box.php | 37 -
donjo-app/views/global/filter_wilayah.php | 66 -
donjo-app/views/global/konfirmasi.php | 21 -
donjo-app/views/global/konfirmasi_cookie.php | 25 -
donjo-app/views/global/modal_setting.php | 14 -
donjo-app/views/global/sinkronisasi_notif.php | 42 -
.../views/global/sinkronisasi_notif_ajax.php | 26 -
donjo-app/views/global/tampilkan.php | 65 -
donjo-app/views/global/ttd_pamong.php | 45 -
donjo-app/views/head_surat.php | 15 -
donjo-app/views/header.php | 161 --
donjo-app/views/import/ppls.php | 123 -
donjo-app/views/inventaris/dialog_cetak.php | 51 -
.../inventaris_global_dialog_cetak.php | 41 -
.../inventaris_global_dialog_unduh.php | 41 -
donjo-app/views/inventaris/js_mutasi.php | 41 -
.../inventaris/laporan/inventaris_print.php | 335 ---
.../laporan/inventaris_print_mutasi.php | 304 --
donjo-app/views/inventaris/laporan/table.php | 336 ---
.../views/inventaris/laporan/table_mutasi.php | 419 ---
donjo-app/views/inventaris/menu_kiri.php | 41 -
donjo-app/views/keuangan/filter_laporan.php | 30 -
.../views/keuangan/filter_laporan_manual.php | 30 -
donjo-app/views/keuangan/grafik_rp_apbd.php | 21 -
.../views/keuangan/grafik_rp_apbd_dd.php | 21 -
.../views/keuangan/grafik_rp_apbd_manual.php | 21 -
donjo-app/views/keuangan/impor_data.php | 190 --
donjo-app/views/keuangan/manual_apbdes.php | 354 ---
donjo-app/views/keuangan/menu_laporan.php | 75 -
.../views/keuangan/menu_laporan_manual.php | 26 -
donjo-app/views/keuangan/pilih_desa.php | 39 -
.../views/keuangan/rincian_realisasi.php | 22 -
.../views/keuangan/rincian_realisasi_dd.php | 21 -
.../keuangan/rincian_realisasi_manual.php | 21 -
.../views/keuangan/tabel_laporan_rp_apbd.php | 20 -
.../tabel_laporan_rp_apbd_artikel_dd.php | 16 -
.../keuangan/tabel_laporan_rp_apbd_dd.php | 29 -
.../keuangan/tabel_laporan_rp_apbd_manual.php | 17 -
donjo-app/views/lupa_sandi.php | 77 -
donjo-app/views/mandiri/periksa_surat.php | 154 -
donjo-app/views/notif/pengumuman.php | 94 -
donjo-app/views/reset_kata_sandi.php | 77 -
donjo-app/views/setting/modal_form.php | 44 -
donjo-app/views/siteman.php | 171 --
donjo-app/views/sitemap.php | 19 -
donjo-app/views/statistik/ajax_daftar.php | 33 -
donjo-app/views/statistik/dpt.php | 87 -
donjo-app/views/statistik/penduduk.php | 329 ---
donjo-app/views/statistik/penduduk_cetak.php | 150 -
.../views/statistik/penduduk_grafik_web.php | 290 --
donjo-app/views/statistik/peserta_bantuan.php | 62 -
donjo-app/views/surat/ajax_cetak.php | 36 -
.../views/surat/ajax_edit_keterangan.php | 13 -
donjo-app/views/surat/cetak.php | 112 -
donjo-app/views/surat/form/_cari_nik.php | 25 -
donjo-app/views/surat/form/_pamong.php | 56 -
donjo-app/views/surat/form/breadcrumb.php | 8 -
donjo-app/views/surat/form/kode_isian.php | 70 -
.../views/surat/form/konfirmasi_pemohon.php | 41 -
.../surat/form/konfirmasi_permohonan.php | 59 -
donjo-app/views/surat/form/nomor_surat.php | 36 -
donjo-app/views/surat/form/tampil_foto.php | 12 -
donjo-app/views/surat/form/tgl_berlaku.php | 21 -
donjo-app/views/surat/form/tombol_cetak.php | 32 -
donjo-app/views/surat/form_surat_tinymce.php | 75 -
donjo-app/views/surat/qrcode.php | 4 -
donjo-app/views/surat/surat_keluar_graph.php | 79 -
htaccess.txt | 6 +-
index.php | 4 +-
make_obfuscate.php | 9 +-
package.json | 2 +-
rector.php | 4 +-
.../auth/notifikasi_lupa_sandi.blade.php | 169 ++
.../admin/auth/notifikasi_lupa_sandi.php | 101 -
.../notifikasi_verifikasi_email.blade.php | 163 ++
.../pembangunan/hasil/cetak.blade.php | 4 +-
.../pembangunan/kader/cetak.blade.php | 4 +-
.../pembangunan/kegiatan/cetak.blade.php | 4 +-
.../pembangunan/rencana/cetak.blade.php | 4 +-
.../bumindes/penduduk/induk/cetak.blade.php | 4 +-
.../bumindes/penduduk/ktpkk/cetak.blade.php | 4 +-
.../bumindes/penduduk/mutasi/cetak.blade.php | 4 +-
.../penduduk/rekapitulasi/cetak.blade.php | 6 +-
.../penduduk/sementara/cetak.blade.php | 4 +-
.../admin/database/ajax_sinkronkan.blade.php | 25 +
.../buku_kades/table_buku_umum.blade.php | 7 +-
.../admin/dokumen/ekspedisi/cetak.blade.php | 4 +-
.../inventaris_kekayaan/cetak.blade.php | 4 +-
.../dokumen/lembaran_desa/index.blade.php | 5 +
.../admin/inventaris/asset/cetak.blade.php | 6 +-
.../admin/inventaris/gedung/cetak.blade.php | 8 +-
.../admin/inventaris/jalan/cetak.blade.php | 6 +-
.../inventaris/kontruksi/cetak.blade.php | 8 +-
.../admin/inventaris/laporan/cetak.blade.php | 6 +-
.../inventaris/peralatan/cetak.blade.php | 8 +-
.../admin/inventaris/tanah/cetak.blade.php | 8 +-
.../admin/kelompok/anggota/cetak.blade.php | 4 +-
.../views/admin/kelompok/cetak.blade.php | 4 +-
.../admin/keuangan/confirmation.blade.php | 39 +
resources/views/admin/keuangan/form.blade.php | 32 +
.../admin/keuangan/form_update.blade.php | 105 +
.../views/admin/keuangan/impor_data.blade.php | 41 +
.../views/admin/keuangan/index.blade.php | 138 +
.../admin/keuangan/laporan/apbd.blade.php | 17 +
.../admin/keuangan/laporan/apbd_isi.blade.php | 351 +++
.../laporan/grafik_rp_apbd_chart.blade.php | 45 +
.../laporan}/grafik_rp_apbd_chart.php | 0
.../laporan/grafik_rp_apbd_manual.blade.php | 43 +
.../admin/keuangan/laporan/menu.blade.php | 26 +
.../keuangan/laporan/realisasi.blade.php | 44 +
.../tabel_laporan_rp_apbd_artikel.blade.php | 16 +
.../tabel_laporan_rp_apbd_artikel.php | 2 +-
.../tabel_laporan_rp_apbd_isi.blade.php | 351 +++
.../laporan}/tabel_laporan_rp_apbd_isi.php | 18 +-
.../views/admin/laporan/bulanan.blade.php | 6 +-
.../admin/laporan/bulanan_print.blade.php | 10 +-
.../admin/laporan/detail/cetak.blade.php | 4 +-
.../admin/laporan/rentan/cetak.blade.php | 6 +-
.../admin/laporan/rentan/index.blade.php | 6 +-
.../layouts/components/format_cetak.blade.php | 6 +-
.../kades/cetak/sk_kades_print.blade.php | 2 +-
.../layouts/components/tampilkan.blade.php | 18 +
.../layouts/components/tombol_cetak.blade.php | 32 +
.../pembangunan/dokumentasi/cetak.blade.php | 4 +-
.../admin/penduduk/cetak_biodata.blade.php | 5 +
.../views/admin/penduduk/detail.blade.php | 5 +
.../penduduk_form_isian_bersama.blade.php | 13 +
.../admin/pengaturan/modal_form.blade.php | 2 +-
.../views/admin/pengguna/index.blade.php | 2 +-
.../views/admin/pengguna/tab-profil.blade.php | 2 +-
.../views/admin/pengunjung/cetak.blade.php | 4 +-
.../admin/pengurus/bagan_sisip.blade.php | 15 +
.../admin/pengurus/chart_bagan.blade.php | 134 +-
.../admin/pengurus/chart_bagan_sotk.blade.php | 137 +
.../views/admin/pengurus/index.blade.php | 4 +-
.../form_surat_tinymce.blade.php | 70 +
.../konfirmasi_pemohon.blade.php | 43 +
.../konfirmasi_permohonan.blade.php | 13 +
.../permohonan_surat/periksa_surat.blade.php | 167 ++
.../admin/pertanahan/cdesa/cetak.blade.php | 2 +-
.../admin/pertanahan/cdesa/form.blade.php | 17 +
.../admin/pertanahan/cdesa/index.blade.php | 2 +-
.../admin/pertanahan/persil/cetak.blade.php | 4 +-
.../admin/pertanahan/persil/form.blade.php | 28 +
.../program_bantuan/peserta/cetak.blade.php | 4 +-
.../views/admin/statistik/cetak.blade.php | 4 +-
.../views/admin/stunting/cetak.blade.php | 4 +-
.../views/admin/stunting/filter.blade.php | 84 +
.../views/admin/stunting/navigasi.blade.php | 18 +-
.../rekapitulasi-bulanan-anak.blade.php | 56 +-
.../rekapitulasi-bulanan-balita.blade.php | 86 +
.../stunting/rekapitulasi-ibu-hamil.blade.php | 55 +-
.../views/admin/suplemen/cetak.blade.php | 4 +-
.../views/admin/surat/form_desa.blade.php | 2 +-
.../views/admin/surat/keluar/cetak.blade.php | 6 +-
.../admin/surat_dinas/arsip/cetak.blade.php | 6 +-
.../theme/components/general/box.blade.php | 4 +-
.../views/admin/web/widget/form.blade.php | 2 +-
resources/views/email/kirim-pin.blade.php | 133 +
resources/views/email/template.blade.php | 114 +
.../views/email/verifikasi-berhasil.blade.php | 114 +
resources/views/email/verifikasi.blade.php | 124 +
.../notifikasi_verifikasi_email.blade.php | 15 +-
.../views/web/gis/aparatur_desa.blade.php | 56 +
.../views/web/gis/aparatur_wilayah.blade.php | 22 +
resources/views/web/gis/apbdes_web.blade.php | 40 +
.../views/web/gis/penduduk_gis.blade.php | 202 ++
resources/views/web/kesehatan/cetak.blade.php | 4 +-
resources/views/web/statistik/cetak.blade.php | 4 +-
storage/app/template/lampiran/f-1.01/data.php | 4 +-
storage/app/template/lampiran/f-1.03/data.php | 4 +-
storage/app/template/lampiran/f-1.15/data.php | 4 +-
storage/app/template/lampiran/f-1.16/data.php | 4 +-
storage/app/template/lampiran/f-1.25/data.php | 4 +-
storage/app/template/lampiran/f-1.27/data.php | 4 +-
.../lampiran/f-2.01-kelahiran/data.php | 4 +-
.../lampiran/f-2.01-kematian/data.php | 4 +-
storage/app/template/lampiran/f-2.01/data.php | 4 +-
storage/app/template/lampiran/f-2.12/data.php | 4 +-
storage/app/template/lampiran/f-2.29/data.php | 4 +-
storage/app/template/lampiran/f.1-21/data.php | 4 +-
.../template/lampiran/kode_pelapor_saksi.php | 4 +-
.../surat-dinas/lampiran/f-1.01/data.php | 4 +-
.../app}/themes/esensi/assets/css/custom.css | 0
.../app/themes/esensi/assets/css}/index.html | 0
.../themes/esensi/assets/css/style-mt.css | 0
.../app}/themes/esensi/assets/css/style.css | 0
.../themes/esensi/assets/css/style.min.css | 0
.../esensi/assets/css/style.min.css.map | 0
.../themes/esensi/assets/images/empty.svg | 0
.../themes/esensi/assets/images/header-bg.jpg | Bin
.../themes/esensi/assets/images/index.html | 0
.../app}/themes/esensi/assets/index.html | 0
storage/app/themes/esensi/assets/js/helper.js | 15 +
.../app}/themes/esensi/assets/js/index.html | 0
.../app/themes/esensi/assets/js/pagination.js | 59 +
storage/app/themes/esensi/assets/js/script.js | 239 ++
.../app/themes/esensi/assets/js/script.min.js | 1 +
.../themes/esensi/assets/js/script.min.js.map | 0
.../esensi/assets/thumbnail/preview-1.jpg | Bin
.../app}/themes/esensi/catatan_rilis.md | 0
.../app}/themes/esensi/composer.json | 0
.../app/themes/esensi}/index.html | 0
.../resources/views/commons/404.blade.php | 7 +
.../views/commons/asset_highcharts.blade.php | 16 +
.../views/commons/asset_peta.blade.php | 10 +
.../views/commons/asset_select2.blade.php | 9 +
.../views/commons/asset_sweetalert.blade.php | 7 +
.../views/commons/back_to_top.blade.php | 6 +
.../views/commons/category_menu.blade.php | 48 +
.../resources/views/commons/footer.blade.php | 77 +
.../resources/views/commons/header.blade.php | 58 +
.../resources/views/commons/loading.blade.php | 5 +
.../views/commons/loading_screen.blade.php | 7 +
.../views/commons/main_menu.blade.php | 81 +
.../resources/views/commons/meta.blade.php | 77 +
.../views/commons/mobile_menu.blade.php | 59 +
.../views/commons/notifikasi.blade.php | 43 +
.../commons/pagination-tailwind.blade.php | 47 +
.../views/commons/pagination.blade.php | 10 +
.../resources/views/commons/paging.blade.php | 4 +
.../views/commons/source_css.blade.php | 15 +
.../views/commons/source_js.blade.php | 31 +
.../views/commons/sticky_share.blade.php | 56 +
.../views/layouts/full-content.blade.php | 10 +
.../views/layouts/left-sidebar.blade.php | 14 +
.../views/layouts/right-sidebar.blade.php | 14 +
.../resources/views/menu_not_active.blade.php | 7 +
.../views/partials/analisis/index.blade.php | 145 +
.../views/partials/analisis/jawaban.blade.php | 156 +
.../views/partials/apbdesa.blade.php | 35 +
.../views/partials/arsip/index.blade.php | 110 +
.../views/partials/article.blade.php | 53 +
.../views/partials/artikel/comment.blade.php | 98 +
.../views/partials/artikel/detail.blade.php | 63 +
.../views/partials/artikel/empty.blade.php | 7 +
.../views/partials/artikel/index.blade.php | 36 +
.../views/partials/artikel/list.blade.php | 22 +
.../views/partials/comment.blade.php | 98 +
.../views/partials/dpt/index.blade.php | 122 +
.../views/partials/embed/index.blade.php | 89 +
.../views/partials/galeri/index.blade.php | 87 +
.../views/partials/headline.blade.php | 14 +
.../views/partials/idm/index.blade.php | 233 ++
.../partials/informasi-publik/index.blade.php | 185 ++
.../views/partials/inventaris/asset.blade.php | 95 +
.../partials/inventaris/gedung.blade.php | 105 +
.../views/partials/inventaris/index.blade.php | 120 +
.../views/partials/inventaris/jalan.blade.php | 106 +
.../partials/inventaris/konstruksi.blade.php | 104 +
.../partials/inventaris/peralatan.blade.php | 100 +
.../views/partials/inventaris/tanah.blade.php | 97 +
.../views/partials/kelompok/detail.blade.php | 198 ++
.../chart_stunting_posyandu.blade.php | 3 +
.../kesehatan/chart_stunting_umur.blade.php | 5 +
.../views/partials/kesehatan/index.blade.php | 182 ++
.../partials/kesehatan/scorecard.blade.php | 151 +-
.../partials/kesehatan/widget_item.blade.php | 11 +
.../views/partials/lapak/index.blade.php | 240 ++
.../views/partials/lembaga/detail.blade.php | 198 ++
.../partials/maintenance/index.blade.php | 28 +-
.../partials/pembangunan/detail.blade.php | 144 +
.../partials/pembangunan/index.blade.php | 157 ++
.../views/partials/pemerintah/index.blade.php | 91 +
.../views/partials/pengaduan/index.blade.php | 360 +++
.../peta/components/aparatur_desa.blade.php | 56 +
.../partials/peta/components/apbdes.blade.php | 40 +
.../views/partials/peta/index.blade.php | 501 ++++
.../partials/produk-hukum/index.blade.php | 228 ++
.../views/partials/sdgs/index.blade.php | 63 +
.../views/partials/sidebar.blade.php | 27 +
.../resources/views/partials/slider.blade.php | 26 +
.../views/partials/sotk/index.blade.php | 184 ++
.../partials/statistik/default.blade.php | 194 ++
.../views/partials/statistik/index.blade.php | 16 +
.../views/partials/statistik}/index.html | 0
.../partials/statistik/sidenav.blade.php | 66 +
.../views/partials/suplemen/index.blade.php | 151 +
.../views/partials/surat/index.blade.php | 104 +
.../partials/surat_dinas/index.blade.php | 99 +
.../views/partials/wilayah/index.blade.php | 156 +
.../esensi/resources/views/template.blade.php | 46 +
.../resources/views/widgets/agenda.blade.php | 132 +
.../views/widgets/aparatur_desa.blade.php | 38 +
.../views/widgets/arsip_artikel.blade.php | 71 +
.../resources/views/widgets/galeri.blade.php | 16 +
.../resources/views/widgets}/index.html | 0
.../views/widgets/jam_kerja.blade.php | 33 +
.../views/widgets/keuangan.blade.php | 381 +++
.../views/widgets/komentar.blade.php | 28 +
.../views/widgets/media_sosial.blade.php | 16 +
.../views/widgets/menu_kategori.blade.php | 22 +
.../widgets/peta_lokasi_kantor.blade.php | 101 +
.../views/widgets/peta_wilayah_desa.blade.php | 54 +
.../views/widgets/sinergi_program.blade.php | 66 +
.../views/widgets/statistik.blade.php | 64 +
.../widgets/statistik_pengunjung.blade.php | 24 +
.../app}/themes/natra/assets/css/animate.css | 0
.../themes/natra/assets/css/bootstrap.min.css | 0
.../app}/themes/natra/assets/css/custom.css | 0
.../app}/themes/natra/assets/css/desa-web.css | 0
.../natra/assets/css/font-awesome.min.css | 0
.../natra/assets/css/images/icon-search.png | Bin
.../natra/assets/css/images}/index.html | 0
.../natra/assets/css/images/slider_next.png | Bin
.../natra/assets/css/images/slider_prev.png | Bin
.../themes/natra/assets/css/images/status.gif | Bin
.../app/themes/natra/assets/css}/index.html | 0
.../themes/natra/assets/css/owl.carousel.css | 0
.../app}/themes/natra/assets/css/slick.css | 0
.../app}/themes/natra/assets/css/style-mt.css | 0
.../app}/themes/natra/assets/css/style.css | 0
.../themes/natra/assets/css/style.min.css | 0
.../app}/themes/natra/assets/css/theme.css | 0
.../themes/natra/assets/css/theme.min.css | 0
.../themes/natra/assets/fonts/FontAwesome.otf | Bin
.../assets/fonts/Oswald-Regular-400.woff | Bin
.../assets/fonts/fontawesome-webfont.eot | Bin
.../assets/fonts/fontawesome-webfont.svg | 0
.../assets/fonts/fontawesome-webfont.ttf | Bin
.../assets/fonts/fontawesome-webfont.woff | Bin
.../fonts/glyphicons-halflings-regular.eot | Bin
.../fonts/glyphicons-halflings-regular.svg | 0
.../fonts/glyphicons-halflings-regular.ttf | Bin
.../fonts/glyphicons-halflings-regular.woff | Bin
.../app/themes/natra/assets/fonts}/index.html | 0
.../themes/natra/assets/images/bg_header.jpg | Bin
.../themes/natra/assets/images}/index.html | 0
.../themes/natra/assets/images/noimage.png | Bin
.../natra/assets/images/statistik_agama.png | Bin
.../natra/assets/images/statistik_kelamin.png | Bin
.../assets/images/statistik_pekerjaan.png | Bin
.../natra/assets/images/statistik_pend.png | Bin
.../natra/assets/images/statistik_umur.png | Bin
.../natra/assets/images/statistik_wil.png | Bin
.../app/themes/natra/assets}/index.html | 0
.../themes/natra/assets/js/bootstrap.min.js | 0
.../app}/themes/natra/assets/js/custom.js | 0
storage/app/themes/natra/assets/js/helper.js | 15 +
.../themes/natra/assets/js/html5shiv.min.js | 0
.../app/themes/natra/assets/js}/index.html | 0
.../app}/themes/natra/assets/js/jquery.min.js | 0
.../app/themes/natra/assets/js/pagination.js | 64 +
.../themes/natra/assets/js/respond.min.js | 0
.../app}/themes/natra/assets/js/slick.min.js | 0
.../app}/themes/natra/assets/js/widget.min.js | 0
.../app}/themes/natra/assets/js/wow.min.js | 0
.../themes/natra/assets/js/yall/yall.min.js | 0
.../natra/assets/thumbnail/preview-1.jpg | Bin
.../app}/themes/natra/catatan_rilis.md | 0
.../app}/themes/natra/composer.json | 0
.../app}/themes/natra/config.json | 0
.../app/themes/natra}/index.html | 0
.../views/commons/asset_highcharts.blade.php | 16 +
.../views/commons/asset_peta.blade.php | 11 +
.../views/commons/asset_sweetalert.blade.php | 7 +
.../resources/views/commons/loading.blade.php | 3 +
.../resources/views/commons/meta.blade.php | 166 ++
.../views/commons/meta_footer.blade.php | 20 +
.../views/commons/not_found.blade.php | 14 +
.../views/commons/notifikasi.blade.php | 43 +
.../resources/views/commons/page.blade.php | 3 +
.../views/commons/pagination.blade.php | 18 +
.../commons/pagination_default.blade.php | 47 +
.../resources/views/commons/share.blade.php | 18 +
.../resources/views/commons/style.blade.php | 299 ++
.../views/layouts/commons/page.blade.php | 28 +
.../views/layouts/full-content.blade.php | 23 +
.../views/layouts/left-sidebar.blade.php | 18 +
.../views/layouts/right-sidebar.blade.php | 18 +
.../views/layouts/teks_berjalan.blade.php | 8 +
.../resources/views/menu_not_active.blade.php | 5 +
.../views/partials/analisis/index.blade.php | 147 +
.../views/partials/analisis/jawaban.blade.php | 152 +
.../views/partials/apbdesa-tema.blade.php | 44 +
.../views/partials/arsip/index.blade.php | 114 +
.../views/partials/artikel/comment.blade.php | 63 +
.../views/partials/artikel/detail.blade.php | 180 ++
.../views/partials/artikel/empty.blade.php | 11 +
.../views/partials/artikel/headline.blade.php | 33 +
.../views/partials/artikel/index.blade.php | 46 +
.../views/partials/artikel/list.blade.php | 33 +
.../views/partials/dpt/index.blade.php | 119 +
.../views/partials/embed/index.blade.php | 89 +
.../resources/views/partials/feed.blade.php | 37 +
.../views/partials/footer_bottom.blade.php | 34 +
.../views/partials/footer_top.blade.php | 70 +
.../views/partials/galeri/index.blade.php | 104 +
.../resources/views/partials/header.blade.php | 37 +
.../views/partials/header2.blade.php | 83 +
.../views/partials/idm/index.blade.php | 284 ++
.../resources/views/partials}/index.html | 0
.../partials/informasi-publik/index.blade.php | 181 ++
.../views/partials/inventaris/asset.blade.php | 86 +
.../partials/inventaris/gedung.blade.php | 96 +
.../views/partials/inventaris/index.blade.php | 123 +
.../views/partials/inventaris/jalan.blade.php | 97 +
.../partials/inventaris/konstruksi.blade.php | 95 +
.../partials/inventaris/peralatan.blade.php | 91 +
.../views/partials/inventaris/tanah.blade.php | 88 +
.../views/partials/kelompok/detail.blade.php | 204 ++
.../chart_stunting_posyandu.blade.php | 3 +
.../kesehatan/chart_stunting_umur.blade.php | 5 +
.../views/partials/kesehatan/index.blade.php | 180 ++
.../partials/kesehatan/scorecard.blade.php | 412 +++
.../partials/kesehatan/widget_item.blade.php | 15 +
.../resources/views/partials/konten.blade.php | 5 +
.../views/partials/lapak/index.blade.php | 268 ++
.../views/partials/lembaga/detail.blade.php | 204 ++
.../partials/maintenance/index.blade.php | 28 +-
.../views/partials/menu_head.blade.php | 12 +-
.../views/partials/not_found.blade.php | 11 +
.../partials/pembangunan/detail.blade.php | 196 ++
.../partials/pembangunan/index.blade.php | 96 +
.../views/partials/pemerintah/index.blade.php | 129 +
.../views/partials/pengaduan/index.blade.php | 661 +++++
.../peta/components/aparatur_desa.blade.php | 56 +
.../partials/peta/components/apbdes.blade.php | 40 +
.../views/partials/peta/index.blade.php | 493 ++++
.../partials/produk-hukum/index.blade.php | 222 ++
.../views/partials/sdgs/index.blade.php | 130 +
.../views/partials/sidebar.blade.php | 38 +
.../resources/views/partials/slider.blade.php | 18 +
.../views/partials/sotk/index.blade.php | 179 ++
.../views/partials/statistik/index.blade.php | 425 +++
.../views/partials/suplemen/index.blade.php | 146 +
.../views/partials/surat/index.blade.php | 104 +
.../partials/surat_dinas/index.blade.php | 99 +
.../views/partials/wilayah/index.blade.php | 146 +
.../natra/resources/views/template.blade.php | 48 +
.../resources/views/widgets/agenda.blade.php | 131 +
.../views/widgets/aparatur_desa.blade.php | 70 +
.../views/widgets/arsip_artikel.blade.php | 42 +
.../resources/views/widgets/galeri.blade.php | 16 +
.../views/widgets/jadwal_sholat.blade.php | 98 +
.../views/widgets/jam_kerja.blade.php | 39 +
.../views/widgets/keuangan.blade.php | 415 +++
.../views/widgets/komentar.blade.php | 43 +
.../views/widgets/media_sosial.blade.php | 14 +
.../views/widgets/menu_kategori.blade.php | 28 +
.../widgets/peta_lokasi_kantor.blade.php | 129 +
.../views/widgets/peta_wilayah_desa.blade.php | 54 +
.../views/widgets/sinergi_program.blade.php | 69 +
.../views/widgets/statistik.blade.php | 70 +
.../widgets/statistik_pengunjung.blade.php | 60 +
.../framework/system/core/Common.php | 4 +-
.../system/libraries/Cache/Cache.php | 284 ++
.../framework/system/libraries/Email.php | 2499 +++++++++++++++++
.../system/libraries/Form_validation.php | 1620 +++++++++++
.../framework/system/libraries/Upload.php | 1281 +++++++++
umum_obfuscate.php | 4 +-
vendor/autoload.php | 2 +-
vendor/bin/carbon | 5 +-
vendor/bin/doctrine-dbal | 5 +-
vendor/bin/patch-type-declarations | 5 +-
vendor/bin/var-dump-server | 5 +-
.../framework/system/core/Common.php | 4 +-
.../framework/system/core/Controller.php | 1 +
.../system/libraries/Cache/Cache.php | 28 +
.../framework/system/libraries/Email.php | 8 +
.../system/libraries/Form_validation.php | 57 +-
.../framework/system/libraries/Upload.php | 720 +++--
vendor/composer/autoload_files.php | 5 +-
vendor/composer/autoload_psr4.php | 7 +
vendor/composer/autoload_real.php | 10 +-
vendor/composer/autoload_static.php | 50 +-
vendor/composer/installed.json | 684 +++--
vendor/composer/installed.php | 132 +-
.../email-validator/src/EmailLexer.php | 3 +-
.../Parser/CommentStrategy/LocalComment.php | 3 +-
.../email-validator/src/Parser/DomainPart.php | 1 +
.../src/Validation/DNSGetRecordWrapper.php | 3 +-
.../src/Validation/DNSRecords.php | 4 +-
.../Validation/Extra/SpoofCheckValidation.php | 3 -
.../src/Warning/QuotedPart.php | 14 +-
.../src/Warning/QuotedString.php | 4 +-
.../composer.json | 45 +
.../src/ApiResponseHelpers.php | 143 +
.../Renderer/Block/ListItemRenderer.php | 18 +-
vendor/league/fractal/.editorconfig | 9 +
vendor/league/fractal/composer.json | 62 +
vendor/league/fractal/phpstan-baseline.neon | 72 +
vendor/league/fractal/src/Manager.php | 294 ++
.../league/fractal/src/Pagination/Cursor.php | 143 +
.../src/Pagination/CursorInterface.php | 49 +
.../Pagination/DoctrinePaginatorAdapter.php | 102 +
.../Pagination/IlluminatePaginatorAdapter.php | 89 +
.../Pagination/PagerfantaPaginatorAdapter.php | 95 +
.../src/Pagination/PaginatorInterface.php | 50 +
.../PhalconFrameworkPaginatorAdapter.php | 89 +
.../ZendFrameworkPaginatorAdapter.php | 95 +
vendor/league/fractal/src/ParamBag.php | 138 +
.../fractal/src/Resource/Collection.php | 79 +
vendor/league/fractal/src/Resource/Item.php | 21 +
.../fractal/src/Resource/NullResource.php | 33 +
.../league/fractal/src/Resource/Primitive.php | 22 +
.../fractal/src/Resource/ResourceAbstract.php | 150 +
.../src/Resource/ResourceInterface.php | 54 +
vendor/league/fractal/src/Scope.php | 465 +++
vendor/league/fractal/src/ScopeFactory.php | 42 +
.../fractal/src/ScopeFactoryInterface.php | 33 +
.../src/Serializer/ArraySerializer.php | 111 +
.../src/Serializer/DataArraySerializer.php | 39 +
.../src/Serializer/JsonApiSerializer.php | 522 ++++
.../fractal/src/Serializer/Serializer.php | 68 +
.../src/Serializer/SerializerAbstract.php | 73 +
.../fractal/src/TransformerAbstract.php | 262 ++
vendor/nesbot/carbon/composer.json | 2 +-
.../carbon/src/Carbon/AbstractTranslator.php | 2 +
.../eloquent-sortable/src/SortableTrait.php | 4 +-
vendor/spatie/fractalistic/.editorconfig | 15 +
vendor/spatie/fractalistic/composer.json | 49 +
.../fractalistic/src/ArraySerializer.php | 21 +
.../src/Exceptions/InvalidTransformation.php | 9 +
.../src/Exceptions/NoTransformerSpecified.php | 9 +
vendor/spatie/fractalistic/src/Fractal.php | 520 ++++
vendor/spatie/laravel-fractal/.editorconfig | 15 +
.../spatie/laravel-fractal/.php_cs.dist.php | 40 +
vendor/spatie/laravel-fractal/composer.json | 71 +
.../spatie/laravel-fractal/config/fractal.php | 72 +
.../Commands/TransformerMakeCommand.php | 24 +
.../src/Console/stubs/transformer.stub | 38 +
.../laravel-fractal/src/Facades/Fractal.php | 16 +
vendor/spatie/laravel-fractal/src/Fractal.php | 149 +
.../src/FractalServiceProvider.php | 35 +
vendor/spatie/laravel-fractal/src/helpers.php | 19 +
.../spatie/laravel-json-api-paginate/.php_cs | 38 +
.../laravel-json-api-paginate/composer.json | 55 +
.../config/json-api-paginate.php | 64 +
.../src/JsonApiPaginateServiceProvider.php | 89 +
.../laravel-package-tools/src/Package.php | 12 +
.../src/PackageServiceProvider.php | 71 +-
.../laravel-query-builder/.php_cs.dist.php | 35 +
.../laravel-query-builder/composer.json | 68 +
.../config/query-builder.php | 63 +
.../database/factories/AppendModelFactory.php | 19 +
.../factories/SoftDeleteModelFactory.php | 18 +
.../database/factories/TestModelFactory.php | 19 +
.../src/AllowedFilter.php | 202 ++
.../src/AllowedInclude.php | 112 +
.../laravel-query-builder/src/AllowedSort.php | 91 +
.../src/Concerns/AddsFieldsToQuery.php | 116 +
.../src/Concerns/AddsIncludesToQuery.php | 103 +
.../src/Concerns/FiltersQuery.php | 81 +
.../src/Concerns/SortsQuery.php | 116 +
.../src/Enums/SortDirection.php | 10 +
...ieldsMustBeCalledBeforeAllowedIncludes.php | 13 +
.../src/Exceptions/InvalidAppendQuery.php | 32 +
.../src/Exceptions/InvalidDirection.php | 14 +
.../src/Exceptions/InvalidFieldQuery.php | 32 +
.../src/Exceptions/InvalidFilterQuery.php | 32 +
.../src/Exceptions/InvalidFilterValue.php | 13 +
.../src/Exceptions/InvalidIncludeQuery.php | 39 +
.../src/Exceptions/InvalidQuery.php | 9 +
.../src/Exceptions/InvalidSortQuery.php | 32 +
.../src/Exceptions/InvalidSubject.php | 20 +
.../Exceptions/UnknownIncludedFieldsQuery.php | 23 +
.../src/Filters/Filter.php | 20 +
.../src/Filters/FiltersBeginsWithStrict.php | 18 +
.../src/Filters/FiltersCallback.php | 29 +
.../src/Filters/FiltersEndsWithStrict.php | 18 +
.../src/Filters/FiltersExact.php | 81 +
.../src/Filters/FiltersPartial.php | 63 +
.../src/Filters/FiltersScope.php | 103 +
.../src/Filters/FiltersTrashed.php | 30 +
.../src/Includes/IncludeInterface.php | 19 +
.../src/Includes/IncludedCallback.php | 23 +
.../src/Includes/IncludedCount.php | 14 +
.../src/Includes/IncludedExists.php | 20 +
.../src/Includes/IncludedRelationship.php | 50 +
.../src/QueryBuilder.php | 157 ++
.../src/QueryBuilderRequest.php | 221 ++
.../src/QueryBuilderServiceProvider.php | 30 +
.../laravel-query-builder/src/Sorts/Sort.php | 10 +
.../src/Sorts/SortsCallback.php | 25 +
.../src/Sorts/SortsField.php | 13 +
vendor/tecnickcom/tcpdf/VERSION | 2 +-
vendor/tecnickcom/tcpdf/composer.json | 5 +-
.../tecnickcom/tcpdf/include/tcpdf_fonts.php | 43 +-
vendor/tecnickcom/tcpdf/tcpdf.php | 15 +-
vendor/tecnickcom/tcpdf/tcpdf_autoconfig.php | 5 +
vendor/themes/esensi/assets/js/script.js | 209 --
vendor/themes/esensi/assets/js/script.min.js | 2 -
vendor/themes/esensi/commons/404.php | 7 -
vendor/themes/esensi/commons/back_to_top.php | 15 -
.../themes/esensi/commons/category_menu.php | 56 -
vendor/themes/esensi/commons/footer.php | 69 -
vendor/themes/esensi/commons/header.php | 58 -
.../themes/esensi/commons/loading_screen.php | 15 -
vendor/themes/esensi/commons/main_menu.php | 94 -
vendor/themes/esensi/commons/meta.php | 91 -
vendor/themes/esensi/commons/mobile_menu.php | 84 -
vendor/themes/esensi/commons/paging.php | 32 -
vendor/themes/esensi/commons/source_css.php | 17 -
vendor/themes/esensi/commons/source_js.php | 33 -
vendor/themes/esensi/commons/sticky_share.php | 51 -
vendor/themes/esensi/layouts/analisis.tpl.php | 112 -
vendor/themes/esensi/layouts/arsip.tpl.php | 34 -
vendor/themes/esensi/layouts/artikel.tpl.php | 57 -
vendor/themes/esensi/layouts/beranda.tpl.php | 47 -
vendor/themes/esensi/layouts/embed.tpl.php | 75 -
.../esensi/layouts/full_content.tpl.php | 56 -
vendor/themes/esensi/layouts/gallery.tpl.php | 33 -
.../esensi/layouts/halaman_statis.tpl.php | 35 -
.../layouts/halaman_statis_lebar.tpl.php | 43 -
vendor/themes/esensi/layouts/kelompok.tpl.php | 32 -
.../themes/esensi/layouts/kesehatan.tpl.php | 29 -
vendor/themes/esensi/layouts/stat.tpl.php | 50 -
.../themes/esensi/layouts/sub_gallery.tpl.php | 33 -
vendor/themes/esensi/layouts/suplemen.tpl.php | 32 -
vendor/themes/esensi/partials/apbdesa.php | 45 -
vendor/themes/esensi/partials/archive.php | 23 -
vendor/themes/esensi/partials/article.php | 53 -
.../themes/esensi/partials/article_list.php | 25 -
vendor/themes/esensi/partials/comment.php | 95 -
.../themes/esensi/partials/empty_article.php | 9 -
vendor/themes/esensi/partials/gallery.php | 33 -
vendor/themes/esensi/partials/group.php | 134 -
vendor/themes/esensi/partials/headline.php | 18 -
vendor/themes/esensi/partials/idm/index.php | 176 --
vendor/themes/esensi/partials/index.html | 10 -
.../partials/informasi_publik/index.php | 84 -
.../esensi/partials/inventaris/asset.php | 43 -
.../esensi/partials/inventaris/gedung.php | 52 -
.../esensi/partials/inventaris/index.php | 194 --
.../esensi/partials/inventaris/jalan.php | 54 -
.../esensi/partials/inventaris/konstruksi.php | 52 -
.../esensi/partials/inventaris/peralatan.php | 50 -
.../esensi/partials/inventaris/script.php | 28 -
.../esensi/partials/inventaris/tanah.php | 46 -
.../kesehatan/chart_stunting_posyandu.php | 27 -
.../kesehatan/chart_stunting_umur.php | 48 -
.../esensi/partials/kesehatan/index.php | 55 -
.../esensi/partials/kesehatan/widget.php | 15 -
vendor/themes/esensi/partials/lapak/index.php | 139 -
vendor/themes/esensi/partials/not_found.php | 9 -
.../esensi/partials/pembangunan/detail.php | 113 -
.../esensi/partials/pembangunan/index.php | 118 -
.../esensi/partials/pemerintah/index.php | 49 -
.../esensi/partials/pengaduan/index.php | 271 --
.../esensi/partials/peraturan/index.php | 108 -
.../peta/components/aparatur_desa.php | 56 -
.../partials/peta/components/apbdes.php | 35 -
.../partials/peta/components/content_desa.php | 39 -
.../peta/components/content_dusun.php | 43 -
.../partials/peta/components/content_rt.php | 44 -
.../partials/peta/components/content_rw.php | 45 -
vendor/themes/esensi/partials/peta/index.php | 298 --
vendor/themes/esensi/partials/sdgs/index.php | 40 -
vendor/themes/esensi/partials/sidebar.php | 31 -
vendor/themes/esensi/partials/slider.php | 29 -
vendor/themes/esensi/partials/sotk/index.php | 16 -
.../esensi/partials/statistics/analisis.php | 87 -
.../esensi/partials/statistics/default.php | 147 -
.../esensi/partials/statistics/index.html | 10 -
.../esensi/partials/statistics/regions.php | 100 -
.../esensi/partials/statistics/sidenav.php | 63 -
.../esensi/partials/statistics/voters.php | 49 -
vendor/themes/esensi/partials/sub_gallery.php | 32 -
vendor/themes/esensi/partials/suplement.php | 81 -
vendor/themes/esensi/partials/surat/index.php | 82 -
.../themes/esensi/partials/vaksin/index.php | 102 -
vendor/themes/esensi/template.php | 21 -
vendor/themes/esensi/widgets/agenda.php | 112 -
.../themes/esensi/widgets/aparatur_desa.php | 40 -
.../themes/esensi/widgets/arsip_artikel.php | 50 -
vendor/themes/esensi/widgets/galeri.php | 18 -
vendor/themes/esensi/widgets/index.html | 10 -
vendor/themes/esensi/widgets/jam_kerja.php | 35 -
vendor/themes/esensi/widgets/keuangan.php | 381 ---
vendor/themes/esensi/widgets/komentar.php | 21 -
vendor/themes/esensi/widgets/media_sosial.php | 16 -
.../themes/esensi/widgets/menu_kategori.php | 22 -
.../esensi/widgets/peta_lokasi_kantor.php | 105 -
.../esensi/widgets/peta_wilayah_desa.php | 51 -
.../themes/esensi/widgets/sinergi_program.php | 73 -
vendor/themes/esensi/widgets/statistik.php | 80 -
.../esensi/widgets/statistik_pengunjung.php | 24 -
vendor/themes/natra/commons/index.html | 10 -
vendor/themes/natra/commons/meta.php | 172 --
vendor/themes/natra/commons/meta_footer.php | 20 -
vendor/themes/natra/commons/not_found.php | 14 -
vendor/themes/natra/commons/page.php | 24 -
vendor/themes/natra/commons/share.php | 10 -
vendor/themes/natra/commons/style.php | 250 --
vendor/themes/natra/index.html | 10 -
vendor/themes/natra/layouts/analisis.tpl.php | 101 -
vendor/themes/natra/layouts/arsip.tpl.php | 39 -
vendor/themes/natra/layouts/artikel.tpl.php | 60 -
vendor/themes/natra/layouts/embed.tpl.php | 75 -
.../themes/natra/layouts/full_content.tpl.php | 39 -
vendor/themes/natra/layouts/gallery.tpl.php | 44 -
.../natra/layouts/halaman_statis.tpl.php | 49 -
.../layouts/halaman_statis_lebar.tpl.php | 51 -
vendor/themes/natra/layouts/header.php | 23 -
vendor/themes/natra/layouts/index.html | 10 -
vendor/themes/natra/layouts/kelompok.tpl.php | 45 -
vendor/themes/natra/layouts/kesehatan.tpl.php | 37 -
vendor/themes/natra/layouts/slider.php | 20 -
vendor/themes/natra/layouts/stat.tpl.php | 51 -
.../themes/natra/layouts/sub_gallery.tpl.php | 43 -
vendor/themes/natra/layouts/suplemen.tpl.php | 43 -
vendor/themes/natra/layouts/teks_berjalan.php | 10 -
vendor/themes/natra/partials/analisis.php | 99 -
vendor/themes/natra/partials/apbdesa-tema.php | 49 -
vendor/themes/natra/partials/arsip.php | 63 -
vendor/themes/natra/partials/artikel.php | 168 --
.../natra/partials/bottom_content_left.php | 112 -
.../natra/partials/bottom_content_right.php | 44 -
vendor/themes/natra/partials/corona-local.php | 36 -
vendor/themes/natra/partials/dpt.php | 48 -
vendor/themes/natra/partials/feed.php | 38 -
.../themes/natra/partials/footer_bottom.php | 34 -
vendor/themes/natra/partials/footer_top.php | 59 -
vendor/themes/natra/partials/gallery.php | 44 -
vendor/themes/natra/partials/header.php | 35 -
vendor/themes/natra/partials/header2.php | 79 -
vendor/themes/natra/partials/idm/index.html | 10 -
vendor/themes/natra/partials/idm/index.php | 234 --
vendor/themes/natra/partials/index.html | 10 -
.../natra/partials/informasi_publik.php | 46 -
.../natra/partials/informasi_publik/index.php | 83 -
.../natra/partials/inventaris/asset.php | 42 -
.../natra/partials/inventaris/gedung.php | 51 -
.../natra/partials/inventaris/index.php | 196 --
.../natra/partials/inventaris/jalan.php | 53 -
.../natra/partials/inventaris/konstruksi.php | 51 -
.../natra/partials/inventaris/peralatan.php | 49 -
.../natra/partials/inventaris/script.php | 28 -
.../natra/partials/inventaris/tanah.php | 46 -
vendor/themes/natra/partials/kelompok.php | 128 -
.../kesehatan/chart_stunting_posyandu.php | 27 -
.../kesehatan/chart_stunting_umur.php | 48 -
.../themes/natra/partials/kesehatan/index.php | 51 -
.../natra/partials/kesehatan/scorecard.php | 422 ---
.../natra/partials/kesehatan/widget.php | 23 -
vendor/themes/natra/partials/komentar.php | 63 -
vendor/themes/natra/partials/lapak/index.html | 10 -
vendor/themes/natra/partials/lapak/index.php | 144 -
vendor/themes/natra/partials/not_found.php | 11 -
.../natra/partials/pembangunan/detail.php | 134 -
.../natra/partials/pembangunan/index.html | 10 -
.../natra/partials/pembangunan/index.php | 59 -
.../natra/partials/pemerintah/index.html | 10 -
.../natra/partials/pemerintah/index.php | 81 -
.../natra/partials/pengaduan/index.html | 10 -
.../themes/natra/partials/pengaduan/index.php | 579 ----
.../natra/partials/peraturan/index.html | 10 -
.../themes/natra/partials/peraturan/index.php | 107 -
.../peta/components/aparatur_desa.php | 56 -
.../natra/partials/peta/components/apbdes.php | 35 -
.../partials/peta/components/content_desa.php | 39 -
.../peta/components/content_dusun.php | 43 -
.../partials/peta/components/content_rt.php | 44 -
.../partials/peta/components/content_rw.php | 45 -
vendor/themes/natra/partials/peta/index.php | 298 --
vendor/themes/natra/partials/sdgs/index.html | 10 -
vendor/themes/natra/partials/sdgs/index.php | 98 -
vendor/themes/natra/partials/sotk/index.php | 13 -
vendor/themes/natra/partials/statistik.php | 330 ---
.../themes/natra/partials/statistik_sos.php | 125 -
vendor/themes/natra/partials/sub_gallery.php | 41 -
vendor/themes/natra/partials/suplemen.php | 88 -
vendor/themes/natra/partials/surat/index.html | 10 -
vendor/themes/natra/partials/surat/index.php | 76 -
.../themes/natra/partials/vaksin/index.html | 10 -
vendor/themes/natra/partials/vaksin/index.php | 95 -
vendor/themes/natra/partials/wilayah.php | 96 -
vendor/themes/natra/template.php | 38 -
vendor/themes/natra/widgets/agenda.php | 121 -
vendor/themes/natra/widgets/aparatur_desa.php | 51 -
vendor/themes/natra/widgets/arsip_artikel.php | 39 -
vendor/themes/natra/widgets/galeri.php | 16 -
vendor/themes/natra/widgets/index.html | 10 -
vendor/themes/natra/widgets/jadwal_sholat.php | 62 -
vendor/themes/natra/widgets/jam_kerja.php | 39 -
vendor/themes/natra/widgets/keuangan.php | 401 ---
vendor/themes/natra/widgets/komentar.php | 33 -
vendor/themes/natra/widgets/media_sosial.php | 14 -
vendor/themes/natra/widgets/menu_kategori.php | 21 -
.../natra/widgets/peta_lokasi_kantor.php | 122 -
.../natra/widgets/peta_wilayah_desa.php | 52 -
.../themes/natra/widgets/sinergi_program.php | 76 -
vendor/themes/natra/widgets/statistik.php | 67 -
.../natra/widgets/statistik_pengunjung.php | 35 -
.../css-to-inline-styles/composer.json | 10 +-
.../src/Css/Processor.php | 10 +-
.../src/Css/Property/Processor.php | 8 +-
.../src/Css/Property/Property.php | 6 +-
.../src/Css/Rule/Processor.php | 18 +-
.../src/CssToInlineStyles.php | 47 +-
2308 files changed, 168108 insertions(+), 44557 deletions(-)
rename donjo-app/views/nav.php => Modules/Analisis/Config/config.php (85%)
rename donjo-app/views/inventaris/laporan/inventaris_excel.php => Modules/Anjungan/Config/config.php (77%)
create mode 100644 Modules/Anjungan/Views/assets/css/custom/screen.css
create mode 100644 Modules/Anjungan/Views/assets/css/custom/style.css
rename donjo-app/views/inventaris/laporan/inventaris_excel_mutasi.php => Modules/BukuTamu/Config/config.php (77%)
create mode 100644 Modules/BukuTamu/Database/.gitkeep
create mode 100644 Modules/BukuTamu/Database/Migrations/2024_12_19_011545_create_akses_modul.php
create mode 100644 Modules/BukuTamu/Database/Migrations/2024_12_19_234716_create_table_buku_keperluan_table.php
create mode 100644 Modules/BukuTamu/Database/Migrations/2024_12_19_234827_create_table_buku_kepuasan_table.php
create mode 100644 Modules/BukuTamu/Database/Migrations/2024_12_19_234944_create_table_buku_pertanyaan_table.php
create mode 100644 Modules/BukuTamu/Database/Migrations/2024_12_20_005059_create_table_buku_tamu_table.php
create mode 100644 Modules/BukuTamu/Database/Seeders/BukuTamuSeeder.php
create mode 100644 Modules/BukuTamu/Database/Seeders/ModulSeeder.php
create mode 100644 Modules/BukuTamu/Database/Seeders/SettingSeeder.php
rename {vendor/themes/esensi/assets/css => Modules/BukuTamu/Database}/index.html (100%)
rename Modules/Kehadiran/Config/{app.php => config.php} (88%)
create mode 100644 Modules/Kehadiran/Database/Migrations/2024_12_20_031434_create_akses_modul.php
rename donjo-app/controllers/buku_umum/Bumindes_umum.php => Modules/Kehadiran/Database/Migrations/2024_12_20_045742_create_kehadiran_jam_kerja_table.php (72%)
create mode 100644 Modules/Kehadiran/Database/Migrations/2024_12_20_045747_create_kehadiran_hari_libur_table.php
create mode 100644 Modules/Kehadiran/Database/Migrations/2024_12_20_045748_create_kehadiran_alasan_keluar_table.php
create mode 100644 Modules/Kehadiran/Database/Migrations/2024_12_20_045750_create_kehadiran_perangkat_desa_table.php
create mode 100644 Modules/Kehadiran/Database/Migrations/2024_12_20_045751_create_kehadiran_pengaduan_table.php
create mode 100644 Modules/Kehadiran/Database/Seeders/KehadiranSeeder.php
create mode 100644 Modules/Kehadiran/Database/Seeders/ModulSeeder.php
create mode 100644 Modules/Kehadiran/Database/Seeders/SettingSeeder.php
create mode 100644 Modules/Lapak/Config/config.php
rename donjo-app/libraries/Feed_Reader.php => Modules/Lapak/Config/shortcut.php (69%)
rename donjo-app/controllers/Lapak_pelapak_admin.php => Modules/Lapak/Http/Controllers/BackEnd/LapakAdminController.php (67%)
create mode 100644 Modules/Lapak/Http/Controllers/BackEnd/LapakKategoriAdminController.php
create mode 100644 Modules/Lapak/Http/Controllers/BackEnd/LapakPelapakAdminController.php
rename {vendor/themes/esensi/partials/idm => Modules/Lapak/Http/Controllers}/index.html (100%)
rename {vendor/themes/esensi/partials/lapak => Modules/Lapak/Http}/index.html (100%)
create mode 100644 Modules/Lapak/Models/Pelapak.php
create mode 100644 Modules/Lapak/Models/Produk.php
rename {app => Modules/Lapak}/Models/ProdukKategori.php (76%)
rename {vendor/themes/esensi/partials/pembangunan => Modules/Lapak/Models}/index.html (100%)
rename donjo-app/libraries/Reset/Interface/Password_reset_interface.php => Modules/Lapak/Providers/LapakServiceProvider.php (55%)
rename {vendor/themes/esensi/partials/pemerintah => Modules/Lapak/Routes}/index.html (100%)
create mode 100644 Modules/Lapak/Routes/web.php
rename {resources/views/admin/lapak => Modules/Lapak/Views/backend}/kategori/cetak.blade.php (100%)
rename {resources/views/admin/lapak => Modules/Lapak/Views/backend}/kategori/form.blade.php (100%)
rename {resources/views/admin/lapak => Modules/Lapak/Views/backend}/kategori/index.blade.php (99%)
rename {resources/views/admin/lapak => Modules/Lapak/Views/backend}/navigasi.blade.php (100%)
rename {resources/views/admin/lapak => Modules/Lapak/Views/backend}/pelapak/cetak.blade.php (100%)
rename {resources/views/admin/lapak => Modules/Lapak/Views/backend}/pelapak/form.blade.php (100%)
rename {resources/views/admin/lapak => Modules/Lapak/Views/backend}/pelapak/index.blade.php (99%)
rename {resources/views/admin/lapak => Modules/Lapak/Views/backend}/pelapak/maps.blade.php (100%)
rename {resources/views/admin/lapak => Modules/Lapak/Views/backend}/produk/cetak.blade.php (100%)
rename {resources/views/admin/lapak => Modules/Lapak/Views/backend}/produk/detail.blade.php (100%)
rename {resources/views/admin/lapak => Modules/Lapak/Views/backend}/produk/form.blade.php (97%)
rename {resources/views/admin/lapak => Modules/Lapak/Views/backend}/produk/index.blade.php (86%)
create mode 100644 Modules/Lapak/composer.json
rename {vendor/themes/esensi/partials/pengaduan => Modules/Lapak}/index.html (100%)
create mode 100644 Modules/Lapak/module.json
create mode 100644 app/Console/Commands/Modules/MigrationMakeCommand.php
create mode 100644 app/Console/Commands/Modules/SeedMakeCommand.php
create mode 100644 app/Console/Commands/Modules/Stubs/migration.stub
create mode 100644 app/Console/Commands/Modules/Stubs/seed.stub
create mode 100644 app/Enums/BidangBelanjaEnum.php
create mode 100644 app/Enums/KategoriDokumenPeraturanEnum.php
create mode 100644 app/Enums/KategoriPublikEnum.php
create mode 100644 app/Enums/KeuanganRefRek1Enum.php
create mode 100644 app/Events/CodeIgniterEvent.php
create mode 100644 app/Http/Transformers/AnalisisIndikatorTransformer.php
create mode 100644 app/Http/Transformers/AnalisisJumlahJawabanTransformer.php
create mode 100644 app/Http/Transformers/AnalisisMasterTransformer.php
create mode 100644 app/Http/Transformers/ArtikelTransformer.php
create mode 100644 app/Http/Transformers/BantuanPesertaTransformer.php
rename app/{Models/Pelapak.php => Http/Transformers/DptTransformer.php} (73%)
create mode 100644 app/Http/Transformers/GaleriTransformer.php
create mode 100644 app/Http/Transformers/IdmTransformer.php
create mode 100644 app/Http/Transformers/InformasiPublikTransformer.php
create mode 100644 app/Http/Transformers/InventarisAssetTransformer.php
create mode 100644 app/Http/Transformers/InventarisGedungTransformer.php
create mode 100644 app/Http/Transformers/InventarisJalanTransformer.php
create mode 100644 app/Http/Transformers/InventarisKontruksiTransformer.php
create mode 100644 app/Http/Transformers/InventarisPeralatanTransformer.php
create mode 100644 app/Http/Transformers/InventarisTanahTransformer.php
create mode 100644 app/Http/Transformers/InventarisTransformer.php
create mode 100644 app/Http/Transformers/KategoriProdukHukumTransformer.php
create mode 100644 app/Http/Transformers/KelompokAnggotaTransformer.php
create mode 100644 app/Http/Transformers/KelompokTransformer.php
create mode 100644 app/Http/Transformers/LapakKategoriTransformer.php
create mode 100644 app/Http/Transformers/LapakPelapakTransformer.php
create mode 100644 app/Http/Transformers/LapakProdukTransformer.php
create mode 100644 app/Http/Transformers/LogSuratDinasVerifikasiTransformer.php
create mode 100644 app/Http/Transformers/LogSuratVerifikasiTransformer.php
create mode 100644 app/Http/Transformers/PembangunanTransformer.php
create mode 100644 app/Http/Transformers/PemerintahTransformer.php
create mode 100644 app/Http/Transformers/PengaduanTransformer.php
create mode 100644 app/Http/Transformers/PetaTransformer.php
create mode 100644 app/Http/Transformers/ProdukHukumTransformer.php
create mode 100644 app/Http/Transformers/SdgsTransformer.php
create mode 100644 app/Http/Transformers/StatistikTransformer.php
create mode 100644 app/Http/Transformers/StuntingTransformer.php
create mode 100644 app/Http/Transformers/SuplemenTerdataTransformer.php
rename donjo-app/controllers/fweb/Vaksin.php => app/Http/Transformers/SuplemenTransformer.php (80%)
create mode 100644 app/Http/Transformers/WilayahTransformer.php
create mode 100644 app/Libraries/FeedParser.php
create mode 100644 app/Libraries/FeedReader.php
create mode 100644 app/Libraries/JobProses.php
create mode 100644 app/Libraries/Keuangan.php
create mode 100644 app/Libraries/MyException.php
create mode 100644 app/Libraries/OTP/AbstractManager.php
create mode 100644 app/Libraries/OTP/Interface/OtpInterface.php
create mode 100644 app/Libraries/OTP/OtpManager.php
create mode 100644 app/Libraries/OTP/Repository/OtpEmail.php
create mode 100644 app/Libraries/OTP/Repository/OtpTelegram.php
create mode 100644 app/Libraries/Paging.php
rename donjo-app/controllers/fweb/Informasi_publik.php => app/Libraries/Reset/Email/EmailRepository.php (71%)
create mode 100644 app/Libraries/Reset/Interface/PasswordInterface.php
create mode 100644 app/Libraries/Reset/Interface/PasswordResetInterface.php
create mode 100644 app/Libraries/Reset/Password.php
create mode 100644 app/Libraries/Reset/PasswordRepository.php
create mode 100644 app/Libraries/Saas.php
rename donjo-app/controllers/Lapak_admin.php => app/Libraries/Shortcode.php (67%)
create mode 100644 app/Libraries/SpreadsheetExcelReader.php
rename donjo-app/controllers/Keuangan.php => app/Libraries/UserAgent.php (61%)
create mode 100644 app/Listeners/CodeIgniterListener.php
create mode 100644 app/Mail/GenericMail.php
create mode 100644 app/Mail/NewPinMail.php
create mode 100644 app/Mail/ResetPasswordMail.php
create mode 100644 app/Mail/VerificationMail.php
create mode 100644 app/Mail/VerificationSuccessMail.php
create mode 100644 app/Mail/VerifyMail.php
create mode 100644 app/Models/Keuangan.php
create mode 100644 app/Models/KeuanganManualRefBidang.php
create mode 100644 app/Models/KeuanganManualRefRek2.php
create mode 100644 app/Models/KeuanganManualRefRek3.php
create mode 100644 app/Models/KeuanganTemplate.php
delete mode 100644 app/Models/Produk.php
create mode 100644 app/Models/Statistics.php
create mode 100644 app/Providers/JsonApiPaginateServiceProvider.php
create mode 100644 app/Repositories/AnalisisRepository.php
create mode 100644 app/Repositories/ArtikelRepository.php
create mode 100644 app/Repositories/BantuanPesertaRepository.php
create mode 100644 app/Repositories/DptRepository.php
create mode 100644 app/Repositories/GaleriRepository.php
create mode 100644 app/Repositories/InformasiPublikRepository.php
create mode 100644 app/Repositories/InventarisAssetRepository.php
create mode 100644 app/Repositories/InventarisGedungRepository.php
create mode 100644 app/Repositories/InventarisJalanRepository.php
create mode 100644 app/Repositories/InventarisKontruksiRepository.php
create mode 100644 app/Repositories/InventarisPeralatanRepository.php
create mode 100644 app/Repositories/InventarisTanahRepository.php
create mode 100644 app/Repositories/KelompokRepository.php
create mode 100644 app/Repositories/LapakKategoriRepository.php
create mode 100644 app/Repositories/LapakPelapakRepository.php
create mode 100644 app/Repositories/LapakProdukRepository.php
create mode 100644 app/Repositories/LembagaRepository.php
create mode 100644 app/Repositories/LogSuratDinasRepository.php
create mode 100644 app/Repositories/LogSuratRepository.php
create mode 100644 app/Repositories/PembangunanRepository.php
create mode 100644 app/Repositories/PemerintahRepository.php
create mode 100644 app/Repositories/PengaduanRepository.php
create mode 100644 app/Repositories/PetaRepository.php
create mode 100644 app/Repositories/ProdukHukumRepository.php
create mode 100644 app/Repositories/StatistikRepository.php
create mode 100644 app/Repositories/StuntingRepository.php
create mode 100644 app/Repositories/SuplemenRepository.php
create mode 100644 app/Repositories/SuplemenTerdataRepository.php
create mode 100644 app/Repositories/WilayahRepository.php
create mode 100644 app/Services/CreateSymlinkModule.php
create mode 100644 app/Services/CreateSymlinkTheme.php
create mode 100644 assets/images/back_button.png
rename Dockerfile => bin/Dockerfile (100%)
rename docker-compose.yml => bin/docker-compose.yml (100%)
create mode 100644 config/fractal.php
create mode 100644 config/json-api-paginate.php
create mode 100644 config/user_agents.php
create mode 100644 donjo-app/Routes/Web/frontend.php
rename donjo-app/{libraries/Reset/Password.php => Routes/Web/install.php} (64%)
create mode 100644 donjo-app/controllers/Keuangan_laporan.php
delete mode 100644 donjo-app/controllers/Siteman.php
create mode 100644 donjo-app/controllers/Stunting_rekapitulasi.php
create mode 100644 donjo-app/controllers/fweb/Analisis.php
create mode 100644 donjo-app/controllers/fweb/Arsip.php
create mode 100644 donjo-app/controllers/fweb/Artikel.php
create mode 100644 donjo-app/controllers/fweb/InformasiPublik.php
create mode 100644 donjo-app/controllers/fweb/Utama.php
create mode 100644 donjo-app/controllers/fweb/WilayahAdministratif.php
create mode 100644 donjo-app/controllers/internal_api/Analisis.php
create mode 100644 donjo-app/controllers/internal_api/Artikel.php
create mode 100644 donjo-app/controllers/internal_api/BantuanPeserta.php
create mode 100644 donjo-app/controllers/internal_api/Dpt.php
create mode 100644 donjo-app/controllers/internal_api/Galeri.php
create mode 100644 donjo-app/controllers/internal_api/Idm.php
create mode 100644 donjo-app/controllers/internal_api/InformasiPublik.php
create mode 100644 donjo-app/controllers/internal_api/Inventaris.php
create mode 100644 donjo-app/controllers/internal_api/InventarisAsset.php
create mode 100644 donjo-app/controllers/internal_api/InventarisGedung.php
create mode 100644 donjo-app/controllers/internal_api/InventarisJalan.php
create mode 100644 donjo-app/controllers/internal_api/InventarisKontruksi.php
create mode 100644 donjo-app/controllers/internal_api/InventarisPeralatan.php
create mode 100644 donjo-app/controllers/internal_api/InventarisTanah.php
create mode 100644 donjo-app/controllers/internal_api/Kelompok.php
create mode 100644 donjo-app/controllers/internal_api/Lapak.php
create mode 100644 donjo-app/controllers/internal_api/Lembaga.php
create mode 100644 donjo-app/controllers/internal_api/LogSurat.php
rename donjo-app/controllers/{Lapak_kategori_admin.php => internal_api/LogSuratDinas.php} (73%)
create mode 100644 donjo-app/controllers/internal_api/Pembangunan.php
create mode 100644 donjo-app/controllers/internal_api/Pemerintah.php
create mode 100644 donjo-app/controllers/internal_api/Pengaduan.php
create mode 100644 donjo-app/controllers/internal_api/Peta.php
create mode 100644 donjo-app/controllers/internal_api/ProdukHukum.php
create mode 100644 donjo-app/controllers/internal_api/Sdgs.php
create mode 100644 donjo-app/controllers/internal_api/Statistik.php
create mode 100644 donjo-app/controllers/internal_api/Stunting.php
delete mode 100644 donjo-app/libraries/Cache/MY_Cache.php
delete mode 100644 donjo-app/libraries/FeedParser.php
delete mode 100644 donjo-app/libraries/Job_prosess.php
delete mode 100644 donjo-app/libraries/MY_Email.php
delete mode 100644 donjo-app/libraries/MY_Form_validation.php
delete mode 100644 donjo-app/libraries/MY_Upload.php
delete mode 100644 donjo-app/libraries/MyException.php
delete mode 100644 donjo-app/libraries/OTP/Abstract_manager.php
delete mode 100644 donjo-app/libraries/OTP/Interface/OTP_interface.php
delete mode 100644 donjo-app/libraries/OTP/OTP_manager.php
delete mode 100644 donjo-app/libraries/OTP/Repository/OTP_email.php
delete mode 100644 donjo-app/libraries/OTP/Repository/OTP_telegram.php
delete mode 100644 donjo-app/libraries/Paging.php
delete mode 100644 donjo-app/libraries/Reset/Email/Email_repository.php
delete mode 100644 donjo-app/libraries/Reset/Interface/Password_interface.php
delete mode 100644 donjo-app/libraries/Reset/Password_repository.php
delete mode 100644 donjo-app/libraries/Saas.php
delete mode 100644 donjo-app/libraries/Spreadsheet_Excel_Reader.php
delete mode 100644 donjo-app/libraries/Telegram/Exceptions/CouldNotSendNotification.php
delete mode 100644 donjo-app/libraries/Telegram/Telegram.php
delete mode 100644 donjo-app/models/Keuangan_grafik_dd_model.php
delete mode 100644 donjo-app/models/Shortcode_model.php
delete mode 100644 donjo-app/models/migrations/Migrasi_2024121851.php
create mode 100644 donjo-app/models/migrations/Migrasi_2025010171.php
delete mode 100644 donjo-app/views/autentikasi/notifikasi_lupa_sandi.php
delete mode 100644 donjo-app/views/autentikasi/notifikasi_verifikasi_email.php
delete mode 100644 donjo-app/views/bagan/bagan_sisip.php
delete mode 100644 donjo-app/views/bagan/chart_bagan.php
delete mode 100644 donjo-app/views/feed.php
delete mode 100644 donjo-app/views/fmandiri/buat_surat.php
delete mode 100644 donjo-app/views/fmandiri/dokumen/form.php
delete mode 100644 donjo-app/views/fmandiri/dokumen/index.php
delete mode 100644 donjo-app/views/fmandiri/email/kirim-pin.php
delete mode 100644 donjo-app/views/fmandiri/email/verifikasi-berhasil.php
delete mode 100644 donjo-app/views/fmandiri/email/verifikasi.php
delete mode 100644 donjo-app/views/fmandiri/lupa_pin.php
delete mode 100644 donjo-app/views/fmandiri/masuk.php
delete mode 100644 donjo-app/views/fmandiri/notif.php
delete mode 100644 donjo-app/views/fmandiri/notifikasi.php
delete mode 100644 donjo-app/views/fmandiri/pendaftaran-verifikasi.php
delete mode 100644 donjo-app/views/fmandiri/pendaftaran.php
delete mode 100644 donjo-app/views/fmandiri/pendapat.php
delete mode 100644 donjo-app/views/fmandiri/permohonan_surat.php
delete mode 100644 donjo-app/views/fmandiri/permohonan_surat_tinymce.php
delete mode 100644 donjo-app/views/fmandiri/pilihan_syarat.php
delete mode 100644 donjo-app/views/fmandiri/surat.php
delete mode 100644 donjo-app/views/fmandiri/template.php
delete mode 100644 donjo-app/views/fmandiri/verifikasi.php
delete mode 100644 donjo-app/views/footer.php
delete mode 100644 donjo-app/views/gis/aparatur_desa.php
delete mode 100644 donjo-app/views/gis/aparatur_wilayah.php
delete mode 100644 donjo-app/views/gis/cetak_peta.php
delete mode 100644 donjo-app/views/gis/penduduk_gis.php
delete mode 100644 donjo-app/views/global/aktifkan_cookie.php
delete mode 100644 donjo-app/views/global/ambil_foto.php
delete mode 100644 donjo-app/views/global/blok_ttd_pamong.php
delete mode 100644 donjo-app/views/global/capture.php
delete mode 100644 donjo-app/views/global/cetak_box.php
delete mode 100644 donjo-app/views/global/filter_wilayah.php
delete mode 100644 donjo-app/views/global/konfirmasi.php
delete mode 100644 donjo-app/views/global/konfirmasi_cookie.php
delete mode 100644 donjo-app/views/global/modal_setting.php
delete mode 100644 donjo-app/views/global/sinkronisasi_notif.php
delete mode 100644 donjo-app/views/global/sinkronisasi_notif_ajax.php
delete mode 100644 donjo-app/views/global/tampilkan.php
delete mode 100644 donjo-app/views/global/ttd_pamong.php
delete mode 100644 donjo-app/views/head_surat.php
delete mode 100644 donjo-app/views/header.php
delete mode 100644 donjo-app/views/import/ppls.php
delete mode 100644 donjo-app/views/inventaris/dialog_cetak.php
delete mode 100644 donjo-app/views/inventaris/inventaris_global_dialog_cetak.php
delete mode 100644 donjo-app/views/inventaris/inventaris_global_dialog_unduh.php
delete mode 100644 donjo-app/views/inventaris/js_mutasi.php
delete mode 100644 donjo-app/views/inventaris/laporan/inventaris_print.php
delete mode 100644 donjo-app/views/inventaris/laporan/inventaris_print_mutasi.php
delete mode 100644 donjo-app/views/inventaris/laporan/table.php
delete mode 100644 donjo-app/views/inventaris/laporan/table_mutasi.php
delete mode 100644 donjo-app/views/inventaris/menu_kiri.php
delete mode 100644 donjo-app/views/keuangan/filter_laporan.php
delete mode 100644 donjo-app/views/keuangan/filter_laporan_manual.php
delete mode 100644 donjo-app/views/keuangan/grafik_rp_apbd.php
delete mode 100644 donjo-app/views/keuangan/grafik_rp_apbd_dd.php
delete mode 100644 donjo-app/views/keuangan/grafik_rp_apbd_manual.php
delete mode 100644 donjo-app/views/keuangan/impor_data.php
delete mode 100644 donjo-app/views/keuangan/manual_apbdes.php
delete mode 100644 donjo-app/views/keuangan/menu_laporan.php
delete mode 100644 donjo-app/views/keuangan/menu_laporan_manual.php
delete mode 100644 donjo-app/views/keuangan/pilih_desa.php
delete mode 100644 donjo-app/views/keuangan/rincian_realisasi.php
delete mode 100644 donjo-app/views/keuangan/rincian_realisasi_dd.php
delete mode 100644 donjo-app/views/keuangan/rincian_realisasi_manual.php
delete mode 100644 donjo-app/views/keuangan/tabel_laporan_rp_apbd.php
delete mode 100644 donjo-app/views/keuangan/tabel_laporan_rp_apbd_artikel_dd.php
delete mode 100644 donjo-app/views/keuangan/tabel_laporan_rp_apbd_dd.php
delete mode 100644 donjo-app/views/keuangan/tabel_laporan_rp_apbd_manual.php
delete mode 100644 donjo-app/views/lupa_sandi.php
delete mode 100644 donjo-app/views/mandiri/periksa_surat.php
delete mode 100644 donjo-app/views/notif/pengumuman.php
delete mode 100644 donjo-app/views/reset_kata_sandi.php
delete mode 100644 donjo-app/views/setting/modal_form.php
delete mode 100644 donjo-app/views/siteman.php
delete mode 100644 donjo-app/views/sitemap.php
delete mode 100644 donjo-app/views/statistik/ajax_daftar.php
delete mode 100644 donjo-app/views/statistik/dpt.php
delete mode 100644 donjo-app/views/statistik/penduduk.php
delete mode 100644 donjo-app/views/statistik/penduduk_cetak.php
delete mode 100644 donjo-app/views/statistik/penduduk_grafik_web.php
delete mode 100644 donjo-app/views/statistik/peserta_bantuan.php
delete mode 100644 donjo-app/views/surat/ajax_cetak.php
delete mode 100644 donjo-app/views/surat/ajax_edit_keterangan.php
delete mode 100644 donjo-app/views/surat/cetak.php
delete mode 100644 donjo-app/views/surat/form/_cari_nik.php
delete mode 100644 donjo-app/views/surat/form/_pamong.php
delete mode 100644 donjo-app/views/surat/form/breadcrumb.php
delete mode 100644 donjo-app/views/surat/form/kode_isian.php
delete mode 100644 donjo-app/views/surat/form/konfirmasi_pemohon.php
delete mode 100644 donjo-app/views/surat/form/konfirmasi_permohonan.php
delete mode 100644 donjo-app/views/surat/form/nomor_surat.php
delete mode 100644 donjo-app/views/surat/form/tampil_foto.php
delete mode 100644 donjo-app/views/surat/form/tgl_berlaku.php
delete mode 100644 donjo-app/views/surat/form/tombol_cetak.php
delete mode 100644 donjo-app/views/surat/form_surat_tinymce.php
delete mode 100644 donjo-app/views/surat/qrcode.php
delete mode 100644 donjo-app/views/surat/surat_keluar_graph.php
create mode 100644 resources/views/admin/auth/notifikasi_lupa_sandi.blade.php
delete mode 100644 resources/views/admin/auth/notifikasi_lupa_sandi.php
create mode 100644 resources/views/admin/auth/notifikasi_verifikasi_email.blade.php
create mode 100644 resources/views/admin/database/ajax_sinkronkan.blade.php
create mode 100644 resources/views/admin/keuangan/confirmation.blade.php
create mode 100644 resources/views/admin/keuangan/form.blade.php
create mode 100644 resources/views/admin/keuangan/form_update.blade.php
create mode 100644 resources/views/admin/keuangan/impor_data.blade.php
create mode 100644 resources/views/admin/keuangan/index.blade.php
create mode 100644 resources/views/admin/keuangan/laporan/apbd.blade.php
create mode 100644 resources/views/admin/keuangan/laporan/apbd_isi.blade.php
create mode 100644 resources/views/admin/keuangan/laporan/grafik_rp_apbd_chart.blade.php
rename {donjo-app/views/keuangan => resources/views/admin/keuangan/laporan}/grafik_rp_apbd_chart.php (100%)
create mode 100644 resources/views/admin/keuangan/laporan/grafik_rp_apbd_manual.blade.php
create mode 100644 resources/views/admin/keuangan/laporan/menu.blade.php
create mode 100644 resources/views/admin/keuangan/laporan/realisasi.blade.php
create mode 100644 resources/views/admin/keuangan/laporan/tabel_laporan_rp_apbd_artikel.blade.php
rename {donjo-app/views/keuangan => resources/views/admin/keuangan/laporan}/tabel_laporan_rp_apbd_artikel.php (83%)
create mode 100644 resources/views/admin/keuangan/laporan/tabel_laporan_rp_apbd_isi.blade.php
rename {donjo-app/views/keuangan => resources/views/admin/keuangan/laporan}/tabel_laporan_rp_apbd_isi.php (96%)
create mode 100644 resources/views/admin/layouts/components/tampilkan.blade.php
create mode 100644 resources/views/admin/layouts/components/tombol_cetak.blade.php
create mode 100644 resources/views/admin/pengurus/bagan_sisip.blade.php
create mode 100644 resources/views/admin/pengurus/chart_bagan_sotk.blade.php
create mode 100644 resources/views/admin/permohonan_surat/form_surat_tinymce.blade.php
create mode 100644 resources/views/admin/permohonan_surat/konfirmasi_pemohon.blade.php
create mode 100644 resources/views/admin/permohonan_surat/konfirmasi_permohonan.blade.php
create mode 100644 resources/views/admin/permohonan_surat/periksa_surat.blade.php
create mode 100644 resources/views/admin/stunting/filter.blade.php
create mode 100644 resources/views/admin/stunting/rekapitulasi-bulanan-balita.blade.php
create mode 100644 resources/views/email/kirim-pin.blade.php
create mode 100644 resources/views/email/template.blade.php
create mode 100644 resources/views/email/verifikasi-berhasil.blade.php
create mode 100644 resources/views/email/verifikasi.blade.php
create mode 100644 resources/views/web/gis/aparatur_desa.blade.php
create mode 100644 resources/views/web/gis/aparatur_wilayah.blade.php
create mode 100644 resources/views/web/gis/apbdes_web.blade.php
create mode 100644 resources/views/web/gis/penduduk_gis.blade.php
rename {vendor => storage/app}/themes/esensi/assets/css/custom.css (100%)
rename {vendor/themes/esensi/partials/sdgs => storage/app/themes/esensi/assets/css}/index.html (100%)
rename {vendor => storage/app}/themes/esensi/assets/css/style-mt.css (100%)
rename {vendor => storage/app}/themes/esensi/assets/css/style.css (100%)
rename {vendor => storage/app}/themes/esensi/assets/css/style.min.css (100%)
rename {vendor => storage/app}/themes/esensi/assets/css/style.min.css.map (100%)
rename {vendor => storage/app}/themes/esensi/assets/images/empty.svg (100%)
rename {vendor => storage/app}/themes/esensi/assets/images/header-bg.jpg (100%)
rename {vendor => storage/app}/themes/esensi/assets/images/index.html (100%)
rename {vendor => storage/app}/themes/esensi/assets/index.html (100%)
create mode 100644 storage/app/themes/esensi/assets/js/helper.js
rename {vendor => storage/app}/themes/esensi/assets/js/index.html (100%)
create mode 100644 storage/app/themes/esensi/assets/js/pagination.js
create mode 100644 storage/app/themes/esensi/assets/js/script.js
create mode 100644 storage/app/themes/esensi/assets/js/script.min.js
rename {vendor => storage/app}/themes/esensi/assets/js/script.min.js.map (100%)
rename {vendor => storage/app}/themes/esensi/assets/thumbnail/preview-1.jpg (100%)
rename {vendor => storage/app}/themes/esensi/catatan_rilis.md (100%)
rename {vendor => storage/app}/themes/esensi/composer.json (100%)
rename {vendor/themes/esensi/commons => storage/app/themes/esensi}/index.html (100%)
create mode 100644 storage/app/themes/esensi/resources/views/commons/404.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/asset_highcharts.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/asset_peta.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/asset_select2.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/asset_sweetalert.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/back_to_top.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/category_menu.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/footer.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/header.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/loading.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/loading_screen.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/main_menu.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/meta.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/mobile_menu.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/notifikasi.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/pagination-tailwind.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/pagination.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/paging.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/source_css.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/source_js.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/commons/sticky_share.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/layouts/full-content.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/layouts/left-sidebar.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/layouts/right-sidebar.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/menu_not_active.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/analisis/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/analisis/jawaban.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/apbdesa.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/arsip/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/article.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/artikel/comment.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/artikel/detail.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/artikel/empty.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/artikel/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/artikel/list.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/comment.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/dpt/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/embed/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/galeri/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/headline.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/idm/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/informasi-publik/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/inventaris/asset.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/inventaris/gedung.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/inventaris/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/inventaris/jalan.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/inventaris/konstruksi.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/inventaris/peralatan.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/inventaris/tanah.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/kelompok/detail.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/kesehatan/chart_stunting_posyandu.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/kesehatan/chart_stunting_umur.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/kesehatan/index.blade.php
rename vendor/themes/esensi/partials/kesehatan/scorecard.php => storage/app/themes/esensi/resources/views/partials/kesehatan/scorecard.blade.php (72%)
create mode 100644 storage/app/themes/esensi/resources/views/partials/kesehatan/widget_item.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/lapak/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/lembaga/detail.blade.php
rename vendor/themes/natra/layouts/maintenance.blade.php => storage/app/themes/esensi/resources/views/partials/maintenance/index.blade.php (87%)
create mode 100644 storage/app/themes/esensi/resources/views/partials/pembangunan/detail.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/pembangunan/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/pemerintah/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/pengaduan/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/peta/components/aparatur_desa.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/peta/components/apbdes.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/peta/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/produk-hukum/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/sdgs/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/sidebar.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/slider.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/sotk/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/statistik/default.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/statistik/index.blade.php
rename {vendor/themes/esensi => storage/app/themes/esensi/resources/views/partials/statistik}/index.html (100%)
create mode 100644 storage/app/themes/esensi/resources/views/partials/statistik/sidenav.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/suplemen/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/surat/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/surat_dinas/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/partials/wilayah/index.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/template.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/agenda.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/aparatur_desa.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/arsip_artikel.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/galeri.blade.php
rename {vendor/themes/esensi/layouts => storage/app/themes/esensi/resources/views/widgets}/index.html (100%)
create mode 100644 storage/app/themes/esensi/resources/views/widgets/jam_kerja.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/keuangan.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/komentar.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/media_sosial.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/menu_kategori.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/peta_lokasi_kantor.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/peta_wilayah_desa.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/sinergi_program.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/statistik.blade.php
create mode 100644 storage/app/themes/esensi/resources/views/widgets/statistik_pengunjung.blade.php
rename {vendor => storage/app}/themes/natra/assets/css/animate.css (100%)
rename {vendor => storage/app}/themes/natra/assets/css/bootstrap.min.css (100%)
rename {vendor => storage/app}/themes/natra/assets/css/custom.css (100%)
rename {vendor => storage/app}/themes/natra/assets/css/desa-web.css (100%)
rename {vendor => storage/app}/themes/natra/assets/css/font-awesome.min.css (100%)
rename {vendor => storage/app}/themes/natra/assets/css/images/icon-search.png (100%)
rename {vendor/themes/esensi/partials/surat => storage/app/themes/natra/assets/css/images}/index.html (100%)
rename {vendor => storage/app}/themes/natra/assets/css/images/slider_next.png (100%)
rename {vendor => storage/app}/themes/natra/assets/css/images/slider_prev.png (100%)
rename {vendor => storage/app}/themes/natra/assets/css/images/status.gif (100%)
rename {vendor/themes/esensi/partials/vaksin => storage/app/themes/natra/assets/css}/index.html (100%)
rename {vendor => storage/app}/themes/natra/assets/css/owl.carousel.css (100%)
rename {vendor => storage/app}/themes/natra/assets/css/slick.css (100%)
rename {vendor => storage/app}/themes/natra/assets/css/style-mt.css (100%)
rename {vendor => storage/app}/themes/natra/assets/css/style.css (100%)
rename {vendor => storage/app}/themes/natra/assets/css/style.min.css (100%)
rename {vendor => storage/app}/themes/natra/assets/css/theme.css (100%)
rename {vendor => storage/app}/themes/natra/assets/css/theme.min.css (100%)
rename {vendor => storage/app}/themes/natra/assets/fonts/FontAwesome.otf (100%)
rename {vendor => storage/app}/themes/natra/assets/fonts/Oswald-Regular-400.woff (100%)
rename {vendor => storage/app}/themes/natra/assets/fonts/fontawesome-webfont.eot (100%)
rename {vendor => storage/app}/themes/natra/assets/fonts/fontawesome-webfont.svg (100%)
rename {vendor => storage/app}/themes/natra/assets/fonts/fontawesome-webfont.ttf (100%)
rename {vendor => storage/app}/themes/natra/assets/fonts/fontawesome-webfont.woff (100%)
rename {vendor => storage/app}/themes/natra/assets/fonts/glyphicons-halflings-regular.eot (100%)
rename {vendor => storage/app}/themes/natra/assets/fonts/glyphicons-halflings-regular.svg (100%)
rename {vendor => storage/app}/themes/natra/assets/fonts/glyphicons-halflings-regular.ttf (100%)
rename {vendor => storage/app}/themes/natra/assets/fonts/glyphicons-halflings-regular.woff (100%)
rename {vendor/themes/natra/assets/css/images => storage/app/themes/natra/assets/fonts}/index.html (100%)
rename {vendor => storage/app}/themes/natra/assets/images/bg_header.jpg (100%)
rename {vendor/themes/natra/assets/css => storage/app/themes/natra/assets/images}/index.html (100%)
rename {vendor => storage/app}/themes/natra/assets/images/noimage.png (100%)
rename {vendor => storage/app}/themes/natra/assets/images/statistik_agama.png (100%)
rename {vendor => storage/app}/themes/natra/assets/images/statistik_kelamin.png (100%)
rename {vendor => storage/app}/themes/natra/assets/images/statistik_pekerjaan.png (100%)
rename {vendor => storage/app}/themes/natra/assets/images/statistik_pend.png (100%)
rename {vendor => storage/app}/themes/natra/assets/images/statistik_umur.png (100%)
rename {vendor => storage/app}/themes/natra/assets/images/statistik_wil.png (100%)
rename {vendor/themes/natra/assets/fonts => storage/app/themes/natra/assets}/index.html (100%)
rename {vendor => storage/app}/themes/natra/assets/js/bootstrap.min.js (100%)
rename {vendor => storage/app}/themes/natra/assets/js/custom.js (100%)
create mode 100644 storage/app/themes/natra/assets/js/helper.js
rename {vendor => storage/app}/themes/natra/assets/js/html5shiv.min.js (100%)
rename {vendor/themes/natra/assets/images => storage/app/themes/natra/assets/js}/index.html (100%)
rename {vendor => storage/app}/themes/natra/assets/js/jquery.min.js (100%)
create mode 100644 storage/app/themes/natra/assets/js/pagination.js
rename {vendor => storage/app}/themes/natra/assets/js/respond.min.js (100%)
rename {vendor => storage/app}/themes/natra/assets/js/slick.min.js (100%)
rename {vendor => storage/app}/themes/natra/assets/js/widget.min.js (100%)
rename {vendor => storage/app}/themes/natra/assets/js/wow.min.js (100%)
rename {vendor => storage/app}/themes/natra/assets/js/yall/yall.min.js (100%)
rename {vendor => storage/app}/themes/natra/assets/thumbnail/preview-1.jpg (100%)
rename {vendor => storage/app}/themes/natra/catatan_rilis.md (100%)
rename {vendor => storage/app}/themes/natra/composer.json (100%)
rename {vendor => storage/app}/themes/natra/config.json (100%)
rename {vendor/themes/natra/assets => storage/app/themes/natra}/index.html (100%)
create mode 100644 storage/app/themes/natra/resources/views/commons/asset_highcharts.blade.php
create mode 100644 storage/app/themes/natra/resources/views/commons/asset_peta.blade.php
create mode 100644 storage/app/themes/natra/resources/views/commons/asset_sweetalert.blade.php
create mode 100644 storage/app/themes/natra/resources/views/commons/loading.blade.php
create mode 100644 storage/app/themes/natra/resources/views/commons/meta.blade.php
create mode 100644 storage/app/themes/natra/resources/views/commons/meta_footer.blade.php
create mode 100644 storage/app/themes/natra/resources/views/commons/not_found.blade.php
create mode 100644 storage/app/themes/natra/resources/views/commons/notifikasi.blade.php
create mode 100644 storage/app/themes/natra/resources/views/commons/page.blade.php
create mode 100644 storage/app/themes/natra/resources/views/commons/pagination.blade.php
create mode 100644 storage/app/themes/natra/resources/views/commons/pagination_default.blade.php
create mode 100644 storage/app/themes/natra/resources/views/commons/share.blade.php
create mode 100644 storage/app/themes/natra/resources/views/commons/style.blade.php
create mode 100644 storage/app/themes/natra/resources/views/layouts/commons/page.blade.php
create mode 100644 storage/app/themes/natra/resources/views/layouts/full-content.blade.php
create mode 100644 storage/app/themes/natra/resources/views/layouts/left-sidebar.blade.php
create mode 100644 storage/app/themes/natra/resources/views/layouts/right-sidebar.blade.php
create mode 100644 storage/app/themes/natra/resources/views/layouts/teks_berjalan.blade.php
create mode 100644 storage/app/themes/natra/resources/views/menu_not_active.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/analisis/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/analisis/jawaban.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/apbdesa-tema.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/arsip/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/artikel/comment.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/artikel/detail.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/artikel/empty.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/artikel/headline.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/artikel/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/artikel/list.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/dpt/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/embed/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/feed.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/footer_bottom.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/footer_top.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/galeri/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/header.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/header2.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/idm/index.blade.php
rename {vendor/themes/natra/assets/js => storage/app/themes/natra/resources/views/partials}/index.html (100%)
create mode 100644 storage/app/themes/natra/resources/views/partials/informasi-publik/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/inventaris/asset.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/inventaris/gedung.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/inventaris/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/inventaris/jalan.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/inventaris/konstruksi.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/inventaris/peralatan.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/inventaris/tanah.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/kelompok/detail.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/kesehatan/chart_stunting_posyandu.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/kesehatan/chart_stunting_umur.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/kesehatan/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/kesehatan/scorecard.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/kesehatan/widget_item.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/konten.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/lapak/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/lembaga/detail.blade.php
rename vendor/themes/esensi/layouts/maintenance.blade.php => storage/app/themes/natra/resources/views/partials/maintenance/index.blade.php (87%)
rename vendor/themes/natra/partials/menu_head.php => storage/app/themes/natra/resources/views/partials/menu_head.blade.php (76%)
create mode 100644 storage/app/themes/natra/resources/views/partials/not_found.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/pembangunan/detail.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/pembangunan/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/pemerintah/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/pengaduan/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/peta/components/aparatur_desa.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/peta/components/apbdes.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/peta/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/produk-hukum/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/sdgs/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/sidebar.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/slider.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/sotk/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/statistik/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/suplemen/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/surat/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/surat_dinas/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/partials/wilayah/index.blade.php
create mode 100644 storage/app/themes/natra/resources/views/template.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/agenda.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/aparatur_desa.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/arsip_artikel.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/galeri.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/jadwal_sholat.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/jam_kerja.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/keuangan.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/komentar.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/media_sosial.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/menu_kategori.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/peta_lokasi_kantor.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/peta_wilayah_desa.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/sinergi_program.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/statistik.blade.php
create mode 100644 storage/app/themes/natra/resources/views/widgets/statistik_pengunjung.blade.php
create mode 100644 storage/app/vendor/codeigniter/framework/system/libraries/Cache/Cache.php
create mode 100644 storage/app/vendor/codeigniter/framework/system/libraries/Email.php
create mode 100644 storage/app/vendor/codeigniter/framework/system/libraries/Form_validation.php
create mode 100644 storage/app/vendor/codeigniter/framework/system/libraries/Upload.php
create mode 100644 vendor/f9webltd/laravel-api-response-helpers/composer.json
create mode 100644 vendor/f9webltd/laravel-api-response-helpers/src/ApiResponseHelpers.php
create mode 100644 vendor/league/fractal/.editorconfig
create mode 100644 vendor/league/fractal/composer.json
create mode 100644 vendor/league/fractal/phpstan-baseline.neon
create mode 100644 vendor/league/fractal/src/Manager.php
create mode 100644 vendor/league/fractal/src/Pagination/Cursor.php
create mode 100644 vendor/league/fractal/src/Pagination/CursorInterface.php
create mode 100644 vendor/league/fractal/src/Pagination/DoctrinePaginatorAdapter.php
create mode 100644 vendor/league/fractal/src/Pagination/IlluminatePaginatorAdapter.php
create mode 100644 vendor/league/fractal/src/Pagination/PagerfantaPaginatorAdapter.php
create mode 100644 vendor/league/fractal/src/Pagination/PaginatorInterface.php
create mode 100644 vendor/league/fractal/src/Pagination/PhalconFrameworkPaginatorAdapter.php
create mode 100644 vendor/league/fractal/src/Pagination/ZendFrameworkPaginatorAdapter.php
create mode 100644 vendor/league/fractal/src/ParamBag.php
create mode 100644 vendor/league/fractal/src/Resource/Collection.php
create mode 100644 vendor/league/fractal/src/Resource/Item.php
create mode 100644 vendor/league/fractal/src/Resource/NullResource.php
create mode 100644 vendor/league/fractal/src/Resource/Primitive.php
create mode 100644 vendor/league/fractal/src/Resource/ResourceAbstract.php
create mode 100644 vendor/league/fractal/src/Resource/ResourceInterface.php
create mode 100644 vendor/league/fractal/src/Scope.php
create mode 100644 vendor/league/fractal/src/ScopeFactory.php
create mode 100644 vendor/league/fractal/src/ScopeFactoryInterface.php
create mode 100644 vendor/league/fractal/src/Serializer/ArraySerializer.php
create mode 100644 vendor/league/fractal/src/Serializer/DataArraySerializer.php
create mode 100644 vendor/league/fractal/src/Serializer/JsonApiSerializer.php
create mode 100644 vendor/league/fractal/src/Serializer/Serializer.php
create mode 100644 vendor/league/fractal/src/Serializer/SerializerAbstract.php
create mode 100644 vendor/league/fractal/src/TransformerAbstract.php
create mode 100644 vendor/spatie/fractalistic/.editorconfig
create mode 100644 vendor/spatie/fractalistic/composer.json
create mode 100644 vendor/spatie/fractalistic/src/ArraySerializer.php
create mode 100644 vendor/spatie/fractalistic/src/Exceptions/InvalidTransformation.php
create mode 100644 vendor/spatie/fractalistic/src/Exceptions/NoTransformerSpecified.php
create mode 100644 vendor/spatie/fractalistic/src/Fractal.php
create mode 100644 vendor/spatie/laravel-fractal/.editorconfig
create mode 100644 vendor/spatie/laravel-fractal/.php_cs.dist.php
create mode 100644 vendor/spatie/laravel-fractal/composer.json
create mode 100644 vendor/spatie/laravel-fractal/config/fractal.php
create mode 100644 vendor/spatie/laravel-fractal/src/Console/Commands/TransformerMakeCommand.php
create mode 100644 vendor/spatie/laravel-fractal/src/Console/stubs/transformer.stub
create mode 100644 vendor/spatie/laravel-fractal/src/Facades/Fractal.php
create mode 100644 vendor/spatie/laravel-fractal/src/Fractal.php
create mode 100644 vendor/spatie/laravel-fractal/src/FractalServiceProvider.php
create mode 100644 vendor/spatie/laravel-fractal/src/helpers.php
create mode 100644 vendor/spatie/laravel-json-api-paginate/.php_cs
create mode 100644 vendor/spatie/laravel-json-api-paginate/composer.json
create mode 100644 vendor/spatie/laravel-json-api-paginate/config/json-api-paginate.php
create mode 100644 vendor/spatie/laravel-json-api-paginate/src/JsonApiPaginateServiceProvider.php
create mode 100644 vendor/spatie/laravel-query-builder/.php_cs.dist.php
create mode 100644 vendor/spatie/laravel-query-builder/composer.json
create mode 100644 vendor/spatie/laravel-query-builder/config/query-builder.php
create mode 100644 vendor/spatie/laravel-query-builder/database/factories/AppendModelFactory.php
create mode 100644 vendor/spatie/laravel-query-builder/database/factories/SoftDeleteModelFactory.php
create mode 100644 vendor/spatie/laravel-query-builder/database/factories/TestModelFactory.php
create mode 100644 vendor/spatie/laravel-query-builder/src/AllowedFilter.php
create mode 100644 vendor/spatie/laravel-query-builder/src/AllowedInclude.php
create mode 100644 vendor/spatie/laravel-query-builder/src/AllowedSort.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Concerns/AddsFieldsToQuery.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Concerns/AddsIncludesToQuery.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Concerns/FiltersQuery.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Concerns/SortsQuery.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Enums/SortDirection.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Exceptions/AllowedFieldsMustBeCalledBeforeAllowedIncludes.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Exceptions/InvalidAppendQuery.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Exceptions/InvalidDirection.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Exceptions/InvalidFieldQuery.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Exceptions/InvalidFilterQuery.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Exceptions/InvalidFilterValue.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Exceptions/InvalidIncludeQuery.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Exceptions/InvalidQuery.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Exceptions/InvalidSortQuery.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Exceptions/InvalidSubject.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Exceptions/UnknownIncludedFieldsQuery.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Filters/Filter.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Filters/FiltersBeginsWithStrict.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Filters/FiltersCallback.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Filters/FiltersEndsWithStrict.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Filters/FiltersExact.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Filters/FiltersPartial.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Filters/FiltersScope.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Filters/FiltersTrashed.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Includes/IncludeInterface.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Includes/IncludedCallback.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Includes/IncludedCount.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Includes/IncludedExists.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Includes/IncludedRelationship.php
create mode 100644 vendor/spatie/laravel-query-builder/src/QueryBuilder.php
create mode 100644 vendor/spatie/laravel-query-builder/src/QueryBuilderRequest.php
create mode 100644 vendor/spatie/laravel-query-builder/src/QueryBuilderServiceProvider.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Sorts/Sort.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Sorts/SortsCallback.php
create mode 100644 vendor/spatie/laravel-query-builder/src/Sorts/SortsField.php
delete mode 100644 vendor/themes/esensi/assets/js/script.js
delete mode 100644 vendor/themes/esensi/assets/js/script.min.js
delete mode 100644 vendor/themes/esensi/commons/404.php
delete mode 100644 vendor/themes/esensi/commons/back_to_top.php
delete mode 100644 vendor/themes/esensi/commons/category_menu.php
delete mode 100644 vendor/themes/esensi/commons/footer.php
delete mode 100644 vendor/themes/esensi/commons/header.php
delete mode 100644 vendor/themes/esensi/commons/loading_screen.php
delete mode 100644 vendor/themes/esensi/commons/main_menu.php
delete mode 100644 vendor/themes/esensi/commons/meta.php
delete mode 100644 vendor/themes/esensi/commons/mobile_menu.php
delete mode 100644 vendor/themes/esensi/commons/paging.php
delete mode 100644 vendor/themes/esensi/commons/source_css.php
delete mode 100644 vendor/themes/esensi/commons/source_js.php
delete mode 100644 vendor/themes/esensi/commons/sticky_share.php
delete mode 100644 vendor/themes/esensi/layouts/analisis.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/arsip.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/artikel.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/beranda.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/embed.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/full_content.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/gallery.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/halaman_statis.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/halaman_statis_lebar.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/kelompok.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/kesehatan.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/stat.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/sub_gallery.tpl.php
delete mode 100644 vendor/themes/esensi/layouts/suplemen.tpl.php
delete mode 100644 vendor/themes/esensi/partials/apbdesa.php
delete mode 100644 vendor/themes/esensi/partials/archive.php
delete mode 100644 vendor/themes/esensi/partials/article.php
delete mode 100644 vendor/themes/esensi/partials/article_list.php
delete mode 100644 vendor/themes/esensi/partials/comment.php
delete mode 100644 vendor/themes/esensi/partials/empty_article.php
delete mode 100644 vendor/themes/esensi/partials/gallery.php
delete mode 100644 vendor/themes/esensi/partials/group.php
delete mode 100644 vendor/themes/esensi/partials/headline.php
delete mode 100644 vendor/themes/esensi/partials/idm/index.php
delete mode 100644 vendor/themes/esensi/partials/index.html
delete mode 100644 vendor/themes/esensi/partials/informasi_publik/index.php
delete mode 100644 vendor/themes/esensi/partials/inventaris/asset.php
delete mode 100644 vendor/themes/esensi/partials/inventaris/gedung.php
delete mode 100644 vendor/themes/esensi/partials/inventaris/index.php
delete mode 100644 vendor/themes/esensi/partials/inventaris/jalan.php
delete mode 100644 vendor/themes/esensi/partials/inventaris/konstruksi.php
delete mode 100644 vendor/themes/esensi/partials/inventaris/peralatan.php
delete mode 100644 vendor/themes/esensi/partials/inventaris/script.php
delete mode 100644 vendor/themes/esensi/partials/inventaris/tanah.php
delete mode 100644 vendor/themes/esensi/partials/kesehatan/chart_stunting_posyandu.php
delete mode 100644 vendor/themes/esensi/partials/kesehatan/chart_stunting_umur.php
delete mode 100644 vendor/themes/esensi/partials/kesehatan/index.php
delete mode 100644 vendor/themes/esensi/partials/kesehatan/widget.php
delete mode 100644 vendor/themes/esensi/partials/lapak/index.php
delete mode 100644 vendor/themes/esensi/partials/not_found.php
delete mode 100644 vendor/themes/esensi/partials/pembangunan/detail.php
delete mode 100644 vendor/themes/esensi/partials/pembangunan/index.php
delete mode 100644 vendor/themes/esensi/partials/pemerintah/index.php
delete mode 100644 vendor/themes/esensi/partials/pengaduan/index.php
delete mode 100644 vendor/themes/esensi/partials/peraturan/index.php
delete mode 100644 vendor/themes/esensi/partials/peta/components/aparatur_desa.php
delete mode 100644 vendor/themes/esensi/partials/peta/components/apbdes.php
delete mode 100644 vendor/themes/esensi/partials/peta/components/content_desa.php
delete mode 100644 vendor/themes/esensi/partials/peta/components/content_dusun.php
delete mode 100644 vendor/themes/esensi/partials/peta/components/content_rt.php
delete mode 100644 vendor/themes/esensi/partials/peta/components/content_rw.php
delete mode 100644 vendor/themes/esensi/partials/peta/index.php
delete mode 100644 vendor/themes/esensi/partials/sdgs/index.php
delete mode 100644 vendor/themes/esensi/partials/sidebar.php
delete mode 100644 vendor/themes/esensi/partials/slider.php
delete mode 100644 vendor/themes/esensi/partials/sotk/index.php
delete mode 100644 vendor/themes/esensi/partials/statistics/analisis.php
delete mode 100644 vendor/themes/esensi/partials/statistics/default.php
delete mode 100644 vendor/themes/esensi/partials/statistics/index.html
delete mode 100644 vendor/themes/esensi/partials/statistics/regions.php
delete mode 100644 vendor/themes/esensi/partials/statistics/sidenav.php
delete mode 100644 vendor/themes/esensi/partials/statistics/voters.php
delete mode 100644 vendor/themes/esensi/partials/sub_gallery.php
delete mode 100644 vendor/themes/esensi/partials/suplement.php
delete mode 100644 vendor/themes/esensi/partials/surat/index.php
delete mode 100644 vendor/themes/esensi/partials/vaksin/index.php
delete mode 100644 vendor/themes/esensi/template.php
delete mode 100644 vendor/themes/esensi/widgets/agenda.php
delete mode 100644 vendor/themes/esensi/widgets/aparatur_desa.php
delete mode 100644 vendor/themes/esensi/widgets/arsip_artikel.php
delete mode 100644 vendor/themes/esensi/widgets/galeri.php
delete mode 100644 vendor/themes/esensi/widgets/index.html
delete mode 100644 vendor/themes/esensi/widgets/jam_kerja.php
delete mode 100644 vendor/themes/esensi/widgets/keuangan.php
delete mode 100644 vendor/themes/esensi/widgets/komentar.php
delete mode 100644 vendor/themes/esensi/widgets/media_sosial.php
delete mode 100644 vendor/themes/esensi/widgets/menu_kategori.php
delete mode 100644 vendor/themes/esensi/widgets/peta_lokasi_kantor.php
delete mode 100644 vendor/themes/esensi/widgets/peta_wilayah_desa.php
delete mode 100644 vendor/themes/esensi/widgets/sinergi_program.php
delete mode 100644 vendor/themes/esensi/widgets/statistik.php
delete mode 100644 vendor/themes/esensi/widgets/statistik_pengunjung.php
delete mode 100644 vendor/themes/natra/commons/index.html
delete mode 100644 vendor/themes/natra/commons/meta.php
delete mode 100644 vendor/themes/natra/commons/meta_footer.php
delete mode 100644 vendor/themes/natra/commons/not_found.php
delete mode 100644 vendor/themes/natra/commons/page.php
delete mode 100644 vendor/themes/natra/commons/share.php
delete mode 100644 vendor/themes/natra/commons/style.php
delete mode 100644 vendor/themes/natra/index.html
delete mode 100644 vendor/themes/natra/layouts/analisis.tpl.php
delete mode 100644 vendor/themes/natra/layouts/arsip.tpl.php
delete mode 100644 vendor/themes/natra/layouts/artikel.tpl.php
delete mode 100644 vendor/themes/natra/layouts/embed.tpl.php
delete mode 100644 vendor/themes/natra/layouts/full_content.tpl.php
delete mode 100644 vendor/themes/natra/layouts/gallery.tpl.php
delete mode 100644 vendor/themes/natra/layouts/halaman_statis.tpl.php
delete mode 100644 vendor/themes/natra/layouts/halaman_statis_lebar.tpl.php
delete mode 100644 vendor/themes/natra/layouts/header.php
delete mode 100644 vendor/themes/natra/layouts/index.html
delete mode 100644 vendor/themes/natra/layouts/kelompok.tpl.php
delete mode 100644 vendor/themes/natra/layouts/kesehatan.tpl.php
delete mode 100644 vendor/themes/natra/layouts/slider.php
delete mode 100644 vendor/themes/natra/layouts/stat.tpl.php
delete mode 100644 vendor/themes/natra/layouts/sub_gallery.tpl.php
delete mode 100644 vendor/themes/natra/layouts/suplemen.tpl.php
delete mode 100644 vendor/themes/natra/layouts/teks_berjalan.php
delete mode 100644 vendor/themes/natra/partials/analisis.php
delete mode 100644 vendor/themes/natra/partials/apbdesa-tema.php
delete mode 100644 vendor/themes/natra/partials/arsip.php
delete mode 100644 vendor/themes/natra/partials/artikel.php
delete mode 100644 vendor/themes/natra/partials/bottom_content_left.php
delete mode 100644 vendor/themes/natra/partials/bottom_content_right.php
delete mode 100644 vendor/themes/natra/partials/corona-local.php
delete mode 100644 vendor/themes/natra/partials/dpt.php
delete mode 100644 vendor/themes/natra/partials/feed.php
delete mode 100644 vendor/themes/natra/partials/footer_bottom.php
delete mode 100644 vendor/themes/natra/partials/footer_top.php
delete mode 100644 vendor/themes/natra/partials/gallery.php
delete mode 100644 vendor/themes/natra/partials/header.php
delete mode 100644 vendor/themes/natra/partials/header2.php
delete mode 100644 vendor/themes/natra/partials/idm/index.html
delete mode 100644 vendor/themes/natra/partials/idm/index.php
delete mode 100644 vendor/themes/natra/partials/index.html
delete mode 100644 vendor/themes/natra/partials/informasi_publik.php
delete mode 100644 vendor/themes/natra/partials/informasi_publik/index.php
delete mode 100644 vendor/themes/natra/partials/inventaris/asset.php
delete mode 100644 vendor/themes/natra/partials/inventaris/gedung.php
delete mode 100644 vendor/themes/natra/partials/inventaris/index.php
delete mode 100644 vendor/themes/natra/partials/inventaris/jalan.php
delete mode 100644 vendor/themes/natra/partials/inventaris/konstruksi.php
delete mode 100644 vendor/themes/natra/partials/inventaris/peralatan.php
delete mode 100644 vendor/themes/natra/partials/inventaris/script.php
delete mode 100644 vendor/themes/natra/partials/inventaris/tanah.php
delete mode 100644 vendor/themes/natra/partials/kelompok.php
delete mode 100644 vendor/themes/natra/partials/kesehatan/chart_stunting_posyandu.php
delete mode 100644 vendor/themes/natra/partials/kesehatan/chart_stunting_umur.php
delete mode 100644 vendor/themes/natra/partials/kesehatan/index.php
delete mode 100644 vendor/themes/natra/partials/kesehatan/scorecard.php
delete mode 100644 vendor/themes/natra/partials/kesehatan/widget.php
delete mode 100644 vendor/themes/natra/partials/komentar.php
delete mode 100644 vendor/themes/natra/partials/lapak/index.html
delete mode 100644 vendor/themes/natra/partials/lapak/index.php
delete mode 100644 vendor/themes/natra/partials/not_found.php
delete mode 100644 vendor/themes/natra/partials/pembangunan/detail.php
delete mode 100644 vendor/themes/natra/partials/pembangunan/index.html
delete mode 100644 vendor/themes/natra/partials/pembangunan/index.php
delete mode 100644 vendor/themes/natra/partials/pemerintah/index.html
delete mode 100644 vendor/themes/natra/partials/pemerintah/index.php
delete mode 100644 vendor/themes/natra/partials/pengaduan/index.html
delete mode 100644 vendor/themes/natra/partials/pengaduan/index.php
delete mode 100644 vendor/themes/natra/partials/peraturan/index.html
delete mode 100644 vendor/themes/natra/partials/peraturan/index.php
delete mode 100644 vendor/themes/natra/partials/peta/components/aparatur_desa.php
delete mode 100644 vendor/themes/natra/partials/peta/components/apbdes.php
delete mode 100644 vendor/themes/natra/partials/peta/components/content_desa.php
delete mode 100644 vendor/themes/natra/partials/peta/components/content_dusun.php
delete mode 100644 vendor/themes/natra/partials/peta/components/content_rt.php
delete mode 100644 vendor/themes/natra/partials/peta/components/content_rw.php
delete mode 100644 vendor/themes/natra/partials/peta/index.php
delete mode 100644 vendor/themes/natra/partials/sdgs/index.html
delete mode 100644 vendor/themes/natra/partials/sdgs/index.php
delete mode 100644 vendor/themes/natra/partials/sotk/index.php
delete mode 100644 vendor/themes/natra/partials/statistik.php
delete mode 100644 vendor/themes/natra/partials/statistik_sos.php
delete mode 100644 vendor/themes/natra/partials/sub_gallery.php
delete mode 100644 vendor/themes/natra/partials/suplemen.php
delete mode 100644 vendor/themes/natra/partials/surat/index.html
delete mode 100644 vendor/themes/natra/partials/surat/index.php
delete mode 100644 vendor/themes/natra/partials/vaksin/index.html
delete mode 100644 vendor/themes/natra/partials/vaksin/index.php
delete mode 100644 vendor/themes/natra/partials/wilayah.php
delete mode 100644 vendor/themes/natra/template.php
delete mode 100644 vendor/themes/natra/widgets/agenda.php
delete mode 100644 vendor/themes/natra/widgets/aparatur_desa.php
delete mode 100644 vendor/themes/natra/widgets/arsip_artikel.php
delete mode 100644 vendor/themes/natra/widgets/galeri.php
delete mode 100644 vendor/themes/natra/widgets/index.html
delete mode 100644 vendor/themes/natra/widgets/jadwal_sholat.php
delete mode 100644 vendor/themes/natra/widgets/jam_kerja.php
delete mode 100644 vendor/themes/natra/widgets/keuangan.php
delete mode 100644 vendor/themes/natra/widgets/komentar.php
delete mode 100644 vendor/themes/natra/widgets/media_sosial.php
delete mode 100644 vendor/themes/natra/widgets/menu_kategori.php
delete mode 100644 vendor/themes/natra/widgets/peta_lokasi_kantor.php
delete mode 100644 vendor/themes/natra/widgets/peta_wilayah_desa.php
delete mode 100644 vendor/themes/natra/widgets/sinergi_program.php
delete mode 100644 vendor/themes/natra/widgets/statistik.php
delete mode 100644 vendor/themes/natra/widgets/statistik_pengunjung.php
diff --git a/.gitignore b/.gitignore
index 9b33a74ba..5f73789ae 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,12 +23,6 @@ version.json
# obfuscator
Obfuscator.php
-# Abaikan tema premium
-vendor/themes/denatra/
-vendor/themes/silir/
-vendor/themes/batuah/
-vendor/themes/denava/
-
# Abaikan isian folder vendor
vendor/codeigniter/framework/*
!vendor/codeigniter/framework/system/
@@ -88,4 +82,4 @@ Modules/*
.phpunit.result.cache
# ignore favicon.ico
-/favicon.ico
+/favicon.ico
\ No newline at end of file
diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php
index daa6cce5d..29e52705c 100644
--- a/.php-cs-fixer.php
+++ b/.php-cs-fixer.php
@@ -13,7 +13,7 @@
* Aplikasi dan source code ini dirilis berdasarkan lisensi GPL V3
*
* Hak Cipta 2009 - 2015 Combine Resource Institution (http://lumbungkomunitas.net/)
- * Hak Cipta 2016 - 2024 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
+ * Hak Cipta 2016 - 2025 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
*
* Dengan ini diberikan izin, secara gratis, kepada siapa pun yang mendapatkan salinan
* dari perangkat lunak ini dan file dokumentasi terkait ("Aplikasi Ini"), untuk diperlakukan
@@ -31,7 +31,7 @@
* @package OpenSID
* @author Tim Pengembang OpenDesa
* @copyright Hak Cipta 2009 - 2015 Combine Resource Institution (http://lumbungkomunitas.net/)
- * @copyright Hak Cipta 2016 - 2024 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
+ * @copyright Hak Cipta 2016 - 2025 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
* @license http://www.gnu.org/licenses/gpl.html GPL V3
* @link https://github.com/OpenSID/OpenSID
*
@@ -99,6 +99,7 @@
->name('*.php')
->notName([
'*.blade.php',
+ 'AppServiceProvider.php',
'Data_awal_seeder.php',
'Data_awal.php',
'ConsoleServiceProvider.php',
diff --git a/donjo-app/views/nav.php b/Modules/Analisis/Config/config.php
similarity index 85%
rename from donjo-app/views/nav.php
rename to Modules/Analisis/Config/config.php
index 864e71041..0585cfc10 100644
--- a/donjo-app/views/nav.php
+++ b/Modules/Analisis/Config/config.php
@@ -11,7 +11,7 @@
* Aplikasi dan source code ini dirilis berdasarkan lisensi GPL V3
*
* Hak Cipta 2009 - 2015 Combine Resource Institution (http://lumbungkomunitas.net/)
- * Hak Cipta 2016 - 2024 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
+ * Hak Cipta 2016 - 2025 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
*
* Dengan ini diberikan izin, secara gratis, kepada siapa pun yang mendapatkan salinan
* dari perangkat lunak ini dan file dokumentasi terkait ("Aplikasi Ini"), untuk diperlakukan
@@ -29,12 +29,12 @@
* @package OpenSID
* @author Tim Pengembang OpenDesa
* @copyright Hak Cipta 2009 - 2015 Combine Resource Institution (http://lumbungkomunitas.net/)
- * @copyright Hak Cipta 2016 - 2024 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
+ * @copyright Hak Cipta 2016 - 2025 Perkumpulan Desa Digital Terbuka (https://opendesa.id)
* @license http://www.gnu.org/licenses/gpl.html GPL V3
* @link https://github.com/OpenSID/OpenSID
*
*/
-defined('BASEPATH') || exit('No direct script access allowed');
-
-echo view('admin.layouts.partials.sidebar');
+return [
+ 'name' => 'Analisis',
+];
diff --git a/Modules/Analisis/Enums/TahapPedataanEnum.php b/Modules/Analisis/Enums/TahapPedataanEnum.php
index 3f2fee362..8fa9c8e25 100644
--- a/Modules/Analisis/Enums/TahapPedataanEnum.php
+++ b/Modules/Analisis/Enums/TahapPedataanEnum.php
@@ -1,59 +1,561 @@
- 'Belum Entri / Pedataan',
- self::SEDANG_ENTRI => 'Sedang Dalam Pendataan',
- self::SELESAI_ENTRI => 'Selesai Entri / Pedataan',
- ];
- }
-}
+ 'Pilihan (Tunggal)',
- self::PILIHAN_GANDA => 'Pilihan (Ganda)',
- self::ISIAN_JUMLAH => 'Isian angka',
- self::ISIAN_TEKS => 'Isian Tulisan',
- ];
- }
-}
+segment(2);
- $this->analisisMaster = AnalisisMaster::findOrFail($master);
- view()->share([
- 'selectedMenu' => $this->selectedMenu,
- 'analisis_master' => $this->analisisMaster,
- ]);
- }
-
- public function index($master)
- {
- return view('analisis::indikator.index', [
- 'tipeKategori' => AnalisisKategori::where(['id_master' => $master])->pluck('kategori', 'id'),
- ]);
- }
-
- public function datatables($master)
- {
- if ($this->input->is_ajax_request()) {
- $canUpdate = can('u');
- $canDelete = can('h');
- $orderColumn = $this->input->get('order')[0]['column'];
- $orderDesc = $this->input->get('order')[0]['dir'];
- $analisisMaster = $this->analisisMaster;
-
- return datatables()->of(AnalisisIndikator::with(['kategori'])->whereIdMaster($master)
- ->when($orderColumn == 3, static fn ($q) => $q->orderByRaw("LPAD(nomor, 10, ' ') {$orderDesc}")))
- ->addColumn('ceklist', static function ($row) {
- if (can('h')) {
- return '';
- }
- })
- ->addIndexColumn()
- ->addColumn('aksi', static function ($row) use ($canUpdate, $canDelete, $analisisMaster): string {
- $aksi = '';
- if ($analisisMaster->isLock()) {
- return $aksi;
- }
- if ($canUpdate) {
- if (in_array($row->id_tipe, [TipePertanyaanEnum::PILIHAN_TUNGGAL, TipePertanyaanEnum::PILIHAN_GANDA])) {
- $aksi .= ' id}.parameter", $row->id) . '" class="btn bg-purple btn-sm" title="Jawaban">';
- }
- }
- $aksi .= ' id}.form", $row->id) . '" class="btn bg-orange btn-sm" title="Ubah Data">';
- if ($analisisMaster->jenis != TipePertanyaanEnum::PILIHAN_TUNGGAL && $canDelete) {
- $aksi .= ' id}.delete", $row->id) . '" class="btn bg-maroon btn-sm" title="Hapus Data" data-toggle="modal" data-target="#confirm-delete">';
- }
-
- return $aksi;
- })
- ->editColumn('act_analisis', static fn ($q) => StatusEnum::valueOf($q->act_analisis))
- ->editColumn('id_tipe', static fn ($q) => TipePertanyaanEnum::valueOf($q->id_tipe))
- ->rawColumns(['ceklist', 'aksi'])
- ->make();
- }
-
- return show_404();
- }
-
- public function form($master, $id = null)
- {
- isCan('u');
- $analisisMaster = $this->analisisMaster;
- $data['list_kategori'] = AnalisisKategori::where(['id_master' => $master])->pluck('kategori', 'id');
- $data['data_tabel'] = AnalisisIndikator::hubungan($analisisMaster->subjek_tipe);
- if ($id) {
- $data['action'] = 'Ubah';
- $data['form_action'] = ci_route('analisis_indikator.' . $master . '.update', $id);
- $data['analisis_indikator'] = AnalisisIndikator::findOrFail($id);
- $data['ubah'] = (AnalisisParameter::where('id_indikator', $id)->exists() && in_array($data['analisis_indikator']['id_tipe'], [1, 2])) ? false : true;
- } else {
- $data['action'] = 'Tambah';
- $data['form_action'] = ci_route('analisis_indikator.' . $master . '.insert');
- $data['analisis_indikator'] = null;
- $data['ubah'] = true;
- }
-
- return view('analisis::indikator.form', $data);
- }
-
- public function insert($master): void
- {
- isCan('u');
- $analisisMaster = $this->analisisMaster;
- if ($analisisMaster->isSystem()) {
- redirect_with('error', 'Analisis sistem tidak boleh dirubah', ci_route('analisis_indikator.' . $master));
- }
- $dataInsert = static::validate($this->request);
- $dataInsert['id_master'] = $master;
- if (AnalisisIndikator::create($dataInsert)) {
- redirect_with('success', 'Berhasil Tambah Data', ci_route('analisis_indikator.' . $master));
- }
- redirect_with('error', 'Gagal Tambah Data', ci_route('analisis_indikator.' . $master));
- }
-
- public function update($master, $id = null): void
- {
- isCan('u');
- $analisisMaster = $this->analisisMaster;
- $dataUpdate = static::validate($this->request, $id);
- if ($analisisMaster->isSystem()) {
- // Hanya kolom yang boleh diubah untuk analisis sistem
- $dataUpdate = ['is_publik' => $dataUpdate['is_publik']];
- }
- $data = AnalisisIndikator::findOrFail($id);
-
- if ($data->update($dataUpdate)) {
- redirect_with('success', 'Berhasil Ubah Data', ci_route('analisis_indikator.' . $master));
- }
-
- redirect_with('error', 'Gagal Ubah Data', ci_route('analisis_indikator.' . $master));
- }
-
- public function delete($master, $id = null): void
- {
- isCan('h');
- $analisisMaster = $this->analisisMaster;
- if ($analisisMaster->isSystem()) {
- redirect_with('error', 'Analisis sistem tidak boleh dihapus', ci_route('analisis_indikator.' . $master));
- }
- $adaParameter = AnalisisIndikator::whereIn('id', $id ? [$id] : $this->request['id_cb'])->whereHas('parameter')->exists();
- if ($adaParameter) {
- redirect_with('error', 'Gagal hapus, masih ada parameter dalam indikator tersebut', ci_route('analisis_indikator.' . $master));
- }
- if (AnalisisIndikator::destroy($id ?? $this->request['id_cb']) !== 0) {
- redirect_with('success', 'Berhasil Hapus Data', ci_route('analisis_indikator.' . $master));
- }
- redirect_with('error', 'Gagal Hapus Data', ci_route('analisis_indikator.' . $master));
- }
-
- protected static function validate(array $request = []): array
- {
- $data = [
- 'id_tipe' => $request['id_tipe'],
- 'referensi' => $request['referensi'] ?? null,
- 'nomor' => nomor_surat_keputusan($request['nomor']),
- 'pertanyaan' => htmlentities($request['pertanyaan']),
- 'id_kategori' => $request['id_kategori'] ?? null,
- 'bobot' => bilangan($request['bobot']),
- 'act_analisis' => $request['act_analisis'],
- 'is_publik' => $request['is_publik'],
- ];
-
- if ($data['id_tipe'] != 1) {
- $data['act_analisis'] = 2;
- $data['bobot'] = 0;
- }
-
- return $data;
- }
-}
+segment(2);
- $this->analisisMaster = AnalisisMaster::findOrFail($master);
- view()->share([
- 'selectedMenu' => $this->selectedMenu,
- 'analisis_master' => $this->analisisMaster,
- ]);
- }
-
- public function index($master)
- {
- return view('analisis::kategori.index');
- }
-
- public function datatables($master)
- {
- if ($this->input->is_ajax_request()) {
- $canUpdate = can('u');
- $canDelete = can('h');
- $analisisMaster = $this->analisisMaster;
-
- return datatables()->of(AnalisisKategori::whereIdMaster($master))
- ->addColumn('ceklist', static function ($row) {
- if (can('h')) {
- return '';
- }
- })
- ->addIndexColumn()
- ->addColumn('aksi', static function ($row) use ($canUpdate, $canDelete, $analisisMaster): string {
- $aksi = '';
- if ($canUpdate) {
- $aksi .= 'id}.form", $row->id) . '" class="btn bg-orange btn-sm" title="Ubah Data" data-remote="false" data-toggle="modal" data-target="#modalBox" data-title="Ubah Data">';
- }
-
- if ($canDelete) {
- $aksi .= ' id}.delete", $row->id) . '" class="btn bg-maroon btn-sm" title="Hapus Data" data-toggle="modal" data-target="#confirm-delete">';
- }
-
- return $aksi;
- })
- ->rawColumns(['ceklist', 'aksi'])
- ->make();
- }
-
- return show_404();
- }
-
- public function form($master, $id = null)
- {
- isCan('u');
- if ($id) {
- $data['action'] = 'Ubah';
- $data['form_action'] = ci_route('analisis_kategori.' . $master . '.update', $id);
- $data['analisis_kategori'] = AnalisisKategori::findOrFail($id);
- } else {
- $data['action'] = 'Tambah';
- $data['form_action'] = ci_route('analisis_kategori.' . $master . '.insert');
- $data['analisis_kategori'] = null;
- }
-
- return view('analisis::kategori.form', $data);
- }
-
- public function insert($master): void
- {
- isCan('u');
- $dataInsert = static::validate($this->request);
- $dataInsert['id_master'] = $master;
- if (AnalisisKategori::create($dataInsert)) {
- redirect_with('success', 'Berhasil Tambah Data', ci_route('analisis_kategori.' . $master));
- }
- redirect_with('error', 'Gagal Tambah Data', ci_route('analisis_kategori.' . $master));
- }
-
- public function update($master, $id = null): void
- {
- isCan('u');
- $dataUpdate = static::validate($this->request, $id);
- $data = AnalisisKategori::findOrFail($id);
-
- if ($data->update($dataUpdate)) {
- redirect_with('success', 'Berhasil Ubah Data', ci_route('analisis_kategori.' . $master));
- }
- redirect_with('error', 'Gagal Ubah Data', ci_route('analisis_kategori.' . $master));
- }
-
- public function delete($master, $id = null): void
- {
- isCan('h');
- $ids = $id ? [$id] : $this->request['id_cb'];
-
- foreach ($ids as $id) {
- $this->prosesDelete($master, $id);
- }
- }
-
- private function prosesDelete($mater, $id = null): void
- {
- $cek = AnalisisKategori::withCount('indikator')->findOrFail($id);
-
- if ($cek->indikator_count > 0) {
- redirect_with('error', 'Gagal Hapus Data, Kategori masih digunakan', ci_route('analisis_kategori.' . $mater));
- }
-
- if ($cek->delete()) {
- redirect_with('success', 'Berhasil Hapus Data', ci_route('analisis_kategori.' . $mater));
- }
-
- redirect_with('error', 'Gagal Hapus Data', ci_route('analisis_kategori.' . $mater));
- }
-
- protected static function validate(array $request = []): array
- {
- return [
- 'kategori' => htmlentities($request['kategori']),
- ];
- }
-}
+segment(2);
- $this->analisisMaster = AnalisisMaster::findOrFail($master);
- view()->share([
- 'selectedMenu' => $this->selectedMenu,
- 'analisis_master' => $this->analisisMaster,
- ]);
- }
-
- public function index($master)
- {
- return view('analisis::klasifikasi.index');
- }
-
- public function datatables($master)
- {
- if ($this->input->is_ajax_request()) {
- $canUpdate = can('u');
- $canDelete = can('h');
-
- return datatables()->of(AnalisisKlasifikasi::whereIdMaster($master))
- ->addColumn('ceklist', static function ($row) {
- if (can('h')) {
- return '';
- }
- })
- ->addIndexColumn()
- ->addColumn('aksi', static function ($row) use ($canUpdate, $canDelete, $master) {
- $aksi = '';
- if ($canUpdate) {
- $aksi .= 'id) . '" class="btn bg-orange btn-sm" title="Ubah Data" data-remote="false" data-toggle="modal" data-target="#modalBox" data-title="Ubah Data">';
- }
-
- if ($canDelete) {
- $aksi .= ' id) . '" class="btn bg-maroon btn-sm" title="Hapus Data" data-toggle="modal" data-target="#confirm-delete">';
- }
-
- return $aksi;
- })
- ->rawColumns(['ceklist', 'aksi'])
- ->make();
- }
-
- return show_404();
- }
-
- public function form($master, $id = null)
- {
- isCan('u');
- if ($id) {
- $data['action'] = 'Ubah';
- $data['form_action'] = ci_route('analisis_klasifikasi.' . $master . '.update', $id);
- $data['analisis_klasifikasi'] = AnalisisKlasifikasi::findOrFail($id);
- } else {
- $data['action'] = 'Tambah';
- $data['form_action'] = ci_route('analisis_klasifikasi.' . $master . '.insert');
- $data['analisis_klasifikasi'] = null;
- }
-
- return view('analisis::klasifikasi.form', $data);
- }
-
- public function insert($master): void
- {
- isCan('u');
- $dataInsert = static::validate($this->request);
- $dataInsert['id_master'] = $master;
- if (AnalisisKlasifikasi::create($dataInsert)) {
- redirect_with('success', 'Berhasil Tambah Data', ci_route('analisis_klasifikasi.' . $master));
- }
- redirect_with('error', 'Gagal Tambah Data', ci_route('analisis_klasifikasi.' . $master));
- }
-
- public function update($master, $id = null): void
- {
- isCan('u');
- $dataUpdate = static::validate($this->request, $id);
- $data = AnalisisKlasifikasi::findOrFail($id);
-
- if ($data->update($dataUpdate)) {
- redirect_with('success', 'Berhasil Ubah Data', ci_route('analisis_klasifikasi.' . $master));
- }
-
- redirect_with('error', 'Gagal Ubah Data', ci_route('analisis_klasifikasi.' . $master));
- }
-
- public function delete($master, $id = null): void
- {
- isCan('h');
-
- if (AnalisisKlasifikasi::destroy($id ?? $this->request['id_cb']) !== 0) {
- redirect_with('success', 'Berhasil Hapus Data', ci_route('analisis_klasifikasi.' . $master));
- }
-
- redirect_with('error', 'Gagal Hapus Data', ci_route('analisis_klasifikasi.' . $master));
- }
-
- protected static function validate(array $request = []): array
- {
- return [
- 'nama' => nomor_surat_keputusan($request['nama']),
- 'minval' => bilangan_titik($request['minval']),
- 'maxval' => bilangan_titik($request['maxval']),
- ];
- }
-}
+segment(2);
- $this->analisisMaster = AnalisisMaster::findOrFail($master);
- if ($master) {
- $this->periodeAktif = AnalisisPeriode::whereIdMaster($master)->where(['aktif' => StatusEnum::YA])->first();
- if (! $this->periodeAktif) {
- redirect_with('error', 'Tidak ada periode aktif. Untuk laporan ini harus ada periode aktif.', ci_route('analisis_periode', $master));
- }
- }
- view()->share([
- 'selectedMenu' => $this->selectedMenu,
- 'analisis_master' => $this->analisisMaster,
- ]);
- }
-
- public function index($master)
- {
- $data = [
- 'judul' => Analisis::judul_subjek($this->analisisMaster->subjek_tipe),
- 'list_klasifikasi' => AnalisisKlasifikasi::where('id_master', $master)->get(),
- 'analisis_periode' => $this->periodeAktif->id,
- 'wilayah' => Wilayah::treeAccess(),
- 'namaPeriode' => $this->periodeAktif->nama,
- ];
-
- return view('analisis::laporan.index', $data);
- }
-
- public function datatables($master)
- {
- if ($this->input->is_ajax_request()) {
- $sumberData = $this->sumberData();
-
- return datatables()->of($sumberData)
- ->addIndexColumn()
- ->addColumn('aksi', static fn ($row): string => 'id) . '" class="btn bg-purple btn-sm" title="Input Data">')->editColumn('alamat', static fn ($q) => strtoupper($q->alamat . ' ' . 'RT/RW ' . $q->rt . '/' . $q->rw . ' - ' . setting('sebutan_dusun') . ' ' . $q->dusun))
- ->editColumn('nilai', static fn ($q) => $q->nilai ? number_format($q->nilai, 2, ',', '.') : '-')
- ->editColumn('sex', static fn ($q) => strtoupper(JenisKelaminEnum::valueOf($q->sex)))
- ->editColumn('cek', static fn ($q) => '')
- ->rawColumns(['ceklist', 'aksi', 'cek'])
- ->make();
- }
-
- return show_404();
- }
-
- private function sumberData()
- {
- $dusun = $this->input->get('dusun') ?? null;
- $rw = $this->input->get('rw') ?? null;
- $rt = $this->input->get('rt') ?? null;
- $klasifikasi = $this->input->get('klasifikasi') ?? null;
-
- $idCluster = $rt ? [$rt] : [];
-
- if (empty($idCluster) && ! empty($rw)) {
- [$namaDusun, $namaRw] = explode('__', $rw);
- $idCluster = Wilayah::whereDusun($namaDusun)->whereRw($namaRw)->select(['id'])->get()->pluck('id')->toArray();
- }
-
- if (empty($idCluster) && ! empty($dusun)) {
- $idCluster = Wilayah::whereDusun($dusun)->select(['id'])->get()->pluck('id')->toArray();
- }
-
- $analisisMaster = $this->analisisMaster;
- $analisSumberData = Analisis::sumberData($analisisMaster->subjek_tipe, $idCluster);
- $utama = $analisSumberData['utama'];
- $sumber = $analisSumberData['sumber'];
- $pembagi = (int) $analisisMaster->pembagi;
-
- $sumber->selectRaw("CAST((analisis_respon_hasil.akumulasi/{$pembagi}) AS decimal(8,3)) AS nilai, analisis_klasifikasi.nama AS klasifikasi")
- ->leftJoin('analisis_respon_hasil', $utama . '.id', '=', 'analisis_respon_hasil.id_subjek')
- ->leftJoin('analisis_klasifikasi', static function ($join) use ($pembagi, $analisisMaster) {
- $join->on(DB::raw("analisis_respon_hasil.akumulasi / {$pembagi}"), '>=', 'analisis_klasifikasi.minval')
- ->on(DB::raw("analisis_respon_hasil.akumulasi / {$pembagi}"), '<=', 'analisis_klasifikasi.maxval')
- ->on('analisis_klasifikasi.id_master', '=', DB::raw($analisisMaster->id));
- })
- ->where('analisis_respon_hasil.id_periode', $this->periodeAktif->id);
- if ($klasifikasi) {
- $sumber->where('analisis_klasifikasi.id', $klasifikasi);
- }
-
- return $sumber;
- }
-
- public function form($master, $idSubjek)
- {
- $analisis = new Analisis();
-
- $data['total'] = AnalisisResponHasil::where(['id_subjek' => $idSubjek, 'id_periode' => $this->periodeAktif->id])->first()->akumulasi ?? 0;
- $data['subjek'] = $analisis->getSubjek($this->analisisMaster, $idSubjek) ?? show_404();
- $data['list_jawab'] = $analisis->listIndikatorLaporan($this->analisisMaster, $this->periodeAktif->id, $idSubjek);
- $data['list_bukti'] = $analisis->listBukti($this->analisisMaster, $this->periodeAktif->id, $idSubjek);
- $data['list_anggota'] = $analisis->listAnggota($this->analisisMaster, $idSubjek);
- $data['asubjek'] = $this->analisisMaster->subjek_tipe == AnalisisRefSubjekEnum::DESA ? ucwords(setting('sebutan_desa')) : AnalisisRefSubjekEnum::valueOf($this->analisisMaster->subjek_tipe);
- $data['id'] = $idSubjek;
-
- return view('analisis::laporan.form', $data);
- }
-
- // $aksi = cetak/unduh
- public function dialog_kuisioner($master, $id, $aksi = '')
- {
- $data = $this->modal_penandatangan();
- $data['aksi'] = ucwords((string) $aksi);
- $data['form_action'] = ci_route("analisis_laporan.{$master}.daftar.{$id}.{$aksi}");
-
- return view('analisis::admin.layouts.components.ttd_pamong', $data);
- }
-
- public function daftar($master, $idSubjek, $aksi = '')
- {
- $analisis = new Analisis();
- $data['total'] = AnalisisResponHasil::where(['id_subjek' => $idSubjek, 'id_periode' => $this->periodeAktif->id])->first()->akumulasi ?? 0;
- $data['subjek'] = $analisis->getSubjek($this->analisisMaster, $idSubjek) ?? show_404();
- $data['list_jawab'] = $analisis->listIndikatorLaporan($this->analisisMaster, $this->periodeAktif->id, $idSubjek);
- $data['list_bukti'] = $analisis->listBukti($this->analisisMaster, $this->periodeAktif->id, $idSubjek);
- $data['list_anggota'] = $analisis->listAnggota($this->analisisMaster, $idSubjek);
- $data['asubjek'] = $this->analisisMaster->subjek_tipe == AnalisisRefSubjekEnum::DESA ? ucwords(setting('sebutan_desa')) : AnalisisRefSubjekEnum::valueOf($this->analisisMaster->subjek_tipe);
-
- $data['config'] = $this->header['desa'];
- $data['pamong_ttd'] = Pamong::selectData()->where(['pamong_id' => $this->input->post('pamong_ttd')])->first()->toArray();
- $data['pamong_ketahui'] = Pamong::selectData()->where(['pamong_id' => $this->input->post('pamong_ketahui')])->first()->toArray();
- $data['aksi'] = $aksi;
-
- return view('analisis::laporan.form_cetak', $data);
- }
-
- // $aksi = cetak/unduh
- public function dialog($master, $aksi = '')
- {
- // Simpan session lama
- $data = $this->modal_penandatangan();
- $data['aksi'] = ucwords((string) $aksi);
- $data['form_action'] = ci_route("analisis_laporan.{$master}.cetak.{$aksi}");
-
- return view('analisis::laporan.ttd_pamong', $data);
- }
-
- public function cetak($master, $aksi = '')
- {
- $paramDatatable = json_decode((string) $this->input->post('params'), 1);
- $_GET = $paramDatatable;
-
- $query = $this->sumberData();
-
- $data['pamong_ttd'] = Pamong::selectData()->where(['pamong_id' => $this->input->post('pamong_ttd')])->first()->toArray();
- $data['pamong_ketahui'] = Pamong::selectData()->where(['pamong_id' => $this->input->post('pamong_ketahui')])->first()->toArray();
- $data['aksi'] = $aksi;
- $data['config'] = $this->header['desa'];
- // $data['judul'] = Analisis::judul_subjek($this->analisisMaster->subjek_tipe);
- $data['file'] = 'Laporan Hasil Analisis ' . AnalisisRefSubjekEnum::valueOf($this->analisisMaster->subjek_tipe);
- $data['isi'] = 'analisis_laporan.table_print';
- $data['main'] = $query->get();
- $data['letak_ttd'] = ['2', '2', '1'];
-
- return view('analisis::admin.layouts.components.format_cetak', $data);
- }
-
- public function ajax_multi_jawab($master)
- {
- $data['jawab'] = session('jawab') ?? '';
- $data['main'] = (new Analisis())->multi_jawab($master);
- $data['form_action'] = ci_route("analisis_laporan.{$master}.multi_jawab_proses");
-
- return view('analisis::laporan.ajax_multi', $data);
- }
-
- public function multi_jawab_proses($master)
- {
- if (isset($_POST['id_cb'])) {
- unset($_SESSION['jawab'], $_SESSION['jmkf']);
-
- $id_cb = $_POST['id_cb'];
- $cb = '';
- if (count($id_cb) > 0) {
- foreach ($id_cb as $id) {
- $cb .= $id . ',';
- }
- }
- set_session('jawab', $cb . '7777777');
- $jawab = session('jawab');
- set_session('jmkf', AnalisisParameter::selectRaw('DISTINCT(id_indikator) AS id_jmkf')->whereRaw('id in (' . $jawab . ')')->count());
- }
-
- redirect(ci_route("analisis_laporan.{$master}"));
- }
-}
+input->is_ajax_request()) {
- $canUpdate = can('u');
-
- return datatables()->of(AnalisisMaster::query())
- ->addColumn('ceklist', static function ($row) {
- if (can('h')) {
- return '';
- }
- })
- ->addIndexColumn()
- ->addColumn('aksi', static function ($row) use ($canUpdate): string {
- $aksi = ' ';
- if ($canUpdate) {
- $aksi .= ' ';
- if ($row->gform_id) {
- $aksi .= ' ';
- }
- $aksi .= ' ';
-
- if ($row->jenis != 1 ) {
- $aksi .= ' ';
- }
- }
- $aksi .= ' ';
-
- return $aksi;
- })
- ->editColumn('subjek_tipe', static fn ($q) => AnalisisRefSubjekEnum::valueOf($q->subjek_tipe))
- ->editColumn('gform_last_sync', static fn ($q) => tgl_indo($q->gform_last_sync))
- ->rawColumns(['ceklist', 'aksi', 'gform_last_sync'])
- ->make();
- }
-
- return show_404();
- }
-
- public function form($id = null)
- {
- isCan('u');
- $data['list_format_impor'] = ['1' => 'BDT 2015'];
- $data['list_subjek'] = AnalisisRefSubjekEnum::all();
- $data['list_kelompok'] = KelompokMaster::get()->toArray();
- $data['list_analisis'] = AnalisisMaster::subjekPenduduk()->get()->toArray();
- if ($id) {
- $data['action'] = 'Ubah';
- $data['form_action'] = ci_route('analisis_master.update', $id);
- $data['analisis_master'] = AnalisisMaster::findOrFail($id);
- } else {
- $data['action'] = 'Tambah';
- $data['form_action'] = ci_route('analisis_master.insert');
- $data['analisis_master'] = null;
- }
-
- return view('analisis::master.form', $data);
- }
-
- public function insert(): void
- {
- isCan('u');
-
- if (AnalisisMaster::create(static::validate($this->request))) {
- redirect_with('success', 'Berhasil Tambah Data');
- }
-
- redirect_with('error', 'Gagal Tambah Data');
- }
-
- public function update($id = null): void
- {
- isCan('u');
-
- $data = AnalisisMaster::findOrFail($id);
-
- if ($data->update(static::validate($this->request, $id))) {
- redirect_with('success', 'Berhasil Ubah Data');
- }
-
- redirect_with('error', 'Gagal Ubah Data');
- }
-
- public function delete($id = null): void
- {
- isCan('h');
-
- if (AnalisisMaster::destroy($id ?? $this->request['id_cb']) !== 0) {
- redirect_with('success', 'Berhasil Hapus Data');
- }
-
- redirect_with('error', 'Gagal Hapus Data');
- }
-
- public function import_analisis()
- {
- isCan('u');
-
- return view('analisis::master.import', [
- 'form_action' => ci_route('analisis_master.import'),
- 'formatImpor' => ci_route('unduh', encrypt(DEFAULT_LOKASI_IMPOR . 'analisis.xlsx')),
- 'formatPpls2' => ci_route('unduh', encrypt(DEFAULT_LOKASI_IMPOR . 'ppls2.xlsx')),
- ]);
- }
-
- public function import(): void
- {
- isCan('u');
- $config['upload_path'] = sys_get_temp_dir();
- $config['allowed_types'] = 'xlsx';
-
- $namaFile = $config['upload_path'] . DIRECTORY_SEPARATOR . $this->upload('userfile', $config);
-
- try {
- (new Import($namaFile))->analisis();
- redirect_with('success', 'Berhasil import analisis');
- } catch (Exception $e) {
- redirect_with('error', 'Gagal import analisis ' . $e->getMessage());
- }
- }
-
- public function ekspor($id): void
- {
- $writer = new Writer();
- $master = AnalisisMaster::find($id) ?? show_404();
- $master = $master->toArray();
- //Nama File
- $tgl = date('Y_m_d');
- $fileName = 'analisis_' . urlencode((string) $master['nama']) . '_' . $tgl . '.xlsx';
- $writer->openToBrowser($fileName); // stream data directly to the browser
-
- $this->ekspor_master($writer, $master);
- $this->ekspor_pertanyaan($writer, $master);
- $this->ekspor_jawaban($writer, $master);
- $this->ekspor_klasifikasi($writer, $master);
-
- $writer->close();
-
- redirect('analisis_master');
- }
-
- private function style_judul(): Style
- {
- $border = new Border(
- new BorderPart(Border::TOP, Color::GREEN, Border::WIDTH_THIN, Border::STYLE_SOLID),
- new BorderPart(Border::BOTTOM, Color::GREEN, Border::WIDTH_THIN, Border::STYLE_SOLID),
- new BorderPart(Border::LEFT, Color::GREEN, Border::WIDTH_THIN, Border::STYLE_SOLID),
- new BorderPart(Border::RIGHT, Color::GREEN, Border::WIDTH_THIN, Border::STYLE_SOLID)
- );
-
- return (new Style())
- ->setFontBold()
- ->setFontSize(14)
- ->setBorder($border);
- }
-
- private function style_baris(): Style
- {
- $border = new Border(
- new BorderPart(Border::TOP, Color::GREEN, Border::WIDTH_THIN, Border::STYLE_SOLID),
- new BorderPart(Border::BOTTOM, Color::GREEN, Border::WIDTH_THIN, Border::STYLE_SOLID),
- new BorderPart(Border::LEFT, Color::GREEN, Border::WIDTH_THIN, Border::STYLE_SOLID),
- new BorderPart(Border::RIGHT, Color::GREEN, Border::WIDTH_THIN, Border::STYLE_SOLID)
- );
-
- return (new Style())
- ->setBorder($border);
- }
-
- private function ekspor_master(Writer $writer, array $master): void
- {
- $sheet = $writer->getCurrentSheet();
- $sheet->setName('master');
- $periode = AnalisisPeriode::active()->where('id_master', $master['id'])->first();
- //Tulis judul
- $master_analisis = [
- ['NAMA ANALISIS', $master['nama']],
- ['SUBJEK', $master['subjek_tipe']],
- ['STATUS', $master['lock']],
- ['BILANGAN PEMBAGI', $master['pembagi']],
- ['DESKRIPSI ANALISIS', $master['deskripsi']],
- ['NAMA PERIODE', $periode->nama ?? ''],
- ['TAHUN PENDATAAN', $periode->tahun_pelaksanaan ?? ''],
- ];
-
- foreach ($master_analisis as $baris_master) {
- $baris = [
- $baris_master[0],
- $baris_master[1],
- ];
- $row = Row::fromValues($baris);
- $writer->addRow($row);
- }
- }
-
- private function ekspor_pertanyaan(Writer $writer, array $master): void
- {
- $sheet = $writer->addNewSheetAndMakeItCurrent();
- $sheet->setName('pertanyaan');
- //Tulis judul
- $daftar_kolom = [
- ['NO / KODE', 'nomor'],
- ['PERTANYAAN / INDIKATOR', 'pertanyaan'],
- ['KATEGORI / ASPEK', 'kategori'],
- ['TIPE PERTANYAAN', 'id_tipe'],
- ['BOBOT', 'bobot'],
- ['AKSI ANALISIS', 'act_analisis'],
- ];
- $judul = array_column($daftar_kolom, 0);
- $header = Row::fromValues($judul, $this->style_judul());
- $writer->addRow($header);
- // Tulis data
- $indikator = AnalisisIndikator::with(['kategori'])->where(['id_master' => $master['id']])->get()->toArray();
-
- foreach ($indikator as $p) {
- $baris_data = [$p['nomor'], $p['pertanyaan'], $p['kategori']['kategori'] ?? '', $p['id_tipe'], $p['bobot'], $p['act_analisis']];
- $baris = Row::fromValues($baris_data, $this->style_baris());
- $writer->addRow($baris);
- }
- }
-
- private function ekspor_jawaban(Writer $writer, array $master): void
- {
- $jawaban = $writer->addNewSheetAndMakeItCurrent();
- $jawaban->setName('jawaban');
- //Tulis judul
- $daftar_kolom = [
- ['KODE PERTANYAAN', 'nomor'],
- ['KODE JAWABAN', 'kode_jawaban'],
- ['ISI JAWABAN', 'jawaban'],
- ['NILAI', 'nilai'],
- ];
- $judul = array_column($daftar_kolom, 0);
- $header = Row::fromValues($judul, $this->style_judul());
- $writer->addRow($header);
- // Tulis data
- $parameter = AnalisisIndikator::with(['parameter'])->where(['id_master' => $master['id']])->get();
-
- foreach ($parameter as $p) {
- $baris_data = [$p['nomor'], $p['parameter']['kode_jawaban'] ?? '', $p['parameter']['jawaban'] ?? '', $p['parameter']['nilai'] ?? ''];
- $baris = Row::fromValues($baris_data, $this->style_baris());
- $writer->addRow($baris);
- }
- }
-
- private function ekspor_klasifikasi(Writer $writer, array $master): void
- {
- $klasifikasi = $writer->addNewSheetAndMakeItCurrent();
- $klasifikasi->setName('klasifikasi');
- //Tulis judul
- $daftar_kolom = [
- ['KLASIFIKASI', 'nama'],
- ['NILAI MINIMAL', 'minval'],
- ['NILAI MAKSIMAL', 'maxval'],
- ];
- $judul = array_column($daftar_kolom, 0);
- $header = Row::fromValues($judul, $this->style_judul());
- $writer->addRow($header);
- // Tulis data
- $klasifikasi = AnalisisKlasifikasi::where(['id_master' => $master['id']])->get();
-
- foreach ($klasifikasi as $k) {
- $baris_data = [$k['nama'], $k['minval'], $k['maxval']];
- $baris = Row::fromValues($baris_data, $this->style_baris());
- $writer->addRow($baris);
- }
- }
-
- public function import_gform()
- {
- isCan('u');
- $data['form_action'] = ci_route('analisis_master.exec_import_gform');
-
- return view('analisis::master.import_gform', $data);
- }
-
- /**
- * 1. Credential
- * 2. Id script
- * 3. Redirect URI
- *
- * - Jika 1 dan 2 diisi (asumsi user pakai akun google sendiri) eksekusi dari nilai yg diisi user. Abaikan isisan 3. Redirect ambil dari isian 1
- * - Jika 1 dan 2 kosong. 3 diisi. Import gform langsung menuju redirect field 3
- * - Jika semua tidak terisi (asumsi opensid ini yang jalan di server OpenDesa) ambil credential setting di file config
- */
- private function get_redirect_uri()
- {
- $api_gform_credential = setting('api_gform_credential') ?? config_item('api_gform_credential');
- if ($api_gform_credential) {
- $credential_data = json_decode(str_replace('\"', '"', $api_gform_credential), true);
- $redirect_uri = $credential_data['web']['redirect_uris'][0];
- }
- if (empty($redirect_uri)) {
- return setting('api_gform_redirect_uri');
- }
-
- return $redirect_uri;
- }
-
- public function exec_import_gform(): void
- {
- isCan('u');
- $this->session->google_form_id = $this->request->get('input-form-id');
-
- $REDIRECT_URI = $this->get_redirect_uri();
- $protocol = (! empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://';
- $self_link = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
-
- if ($this->request->get('outsideRetry') == 'true') {
- $url = $REDIRECT_URI . '?formId=' . $this->request->get('formId') . '&redirectLink=' . $self_link . '&outsideRetry=true&code=' . $this->input->get('code');
-
- $client = new Google\Client();
- $httpClient = $client->authorize();
- $response = $httpClient->get($url);
-
- $variabel = json_decode((string) $response->getBody(), true);
- set_session('data_import', $variabel);
- set_session('gform_id', $this->request->get('formId'));
- set_session('success', 5);
-
- redirect('analisis_master');
- } else {
- $url = $REDIRECT_URI . '?formId=' . $this->request->get('input-form-id') . '&redirectLink=' . $self_link;
- header('Location: ' . $url);
- }
- }
-
- public function save_import_gform(): void
- {
- isCan('u');
-
- try {
- (new Gform($this->request))->save();
- } catch (Exception $e) {
- redirect_with('error', $e->getMessage());
- }
-
- redirect('analisis_master');
- }
-
- public function update_gform($id = 0): void
- {
- isCan('u');
- $form_id = AnalisisMaster::find($id)?->gform_id;
-
- $REDIRECT_URI = $this->get_redirect_uri();
- $protocol = (! empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? 'https://' : 'http://';
- $self_link = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
-
- if ($this->input->get('outsideRetry') == 'true') {
- $url = $REDIRECT_URI . '?formId=' . $this->input->get('formId') . '&redirectLink=' . $self_link . '&outsideRetry=true&code=' . $this->input->get('code');
-
- $client = new Google\Client();
- $httpClient = $client->authorize();
- $response = $httpClient->get($url);
-
- $variabel = json_decode((string) $response->getBody(), true);
- (new Gform($this->request))->update($id, $variabel);
-
- redirect('analisis_master');
- } else {
- $url = $REDIRECT_URI . '?formId=' . $this->session->google_form_id . '&redirectLink=' . $self_link;
- header('Location: ' . $url);
- }
- }
-
- public function lock($id): void
- {
- isCan('u');
- if (AnalisisMaster::gantiStatus($id, 'lock')) {
- redirect_with('success', 'Berhasil ubah status analisis');
- }
-
- redirect_with('error', 'Gagal status analisis');
- }
-
- public function menu($master)
- {
- $data = [
- 'analisis_master' => AnalisisMaster::findOrFail($master),
- ];
-
- return view('analisis::master.menu_default', $data);
- }
-
- protected static function validate(array $request = []): array
- {
- return [
- 'nama' => judul($request['nama']),
- 'subjek_tipe' => $request['subjek_tipe'],
- 'id_kelompok' => $request['id_kelompok'] ?: null,
- 'lock' => $request['lock'] ?: null,
- 'format_impor' => $request['format_impor'] ?: null,
- 'pembagi' => bilangan_titik($request['pembagi']),
- 'id_child' => $request['id_child'] ?: null,
- 'deskripsi' => htmlentities($request['deskripsi']),
- ];
- }
-}
+ AnalisisMaster::findOrFail($master),
- 'selectedMenu' => $this->selectedMenu,
- 'baseRoute' => ci_route('analisis_indikator.' . $master . '.parameter.' . $indikator),
- ];
-
- return view('analisis::parameter.index', $data);
- }
-
- public function datatables($master, $indikator)
- {
- if ($this->input->is_ajax_request()) {
- $canUpdate = can('u');
- $analisisMaster = AnalisisMaster::find($master);
- $analisisIndikator = AnalisisIndikator::findOrFail($indikator);
-
- return datatables()->of(AnalisisParameter::whereIdIndikator($indikator))
- ->addColumn('ceklist', static function ($row) {
- if (can('h')) {
- return '';
- }
- })
- ->addIndexColumn()
- ->addColumn('aksi', static function ($row) use ($canUpdate, $analisisMaster, $analisisIndikator): string {
- $aksi = '';
- if ($canUpdate) {
- $aksi .= 'id}.parameter.{$row->id_indikator}.form", $row->id) . '" class="btn bg-orange btn-sm" title="Ubah Data" data-remote="false" data-toggle="modal" data-target="#modalBox" data-title="Ubah Data Parameter">';
- }
-
- if ($analisisMaster->jenis != 1 && ! $analisisIndikator->referensi) {
- $aksi .= ' id}.parameter.{$row->id_indikator}.delete", $row->id) . '" class="btn bg-maroon btn-sm" title="Hapus Data" data-toggle="modal" data-target="#confirm-delete">';
- }
-
- return $aksi;
- })
- ->rawColumns(['ceklist', 'aksi'])
- ->make();
- }
-
- return show_404();
- }
-
- public function form($master, $indikator, $id = null)
- {
- isCan('u');
- $analisisMaster = AnalisisMaster::find($master);
- $data['selectedMenu'] = $this->selectedMenu;
- $data['analisis_master'] = $analisisMaster;
- $data['analisis_indikator'] = AnalisisIndikator::findOrFail($indikator);
- $data['analisis_parameter'] = null;
- if ($id) {
- $data['action'] = 'Ubah';
- $data['form_action'] = ci_route('analisis_indikator.' . $master . '.parameter.' . $indikator . '.update', $id);
- $data['analisis_parameter'] = AnalisisParameter::findOrFail($id);
- } else {
- $data['action'] = 'Tambah';
- $data['form_action'] = ci_route('analisis_indikator.' . $master . '.parameter.' . $indikator . '.insert');
- }
-
- return view('analisis::parameter.form', $data);
- }
-
- public function insert($master, $indikator): void
- {
- isCan('u');
- $analisisMaster = AnalisisMaster::findOrFail($master);
- if ($analisisMaster->isSystem()) {
- redirect_with('error', 'Analisis sistem tidak boleh dirubah', ci_route('analisis_indikator.' . $master . '.parameter', $indikator));
- }
- $dataInsert = static::validate($this->request);
- $dataInsert['id_indikator'] = $indikator;
- if (AnalisisParameter::create($dataInsert)) {
- redirect_with('success', 'Berhasil Tambah Data', ci_route('analisis_indikator.' . $master . '.parameter', $indikator));
- }
-
- redirect_with('error', 'Gagal Tambah Data', ci_route('analisis_indikator.' . $master . '.parameter', $indikator));
- }
-
- public function update($master, $indikator, $id = null): void
- {
- isCan('u');
- $analisisMaster = AnalisisMaster::findOrFail($master);
- $dataUpdate = static::validate($this->request, $id);
- if ($analisisMaster->isSystem() || $this->request->referensi) {
- unset($dataUpdate['kode_jawaban'], $dataUpdate['jawaban']);
- }
- $data = AnalisisParameter::findOrFail($id);
-
- if ($data->update($dataUpdate)) {
- redirect_with('success', 'Berhasil Ubah Data', ci_route('analisis_indikator.' . $master . '.parameter', $indikator));
- }
-
- redirect_with('error', 'Gagal Ubah Data', ci_route('analisis_indikator.' . $master . '.parameter', $indikator));
- }
-
- public function delete($master, $indikator, $id = null): void
- {
- isCan('h');
- $analisisMaster = AnalisisMaster::findOrFail($master);
- if ($analisisMaster->isSystem()) {
- redirect_with('error', 'Analisis sistem tidak boleh dihapus', ci_route('analisis_indikator.' . $master . '.parameter', $indikator));
- }
- if (AnalisisParameter::destroy($id ?? $this->request['id_cb']) !== 0) {
- redirect_with('success', 'Berhasil Hapus Data', ci_route('analisis_indikator.' . $master . '.parameter', $indikator));
- }
-
- redirect_with('error', 'Gagal Hapus Data', ci_route('analisis_indikator.' . $master . '.parameter', $indikator));
- }
-
- protected static function validate(array $request = []): array
- {
- return [
- 'kode_jawaban' => bilangan($request['kode_jawaban']),
- 'jawaban' => htmlentities($request['jawaban']),
- 'nilai' => bilangan($request['nilai']),
- ];
- }
-}
+segment(2);
- $this->analisisMaster = AnalisisMaster::findOrFail($master);
- view()->share([
- 'selectedMenu' => $this->selectedMenu,
- 'analisis_master' => $this->analisisMaster,
- ]);
- }
-
- public function index($master)
- {
- return view('analisis::periode.index');
- }
-
- public function datatables($master)
- {
- if ($this->input->is_ajax_request()) {
- $canUpdate = can('u');
- $canDelete = can('h');
-
- return datatables()->of(AnalisisPeriode::whereIdMaster($master))
- ->addColumn('ceklist', static function ($row) use ($canDelete) {
- if ($canDelete) {
- return '';
- }
- })
- ->addIndexColumn()
- ->addColumn('aksi', static function ($row) use ($canUpdate, $canDelete, $master): string {
- $aksi = '';
- if ($canUpdate) {
- $aksi .= 'id) . '" class="btn bg-orange btn-sm" title="Ubah Data" data-remote="false" data-toggle="modal" data-target="#modalBox" data-title="Ubah Data"> ';
-
- if ($row->isLock()) {
- $aksi .= 'id) . '" class="btn bg-navy btn-sm" title="Nonaktikan"> ';
- } else {
- $aksi .= 'id) . '" class="btn bg-navy btn-sm" title="Aktifkan"> ';
- }
- }
-
- if ($canDelete) {
- $aksi .= ' id) . '" class="btn bg-maroon btn-sm" title="Hapus Data" data-toggle="modal" data-target="#confirm-delete"> ';
- }
-
- return $aksi;
- })
- ->rawColumns(['ceklist', 'aksi'])
- ->make();
- }
-
- return show_404();
- }
-
- public function form($master, $id = null)
- {
- isCan('u');
- $data['tahapan'] = TahapPedataanEnum::all();
- if ($id) {
- $data['action'] = 'Ubah';
- $data['form_action'] = ci_route('analisis_periode.' . $master . '.update', $id);
- $data['analisis_periode'] = AnalisisPeriode::findOrFail($id);
- } else {
- $data['action'] = 'Tambah';
- $data['form_action'] = ci_route('analisis_periode.' . $master . '.insert');
- $data['analisis_periode'] = null;
- }
-
- return view('analisis::periode.form', $data);
- }
-
- public function insert($master): void
- {
- isCan('u');
- $dataInsert = static::validate($this->request);
- $dataInsert['id_master'] = $master;
- if ($result = AnalisisPeriode::create($dataInsert)) {
- if ($this->request['duplikasi']) {
- $this->duplikasi($master, $result->id, $this->request);
- }
-
- redirect_with('success', 'Berhasil Tambah Data', ci_route('analisis_periode.' . $master));
- }
-
- redirect_with('error', 'Gagal Tambah Data', ci_route('analisis_periode.' . $master));
- }
-
- public function update($master, $id = null): void
- {
- isCan('u');
- $dataUpdate = static::validate($this->request, $id);
- $data = AnalisisPeriode::findOrFail($id);
-
- if ($data->update($dataUpdate)) {
- redirect_with('success', 'Berhasil Ubah Data', ci_route('analisis_periode.' . $master));
- }
-
- redirect_with('error', 'Gagal Ubah Data', ci_route('analisis_periode.' . $master));
- }
-
- public function lock($master, $id = null): void
- {
- isCan('u');
-
- if (AnalisisPeriode::gantiStatus($id, 'aktif')) {
- redirect_with('success', 'Berhasil Ubah Data', ci_route('analisis_periode.' . $master));
- }
-
- redirect_with('error', 'Gagal Ubah Data', ci_route('analisis_periode.' . $master));
- }
-
- public function delete($master, $id = null): void
- {
- isCan('h');
-
- if (AnalisisPeriode::destroy($id ?? $this->request['id_cb']) !== 0) {
- redirect_with('success', 'Berhasil Hapus Data', ci_route('analisis_periode.' . $master));
- }
- redirect_with('error', 'Gagal Hapus Data', ci_route('analisis_periode.' . $master));
- }
-
- protected static function validate(array $request = []): array
- {
- return [
- 'nama' => htmlentities($request['nama']),
- 'id_state' => bilangan($request['id_state']),
- 'aktif' => bilangan($request['aktif']),
- 'keterangan' => htmlentities($request['keterangan']),
- 'tahun_pelaksanaan' => bilangan($request['tahun_pelaksanaan']),
- ];
- }
-
- private function duplikasi($idMaster, $idPeriode, $request): void
- {
- // Jika status aktif, maka nonaktifkan semua periode yang aktif lainnya pada master yang sama
- if ($request['aktif'] == 1) {
- AnalisisPeriode::where('id_master', $idMaster)->where('id', '!=', $idPeriode)->update(['aktif' => 0]);
- }
-
- if ($request['duplikasi'] == 1) {
- $dpd = AnalisisPeriode::where('id_master', $idMaster)
- ->where('id', '!=', $idPeriode)
- ->orderBy('id', 'desc')
- ->first();
- $sblm = $dpd->id;
- $skrg = $idPeriode;
-
- $dataRespon = AnalisisRespon::where('id_periode', $sblm)
- ->get(['id_subjek', 'id_indikator', 'id_parameter']);
-
- if ($dataRespon->isNotEmpty()) {
- $dataRespon->each(static function ($item) use ($skrg) {
- $item->id_periode = $skrg;
- });
-
- AnalisisRespon::insert($dataRespon->toArray());
- AnalisisResponHasil::preUpdate($idMaster, $skrg);
- }
- }
- }
-}
+getPeriodeChild();
- $data['list_jawab'] = $this->listIndikatorChild($idSubjek, $per);
-
- return view('analisis::respon.child.form', $data);
- }
-
- public function updateChild($master, $parentSubjek, $idSubjek): void
- {
- isCan('u');
- DB::beginTransaction();
- $per = $this->getPeriodeChild();
-
- try {
- AnalisisRespon::updateKuisioner($master, $per, $_POST, $idSubjek);
- DB::commit();
- redirect_with('success', 'Berhasil Simpan Data Kuisioner', ci_route('analisis_respon.' . $master . '.form', $parentSubjek));
- } catch (Exception $e) {
- DB::rollBack();
- log_message('error', $e->getMessage());
- redirect_with('error', 'Gagal Ubah Data Kuisioner ' . $e->getMessage(), ci_route('analisis_respon.' . $master . '.form', $parentSubjek));
- }
- }
-
- public function listIndikatorChild($idSubjek, $periode)
- {
- $idChild = $this->analisisMaster->id_child;
- $per = $periode;
- $delik = session('delik');
- $data = AnalisisIndikator::where('id_master', $idChild)
- ->orderBy('nomor')
- ->get()
- ->toArray();
- $counter = count($data);
-
- for ($i = 0; $i < $counter; $i++) {
- $data[$i]['no'] = $i + 1;
-
- if ($data[$i]['id_tipe'] == 1 || $data[$i]['id_tipe'] == 2) {
- $data[$i]['parameter_respon'] = $this->list_jawab4($idSubjek, $data[$i]['id'], $per);
- } else {
- $data[$i]['parameter_respon'] = ($delik) ? '' : $this->list_jawab5($idSubjek, $data[$i]['id'], $per);
- }
- }
-
- return $data;
- }
-
- private function list_jawab4($id = 0, $in = 0, $per = 0)
- {
- $delik = session('delik');
- $query = AnalisisParameter::selectRaw('id as id_parameter,jawaban,kode_jawaban')
- ->where('id_indikator', $in)
- ->orderBy('kode_jawaban', 'ASC');
- if ($delik) {
- $query->selectRaw('0 as cek');
- } else {
- $query->selectRaw('(SELECT count(id_subjek) FROM analisis_respon WHERE id_parameter = analisis_parameter.id AND id_subjek =' . $id . ' AND id_periode=' . $per . ') as cek');
- }
-
- return $query->get()->toArray();
- }
-
- private function list_jawab5($id = 0, $in = 0, $per = 0)
- {
- return AnalisisRespon::selectRaw('analisis_parameter.id as id_parameter,analisis_parameter.jawaban')
- ->leftJoin('analisis_parameter', 'analisis_respon.id_parameter', '=', 'analisis_parameter.id')
- ->where(['analisis_respon.id_indikator' => $in, 'analisis_respon.id_subjek' => $id, 'analisis_respon.id_periode' => $per])
- ->get()
- ->toArray();
- }
-
- public function getPeriodeChild()
- {
- $idChild = $this->analisisMaster->id_child;
-
- return AnalisisPeriode::select('id')->where('id_master', $idChild)->where('aktif', 1)->first()->id;
- }
-}
+segment(2);
- $this->analisisMaster = AnalisisMaster::findOrFail($master);
- if ($master) {
- $this->periodeAktif = AnalisisPeriode::whereIdMaster($master)->where(['aktif' => StatusEnum::YA])->first();
- if (! $this->periodeAktif) {
- redirect_with('error', 'Tidak ada periode aktif. Entri data respon harus ada periode aktif.', ci_route('analisis_periode', $master));
- }
- }
- view()->share([
- 'selectedMenu' => $this->selectedMenu,
- 'analisis_master' => $this->analisisMaster,
- ]);
- }
-
- public function index($master)
- {
- $data = array_merge([
- 'wilayah' => Wilayah::treeAccess(),
- 'namaPeriode' => $this->periodeAktif->nama,
- ], Analisis::judul_subjek($this->analisisMaster->subjek_tipe));
-
- return view('analisis::respon.index', $data);
- }
-
- public function datatables($master)
- {
- if ($this->input->is_ajax_request()) {
- $sumberData = $this->sumberData();
-
- return datatables()->of($sumberData)
- ->addIndexColumn()
- ->addColumn('aksi', static function ($row) use ($master): string {
- $aksi = '';
- if (can('u')) {
- $aksi .= 'id) . '" class="btn bg-purple btn-sm" title="Input Data">';
- }
- if ($row->bukti_pengesahan) {
- $aksi .= ' ';
- }
-
- return $aksi;
- })->editColumn('cek', static fn ($q) => '
')
- ->rawColumns(['ceklist', 'aksi', 'cek'])
- ->make();
- }
-
- return show_404();
- }
-
- private function sumberData()
- {
- $dusun = $this->input->get('dusun') ?? null;
- $rw = $this->input->get('rw') ?? null;
- $rt = $this->input->get('rt') ?? null;
- $isi = $this->input->get('isi') ?? null;
-
- $idCluster = $rt ? [$rt] : [];
-
- if (empty($idCluster) && ! empty($rw)) {
- [$namaDusun, $namaRw] = explode('__', $rw);
- $idCluster = Wilayah::whereDusun($namaDusun)->whereRw($namaRw)->select(['id'])->get()->pluck('id')->toArray();
- }
-
- if (empty($idCluster) && ! empty($dusun)) {
- $idCluster = Wilayah::whereDusun($dusun)->select(['id'])->get()->pluck('id')->toArray();
- }
-
- $analisisMaster = $this->analisisMaster;
- $analisSumberData = Analisis::sumberData($analisisMaster->subjek_tipe, $idCluster);
- $utama = $analisSumberData['utama'];
- $sumber = $analisSumberData['sumber'];
-
- $sumber->selectRaw('(SELECT a.id_subjek FROM analisis_respon a WHERE a.id_subjek = ' . $utama . ".id AND a.id_periode = {$this->periodeAktif->id} LIMIT 1) as cek")
- ->selectRaw("(SELECT b.pengesahan FROM analisis_respon_bukti b WHERE b.id_master = {$analisisMaster->id} AND b.id_periode = {$this->periodeAktif->id} AND b.id_subjek = " . $utama . '.id limit 1) as bukti_pengesahan');
-
- if ($isi) {
- switch($isi) {
- case 1:
- $sumber->whereRaw("(SELECT COUNT(id_subjek) FROM analisis_respon_hasil WHERE id_subjek = {$utama}.id AND id_periode = {$this->periodeAktif->id}) > 0");
- break;
-
- case 2:
- $sumber->whereRaw("(SELECT COUNT(id_subjek) FROM analisis_respon_hasil WHERE id_subjek = {$utama}.id AND id_periode = {$this->periodeAktif->id}) = 0");
- break;
- }
- }
-
- return $sumber;
- }
-
- public function form($master, $idSubjek)
- {
- isCan('u');
- $analisis = new Analisis();
- $data['fullscreen'] = $this->input->get('fs') ?? null;
- $data['form_action'] = ci_route('analisis_respon.' . $master . '.update', $idSubjek);
- $data['idSubjek'] = $idSubjek;
-
- $data['subjek'] = $analisis->getSubjek($this->analisisMaster, $idSubjek) ?? show_404();
- $data['list_jawab'] = $analisis->listIndikator($this->analisisMaster, $this->periodeAktif->id, $idSubjek);
- $data['list_bukti'] = $analisis->listBukti($this->analisisMaster, $this->periodeAktif->id, $idSubjek);
- $data['list_anggota'] = $analisis->listAnggota($this->analisisMaster, $idSubjek);
- $data['perbaharui'] = ci_route('analisis_respon.' . $master . '.perbaharui', $idSubjek);
-
- return view('analisis::respon.form', $data);
- }
-
- public function update($master, $idSubjek): void
- {
- isCan('u');
- DB::beginTransaction();
-
- try {
- if (! empty($_FILES['pengesahan']['name'])) {
- $per = $this->periodeAktif->id;
- $namaFile = implode('_', [$master, $per, $idSubjek, random_int(10000, 99999)]) . '.jpg';
- $config['upload_path'] = LOKASI_PENGESAHAN;
- $config['allowed_types'] = 'jpg|jpeg';
- $config['max_size'] = 1024;
- $config['file_name'] = $namaFile;
-
- $namaFile = $this->upload('pengesahan', $config, ci_route('analisis_respon.' . $master . '.form', $idSubjek));
- $bukti['pengesahan'] = $namaFile;
- $bukti['id_master'] = $master;
- $bukti['id_subjek'] = $idSubjek;
- $bukti['id_periode'] = $per;
- $bukti = AnalisisResponBukti::firstOrCreate($bukti);
- $bukti->pengesahan = $namaFile;
- $bukti->save();
- }
- AnalisisRespon::updateKuisioner($master, $this->periodeAktif->id, $_POST, $idSubjek);
- DB::commit();
- redirect_with('success', 'Berhasil Simpan Data Kuisioner', ci_route('analisis_respon.' . $master . '.form', $idSubjek));
- } catch (Exception $e) {
- DB::rollBack();
- log_message('error', $e->getMessage());
- redirect_with('error', 'Gagal Ubah Data Kuisioner ' . $e->getMessage(), ci_route('analisis_respon.' . $master . '.form', $idSubjek));
- }
- }
-
- public function perbaharui($master, $idSubjek): void
- {
- isCan('u');
- AnalisisRespon::where('id_subjek', $idSubjek)->whereIn('id_indikator', static fn ($q) => $q->select('id')->from('analisis_indikator')->where(['id_master' => $master]))->delete();
- redirect(ci_route('analisis_respon.' . $master . '.form', $idSubjek));
- }
-
- public function data_ajax()
- {
- $data['analisis_master'] = $this->analisisMaster;
-
- return view('analisis_respon.import.data_ajax', $data);
- }
-
- /**
- * Unduh data analisis respon
- *
- * @param int $tipe | 1. Dengan isian data, 2. Dengan kode isian
- * @param mixed $master
- */
- public function data_unduh($master)
- {
- $paramDatatable = json_decode((string) $this->input->post('params'), 1);
- $_GET = $paramDatatable;
- $tipe = $this->input->post('tipe') ?? 1;
- $data['subjek_tipe'] = $this->analisisMaster->subjek_tipe;
- $data['main'] = $this->sumberData()->get()->map(function ($item) {
-
- $par = AnalisisRespon::selectRaw('kode_jawaban, asign, jawaban, analisis_respon.id_indikator, analisis_respon.id_parameter AS korek')
- ->from('analisis_respon')
- ->join('analisis_parameter', 'analisis_parameter.id', '=', 'analisis_respon.id_parameter')
- ->where('analisis_respon.id_periode', $this->periodeAktif->id)
- ->where('analisis_respon.id_subjek', $item->id)
- ->orderBy('analisis_respon.id_indikator')
- ->get()
- ->toArray();
- $item['par'] = $par;
-
- return $item;
- })->toArray();
- $data['periode'] = $this->periodeAktif->id;
- $data['indikator'] = AnalisisIndikator::indikatorUnduh($master);
- $data['tipe'] = $tipe;
- $key = ($data['periode'] + 3) * ($this->analisisMaster->id + 7) * ($this->analisisMaster->subjek_tipe * 3);
- $data['key'] = 'AN' . $key;
-
- $data['span_kolom'] = match ($this->analisisMaster->subjek_tipe) {
- 5, 6 => 3,
- 7 => 5,
- 8 => 6,
- default => 7,
- };
- $data['judul'] = Analisis::judul_subjek($this->analisisMaster->subjek_tipe);
-
- return view('analisis_respon.import.data_unduh', $data);
- }
-
- public function import($master, $op = 0)
- {
- isCan('u');
- $data['form_action'] = ci_route("analisis_respon.{$master}.import_proses", $op);
-
- return view('analisis_respon.import.import', $data);
- }
-
- public function import_proses($master, $op = 0): void
- {
- isCan('u');
- $periode = $this->periodeAktif->id;
- $subjekTipe = $this->analisisMaster->subjek_tipe;
- DB::beginTransaction();
-
- try {
- $result = (new AnalisisRespon())->import_respon($master, $periode, $subjekTipe, $op);
- DB::commit();
- redirect_with('success', 'Data berhasil diimport', ci_route('analisis_respon.' . $master));
- } catch (Exception $e) {
- DB::rollBack();
- redirect_with('error', 'Data gagal diimport ' . $result['pesan'] . ' ' . $e->getMessage(), ci_route('analisis_respon.' . $master));
- }
- }
-
- public function form_impor_bdt($master)
- {
- isCan('u');
- $data['form_action'] = ci_route("analisis_respon.{$master}.impor_bdt");
- $data['analisis_master'] = $this->analisisMaster;
- $data['formatImpor'] = ci_route('unduh', encrypt(DEFAULT_LOKASI_IMPOR . 'contoh-data-bdt2015.xlsx'));
-
- return view('analisis_respon.import.impor_bdt', $data);
- }
-
- public function impor_bdt($master): void
- {
- isCan('u');
- DB::beginTransaction();
-
- try {
- (new Bdt($master, $this->periodeAktif->id))->impor();
- DB::commit();
- redirect_with('success', 'Data berhasil diimport', ci_route('analisis_respon.' . $master));
- } catch (Exception $e) {
- DB::rollBack();
- redirect_with('error', 'Data gagal diimport ' . $e->getMessage(), ci_route('analisis_respon.' . $master));
- }
- }
-}
+segment(2);
- $this->analisisMaster = AnalisisMaster::findOrFail($master);
- if ($master) {
- $this->periodeAktif = AnalisisPeriode::whereIdMaster($master)->where(['aktif' => StatusEnum::YA])->first();
- if (! $this->periodeAktif) {
- redirect_with('error', 'Tidak ada periode aktif. Untuk laporan ini harus ada periode aktif.', ci_route('analisis_periode', $master));
- }
- }
- view()->share([
- 'selectedMenu' => $this->selectedMenu,
- 'analisis_master' => $this->analisisMaster,
- ]);
- }
-
- public function index($master)
- {
-
- $data['list_tipe'] = TipePertanyaanEnum::all();
- $data['list_kategori'] = AnalisisKategori::where(['id_master' => $master])->get();
- $data['wilayah'] = Wilayah::treeAccess();
-
- return view('analisis::statistik_jawaban.index', $data);
- }
-
- public function datatables($master)
- {
- if ($this->input->is_ajax_request()) {
- $sumberData = $this->sumberData();
- $idCluster = $this->getCluster();
- $sbj = $this->getQuerySubject($idCluster);
- $per = $this->periodeAktif->id;
- $listCluster = http_build_query($this->listCluster);
-
- return datatables()->of($sumberData)
- ->addIndexColumn()
- ->addColumn('par', static fn ($q) => DB::select("SELECT i.id,i.kode_jawaban,i.jawaban,(SELECT COUNT(r.id_subjek) FROM analisis_respon r {$sbj} WHERE r.id_parameter = i.id AND r.id_periode = {$per}) AS jml_p FROM analisis_parameter i WHERE i.id_indikator = {$q->id} ORDER BY i.kode_jawaban AND i.config_id = " . identitas('id')))
- ->editColumn('bobot', static fn ($q) => 'id) . '?' . $listCluster . '" > ' . $q->bobot . '')
- ->addColumn('list_cluster', $listCluster)
- ->editColumn('act_analisis', static fn ($q) => StatusEnum::valueOf($q->act_analisis))
- ->editColumn('id_tipe', static fn ($q) => TipePertanyaanEnum::valueOf($q->id_tipe))
- ->rawColumns(['ceklist', 'bobot'])
- ->make();
- }
-
- return show_404();
- }
-
- private function sumberData()
- {
- $idCluster = $this->getCluster();
- $sbj = $this->getQuerySubject($idCluster);
- $analisisMaster = $this->analisisMaster;
-
- return AnalisisIndikator::with(['kategori'])
- ->selectRaw('analisis_indikator.*')
- ->selectRaw("(SELECT COUNT(DISTINCT r.id_subjek) AS jml FROM analisis_respon r {$sbj} WHERE r.id_indikator = analisis_indikator.id AND r.id_periode = {$this->periodeAktif->id} AND id_parameter > 0) as bobot")
- ->where(['id_master' => $analisisMaster->id]);
- }
-
- private function getCluster()
- {
- $dusun = $this->input->get('dusun') ?? null;
- $rw = $this->input->get('rw') ?? null;
- $rt = $this->input->get('rt') ?? null;
- if ($rt) {
- [$namaDusun, $namaRw] = explode('__', $rw);
- $this->listCluster['dusun'] = $namaDusun;
- $this->listCluster['rw'] = $namaRw;
- $this->listCluster['rt'] = $rt;
- }
- $idCluster = $rt ? [$rt] : [];
-
- if (empty($idCluster) && ! empty($rw)) {
- if (Str::contains($rw, '__') ) {
- [$namaDusun, $namaRw] = explode('__', $rw);
- } else {
- $namaDusun = $dusun;
- $namaRw = $rw;
- }
-
- $idCluster = Wilayah::whereDusun($namaDusun)->whereRw($namaRw)->select(['id'])->get()->pluck('id')->toArray();
- $this->listCluster['dusun'] = $namaDusun;
- $this->listCluster['rw'] = $namaRw;
- }
-
- if (empty($idCluster) && ! empty($dusun)) {
- $idCluster = Wilayah::whereDusun($dusun)->select(['id'])->get()->pluck('id')->toArray();
- $this->listCluster['dusun'] = $dusun;
- }
-
- return $idCluster;
- }
-
- private function getQuerySubject($idCluster)
- {
- $sbj = '';
- $clusterStr = $idCluster ? ' and a.id in (' . implode(',', $idCluster) . ')' : '';
-
- switch ($this->analisisMaster->subjek_tipe) {
- case AnalisisRefSubjekEnum::PENDUDUK: $sbj = 'JOIN tweb_penduduk p ON r.id_subjek = p.id JOIN tweb_wil_clusterdesa a ON p.id_cluster = a.id ';
- break;
-
- case AnalisisRefSubjekEnum::KELUARGA: $sbj = 'JOIN tweb_keluarga v ON r.id_subjek = v.id JOIN tweb_penduduk p ON v.nik_kepala = p.id JOIN tweb_wil_clusterdesa a ON p.id_cluster = a.id ';
- break;
-
- case AnalisisRefSubjekEnum::RUMAH_TANGGA: $sbj = 'JOIN tweb_rtm v ON r.id_subjek = v.id JOIN tweb_penduduk p ON v.nik_kepala = p.id JOIN tweb_wil_clusterdesa a ON p.id_cluster = a.id ';
- break;
-
- case AnalisisRefSubjekEnum::KELOMPOK: $sbj = 'JOIN kelompok v ON r.id_subjek = v.id JOIN tweb_penduduk p ON v.id_ketua = p.id JOIN tweb_wil_clusterdesa a ON p.id_cluster = a.id ';
- break;
- }
- $sbj .= $clusterStr;
-
- return $sbj;
- }
-
- public function grafik_parameter($master, $id = '')
- {
- if ($this->input->get('dusun')) {
- $this->filterColumn['dusun'] = $this->input->get('dusun');
- }
- if ($this->input->get('rw')) {
- $this->filterColumn['rw'] = $this->input->get('rw');
- }
- if ($this->input->get('rt')) {
- $this->filterColumn['rt'] = $this->input->get('rt');
- }
-
- $idCluster = $this->getCluster();
- $sbj = $this->getQuerySubject($idCluster);
- $per = $this->periodeAktif->id;
- $data['form_action'] = ci_route("analisis_statistik_jawaban.{$master}.grafik_parameter", $id);
- $data['filterColumn'] = $this->filterColumn;
- $data['wilayah'] = Wilayah::treeAccess();
- $data['analisis_statistik_jawaban'] = AnalisisIndikator::findOrFail($id);
- $data['analisis_master'] = $this->analisisMaster;
- $data['main'] = AnalisisParameter::selectRaw('analisis_parameter.*')
- ->selectRaw("(SELECT COUNT(r.id_subjek) FROM analisis_respon r {$sbj} WHERE r.id_parameter = analisis_parameter.id AND r.id_periode = {$per}) as nilai")
- ->where('id_indikator', $id)->orderBy('kode_jawaban')->get()->toArray();
-
- return view('analisis::statistik_jawaban.parameter.grafik_table', $data);
- }
-
- public function subjek_parameter($master, $id, $par)
- {
-
- if ($this->input->get('dusun')) {
- $this->filterColumn['dusun'] = $this->input->get('dusun');
- }
- if ($this->input->get('rw')) {
- $this->filterColumn['rw'] = $this->input->get('rw');
- }
- if ($this->input->get('rt')) {
- $this->filterColumn['rt'] = $this->input->get('rt');
- }
-
- $idCluster = $this->getCluster();
- $sbj = $this->getQuerySubject($idCluster);
- $per = $this->periodeAktif->id;
- $listCluster = http_build_query($this->listCluster);
- $sql = "SELECT p.id AS id_pend,r.id_subjek,p.nama,p.nik,(SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(tanggallahir)), '%Y')+0 FROM tweb_penduduk WHERE id = p.id AND config_id = " . identitas('id') . ") AS umur,p.sex,a.dusun,a.rw,a.rt FROM analisis_respon r {$sbj} WHERE r.id_parameter = {$par} AND r.id_periode = {$per}";
- $data['filterColumn'] = $this->filterColumn;
- $data['wilayah'] = Wilayah::treeAccess();
- $data['form_action'] = ci_route("analisis_statistik_jawaban.{$master}.subjek_parameter.{$id}", $par);
- $data['analisis_statistik_pertanyaan'] = AnalisisIndikator::findOrFail($id);
- $data['analisis_statistik_jawaban'] = AnalisisParameter::findOrFail($par);
- $data['cetak_action'] = ci_route("analisis_statistik_jawaban.{$master}.cetak_subjek.{$id}.{$par}.cetak") . '?' . $listCluster;
- $data['unduh_action'] = ci_route("analisis_statistik_jawaban.{$master}.cetak_subjek.{$id}.{$par}.unduh") . '?' . $listCluster;
- $data['analisis_master'] = $this->analisisMaster;
- $data['main'] = DB::select($sql);
-
- return view('analisis::statistik_jawaban.parameter.subjek_table', $data);
- }
-
- public function cetak($master)
- {
- $tipe = $this->input->post('tipe') ?? 'cetak';
- if ($tipe == 'unduh') {
- $tgl = date('d_m_Y');
- header('Content-type: application/octet-stream');
- header("Content-Disposition: attachment; filename=statistik_analisis_jawaban_{$tgl}.xls");
- header('Pragma: no-cache');
- header('Expires: 0');
- }
- $paramDatatable = json_decode((string) $this->input->post('params'), 1);
- $_GET = $paramDatatable;
- $idCluster = $this->getCluster();
- $sbj = $this->getQuerySubject($idCluster);
- $per = $this->periodeAktif->id;
- $data['main'] = $this->sumberData()->get()->map(static function ($item) use ($per, $sbj) {
- $par = DB::select("SELECT i.id,i.kode_jawaban,i.jawaban,(SELECT COUNT(r.id_subjek) FROM analisis_respon r {$sbj} WHERE r.id_parameter = i.id AND r.id_periode = {$per}) AS jml_p FROM analisis_parameter i WHERE i.id_indikator = {$item->id} ORDER BY i.kode_jawaban AND i.config_id = " . identitas('id'));
- $item['par'] = $par;
-
- return $item;
- })->toArray();
-
- return view('analisis::statistik_jawaban.table_print', $data);
- }
-
- public function cetak_subjek($master, $id, $par, $tipe = 'cetak')
- {
- if ($tipe == 'unduh') {
- $tgl = date('d_m_Y');
- header('Content-type: application/octet-stream');
- header("Content-Disposition: attachment; filename=subjek_analisis_{$tgl}.xls");
- header('Pragma: no-cache');
- header('Expires: 0');
- }
-
- $idCluster = $this->getCluster();
- $sbj = $this->getQuerySubject($idCluster);
- $per = $this->periodeAktif->id;
- $data['analisis_statistik_pertanyaan'] = AnalisisIndikator::findOrFail($id);
- $data['analisis_statistik_jawaban'] = AnalisisParameter::findOrFail($par);
- $sql = "SELECT p.id AS id_pend,r.id_subjek,p.nama,p.nik,(SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(tanggallahir)), '%Y')+0 FROM tweb_penduduk WHERE id = p.id AND config_id = " . identitas('id') . ") AS umur,p.sex,a.dusun,a.rw,a.rt FROM analisis_respon r {$sbj} WHERE r.id_parameter = {$par} AND r.id_periode = {$per}";
- $data['main'] = DB::select($sql);
-
- return view('analisis::statistik_jawaban.parameter.subjek_print', $data);
- }
-}
+ 'Nama',
- 'nomor' => 'NIK',
- 'kolom' => [
- ['data' => 'nid', 'name' => 'nik'],
- ['data' => 'nama', 'name' => 'nama'],
- ],
- ];
- break;
-
- case AnalisisRefSubjekEnum::KELUARGA:
- $judul = [
- 'nama' => 'Kepala Keluarga',
- 'nomor' => 'Nomor KK',
- 'kolom' => [
- ['data' => 'nid', 'name' => 'no_kk'],
- ['data' => 'nama', 'name' => 'penduduk_hidup.nama'],
- ],
- ];
- break;
-
- case AnalisisRefSubjekEnum::RUMAH_TANGGA:
- $judul = [
- 'nama' => 'Kepala Rumah Tangga',
- 'nomor' => 'Nomor Rumah Tangga',
- 'kolom' => [
- ['data' => 'nid', 'name' => 'tweb_rtm.no_kk'],
- ['data' => 'nama', 'name' => 'penduduk_hidup.nama'],
- ],
- ];
- break;
-
- case AnalisisRefSubjekEnum::KELOMPOK:
- $judul = [
- 'nama' => 'Nama Kelompok',
- 'nomor' => 'ID Kelompok',
- 'kolom' => [
- ['data' => 'nid', 'name' => 'kode'],
- ['data' => 'nama', 'name' => 'nama'],
- ],
- ];
- break;
-
- case AnalisisRefSubjekEnum::DESA:
- $desa = ucwords(setting('sebutan_desa'));
- $judul = [
- 'nama' => "Nama {$desa}",
- 'nomor' => "Kode {$desa}",
- 'kolom' => [
- ['data' => 'nid', 'name' => 'kode_desa'],
- ['data' => 'nama', 'name' => 'nama_desa'],
- ],
- ];
- break;
-
- case AnalisisRefSubjekEnum::DUSUN:
- $dusun = ucwords(setting('sebutan_dusun'));
- $judul = [
- 'nama' => "Nama {$dusun}",
- 'nomor' => $dusun,
- 'kolom' => [
- ['data' => 'nid', 'name' => 'dusun'],
- ['data' => 'nama', 'name' => 'dusun'],
- ],
- ];
- break;
-
- case AnalisisRefSubjekEnum::RW:
- $judul = [
- 'nama' => 'Nama ' . setting('sebutan_dusun') . '/RW',
- 'nomor' => 'RW',
- 'kolom' => [
- ['data' => 'nid', 'name' => 'rw'],
- ['data' => 'nama', 'name' => 'rw'],
- ],
- ];
- break;
-
- case AnalisisRefSubjekEnum::RT:
- $judul = [
- 'nama' => 'Nama ' . setting('sebutan_dusun') . '/RW/RT',
- 'nomor' => 'RT',
- 'kolom' => [
- ['data' => 'nid', 'name' => 'rt'],
- ['data' => 'nama', 'name' => 'rt'],
- ],
- ];
- break;
-
- default:
- $judul = null;
- }
-
- return $judul;
- }
-
- public static function sumberData($subjek_tipe, $idCluster = [])
- {
- $sumber = null;
- $utama = '';
-
- switch ($subjek_tipe) {
- case AnalisisRefSubjekEnum::PENDUDUK:
- $utama = 'penduduk_hidup';
- $sumber = PendudukHidup::join('tweb_wil_clusterdesa', 'penduduk_hidup.id_cluster', '=', 'tweb_wil_clusterdesa.id')
- ->join('tweb_keluarga', 'tweb_keluarga.id', '=', 'penduduk_hidup.id_kk')
- ->when($idCluster, static fn ($q) => $q->whereIn('penduduk_hidup.id_cluster', $idCluster))
- ->selectRaw('penduduk_hidup.id, nik AS nid, penduduk_hidup.nama, tweb_keluarga.no_kk as kk, tweb_keluarga.alamat, sex, tweb_wil_clusterdesa.dusun, tweb_wil_clusterdesa.rw, tweb_wil_clusterdesa.rt');
- break;
-
- case AnalisisRefSubjekEnum::KELUARGA:
- $utama = 'keluarga_aktif';
- $sumber = KeluargaAktif::join('penduduk_hidup', 'keluarga_aktif.nik_kepala', '=', 'penduduk_hidup.id')
- ->join('tweb_wil_clusterdesa', 'penduduk_hidup.id_cluster', '=', 'tweb_wil_clusterdesa.id')
- ->when($idCluster, static fn ($q) => $q->whereIn('penduduk_hidup.id_cluster', $idCluster))
- ->selectRaw('keluarga_aktif.id, keluarga_aktif.no_kk AS nid, penduduk_hidup.nama, penduduk_hidup.nik as kk, keluarga_aktif.alamat, penduduk_hidup.sex, tweb_wil_clusterdesa.dusun, tweb_wil_clusterdesa.rw, tweb_wil_clusterdesa.rt');
- break;
-
- case AnalisisRefSubjekEnum::RUMAH_TANGGA:
- $utama = 'tweb_rtm';
- $sumber = Rtm::join('penduduk_hidup', 'tweb_rtm.nik_kepala', '=', 'penduduk_hidup.id')
- ->join('tweb_keluarga', 'tweb_keluarga.id', '=', 'penduduk_hidup.id_kk')
- ->join('tweb_wil_clusterdesa', 'penduduk_hidup.id_cluster', '=', 'tweb_wil_clusterdesa.id')
- ->when($idCluster, static fn ($q) => $q->whereIn('penduduk_hidup.id_cluster', $idCluster))
- ->selectRaw('tweb_rtm.id, tweb_rtm.no_kk AS nid, penduduk_hidup.nama, penduduk_hidup.nik as kk, tweb_keluarga.alamat, penduduk_hidup.sex, tweb_wil_clusterdesa.dusun, tweb_wil_clusterdesa.rw, tweb_wil_clusterdesa.rt');
- break;
-
- case AnalisisRefSubjekEnum::KELOMPOK:
- $utama = 'kelompok';
- $sumber = Kelompok::leftJoin('penduduk_hidup', 'kelompok.id_ketua', '=', 'penduduk_hidup.id')
- ->join('tweb_wil_clusterdesa', 'penduduk_hidup.id_cluster', '=', 'tweb_wil_clusterdesa.id')
- ->when($idCluster, static fn ($q) => $q->whereIn('penduduk_hidup.id_cluster', $idCluster))
- ->selectRaw('kelompok.id, kelompok.kode AS nid, kelompok.nama, penduduk_hidup.sex, tweb_wil_clusterdesa.dusun, tweb_wil_clusterdesa.rw, tweb_wil_clusterdesa.rt');
- break;
-
- case AnalisisRefSubjekEnum::DESA:
- $utama = 'config';
- $sumber = Config::selectRaw('config.id, config.kode_desa as nid, config.nama_desa as nama, "-" as sex, "-" as dusun, "-" as rw, "-" as rt');
- break;
-
- case AnalisisRefSubjekEnum::DUSUN:
- $sebutanDusun = setting('sebutan_dusun');
- $utama = 'tweb_wil_clusterdesa';
- $sumber = Wilayah::where('rt', '0')->where('rw', '0')
- ->when($idCluster, static fn ($q) => $q->whereIn('id', $idCluster))
- ->selectRaw("id, dusun AS nid, CONCAT(UPPER('" . $sebutanDusun . " '), dusun) as nama, '-' as sex, dusun, '-' as rw, '-' as rt");
- break;
-
- case AnalisisRefSubjekEnum::RW:
- $sebutanDusun = setting('sebutan_dusun');
- $utama = 'tweb_wil_clusterdesa';
- $sumber = Wilayah::where('rt', '0')->where('rw', '!=', '0')->where('rw', '!=', '-')
- ->when($idCluster, static fn ($q) => $q->whereIn('id', $idCluster))
- ->selectRaw("id, rw AS nid, CONCAT( UPPER('" . $sebutanDusun . " '), dusun, ' RW ', rw) as nama, '-' as sex, dusun, rw, '-' as rt");
- break;
-
- case AnalisisRefSubjekEnum::RT:
- $sebutanDusun = setting('sebutan_dusun');
- $utama = 'tweb_wil_clusterdesa';
- $sumber = Wilayah::where('rt', '!=', '0')->where('rt', '!=', '-')
- ->when($idCluster, static fn ($q) => $q->whereIn('id', $idCluster))
- ->selectRaw("id, rt AS nid, CONCAT( UPPER('" . $sebutanDusun . " '), dusun, ' RW ', rw, ' RT ', rt) as nama, '-' as sex, dusun, rw, rt");
- break;
- }
-
- return ['sumber' => $sumber, 'utama' => $utama];
- }
-
- public function getSubjek($analisisMaster, $id)
- {
- $sebutan_dusun = ucwords(setting('sebutan_dusun'));
- $subjekTipe = $analisisMaster->subjek_tipe;
- $sumber = null;
-
- switch ($subjekTipe) {
- case AnalisisRefSubjekEnum::PENDUDUK:
- $sumber = PendudukHidup::selectRaw('penduduk_hidup.*, penduduk_hidup.nik AS nid, tweb_wil_clusterdesa.dusun, tweb_wil_clusterdesa.rw, tweb_wil_clusterdesa.rt')
- ->selectRaw("CONCAT('{$sebutan_dusun} ', tweb_wil_clusterdesa.dusun, ', RT ', tweb_wil_clusterdesa.rt, ' / RW ', tweb_wil_clusterdesa.rw) as wilayah")
- ->join('tweb_wil_clusterdesa', 'penduduk_hidup.id_cluster', '=', 'tweb_wil_clusterdesa.id')
- ->where('penduduk_hidup.id', $id);
- break;
-
- case AnalisisRefSubjekEnum::KELUARGA:
- $sumber = KeluargaAktif::selectRaw('keluarga_aktif.*, keluarga_aktif.no_kk AS nid, penduduk_hidup.nik AS nik_kepala, penduduk_hidup.nama, penduduk_hidup.sex, tweb_wil_clusterdesa.dusun, tweb_wil_clusterdesa.rw, tweb_wil_clusterdesa.rt')
- ->selectRaw("CONCAT('{$sebutan_dusun} ', tweb_wil_clusterdesa.dusun, ', RT ', tweb_wil_clusterdesa.rt, ' / RW ', tweb_wil_clusterdesa.rw) as wilayah")
- ->leftJoin('penduduk_hidup', 'keluarga_aktif.nik_kepala', '=', 'penduduk_hidup.id')
- ->leftJoin('tweb_wil_clusterdesa', 'penduduk_hidup.id_cluster', '=', 'tweb_wil_clusterdesa.id')
- ->where('keluarga_aktif.id', $id);
-
- break;
-
- case AnalisisRefSubjekEnum::RUMAH_TANGGA:
- $sumber = Rtm::selectRaw('tweb_rtm.id, tweb_rtm.no_kk AS nid, penduduk_hidup.nama, penduduk_hidup.sex, tweb_wil_clusterdesa.dusun, tweb_wil_clusterdesa.rw, tweb_wil_clusterdesa.rt')
- ->join('penduduk_hidup', 'tweb_rtm.nik_kepala', '=', 'penduduk_hidup.id')
- ->join('tweb_wil_clusterdesa', 'penduduk_hidup.id_cluster', '=', 'tweb_wil_clusterdesa.id')
- ->where('tweb_rtm.id', $id);
- break;
-
- case AnalisisRefSubjekEnum::KELOMPOK:
- $sumber = Kelompok::selectRaw('kelompok.nama AS no_kk, penduduk_hidup.nama')
- ->leftJoin('penduduk_hidup', 'kelompok.id_ketua', '=', 'penduduk_hidup.id')
- ->leftJoin('tweb_wil_clusterdesa', 'penduduk_hidup.id_cluster', '=', 'tweb_wil_clusterdesa.id')
- ->where('kelompok.id', $id);
- break;
-
- case AnalisisRefSubjekEnum::DESA:
- $sumber = Config::selectRaw("config.id, config.kode_desa AS nid, config.nama_desa as nama, '-' as sex, '-' as dusun, '-' as rw, '-' as rt")
- ->selectRaw("
- config.nama_desa, config.kode_desa, config.kode_pos, config.alamat_kantor, config.telepon as no_telepon_kantor_desa, config.email_desa, CONCAT('Lintang : ', config.lat, ', ', 'Bujur : ', config.lng) as titik_koordinat_desa")
- ->selectRaw('
- tweb_desa_pamong.pamong_nip AS nip_kepala_desa,
- (case when tweb_penduduk.sex is not null then tweb_penduduk.sex else tweb_desa_pamong.pamong_sex end) as jk_kepala_desa,
- (case when tweb_penduduk.pendidikan_kk_id is not null then pendidikan_warga.nama else pendidikan_pamong.nama end) as pendidikan_kepala_desa,
- (case when tweb_penduduk.nama is not null then tweb_penduduk.nama else tweb_desa_pamong.pamong_nama end) AS nama_kepala_desa,
- tweb_penduduk.telepon as no_telepon_kepala_desa
- ')
- ->leftJoin('tweb_desa_pamong', 'config.pamong_id', '=', 'tweb_desa_pamong.pamong_id')
- ->leftJoin('tweb_penduduk', 'tweb_desa_pamong.id_pend', '=', 'tweb_penduduk.id')
- ->leftJoin('tweb_penduduk_pendidikan_kk as pendidikan_warga', 'tweb_penduduk.pendidikan_kk_id', '=', 'pendidikan_warga.id')
- ->leftJoin('tweb_penduduk_pendidikan_kk as pendidikan_pamong', 'tweb_desa_pamong.pamong_pendidikan', '=', 'pendidikan_pamong.id')
- ->where('config.id', $id);
- break;
-
- case AnalisisRefSubjekEnum::DUSUN:
- $sumber = Wilayah::selectRaw("id, dusun AS nid, UPPER('{$sebutan_dusun}') as nama, '-' as sex, dusun, '-' as rw, '-' as rt")
- ->where('rt', '0')->where('rw', '0')->where('tweb_wil_clusterdesa.id', $id);
- break;
-
- case AnalisisRefSubjekEnum::RW:
- $sumber = Wilayah::selectRaw("id, rw AS nid, CONCAT( UPPER('{$sebutan_dusun} '), dusun, ' RW ', rw) as nama, '-' as sex, dusun, rw, '-' as rt")
- ->where('rt', '0')->where('rw', '!=', '0')->where('tweb_wil_clusterdesa.id', $id);
- break;
-
- case AnalisisRefSubjekEnum::RT:
- $sumber = Wilayah::selectRaw("id, rt AS nid, CONCAT( UPPER('{$sebutan_dusun} '), dusun, ' RW ', rw, ' RT ', rt) as nama, '-' as sex, dusun, rw, rt")
- ->where('rt', '!=', '0')->where('rt', '!=', '-')->where('tweb_wil_clusterdesa.id', $id);
- break;
-
- default: return null;
- }
- $data = $sumber->first()?->toArray();
-
- // Data tambahan subjek desa
- if ($subjekTipe == 5) {
- $tambahan = [
- 'jumlah_total_penduduk' => PendudukHidup::count(),
- 'jumlah_penduduk_laki_laki' => PendudukHidup::where('sex', JenisKelaminEnum::LAKI_LAKI)->count(),
- 'jumlah_penduduk_perempuan' => PendudukHidup::where('sex', JenisKelaminEnum::PEREMPUAN)->count(),
- 'jumlah_penduduk_pedatang' => PendudukHidup::where('status', 2)->count(),
- 'jumlah_penduduk_yang_pergi' => LogPenduduk::where('kode_peristiwa', 3)->count(),
- 'jumlah_total_kepala_keluarga' => KeluargaAktif::leftJoin('penduduk_hidup', 'keluarga_aktif.nik_kepala', '=', 'penduduk_hidup.id')->count(),
- 'jumlah_kepala_keluarga_laki_laki' => KeluargaAktif::leftJoin('penduduk_hidup', 'keluarga_aktif.nik_kepala', '=', 'penduduk_hidup.id')->where('sex', JenisKelaminEnum::LAKI_LAKI)->count(),
- 'jumlah_kepala_keluarga_perempuan' => KeluargaAktif::leftJoin('penduduk_hidup', 'keluarga_aktif.nik_kepala', '=', 'penduduk_hidup.id')->where('sex', JenisKelaminEnum::PEREMPUAN)->count(),
- 'jumlah_peserta_bpjs' => PendudukHidup::whereNotNull('bpjs_ketenagakerjaan')->count(),
- ];
-
- $data = array_merge($data, $tambahan);
- }
-
- return $data;
- }
-
- public function listAnggota($analisisMaster, $id)
- {
- $subjek = $analisisMaster->subjek_tipe;
- if (in_array($subjek, [AnalisisRefSubjekEnum::KELUARGA, AnalisisRefSubjekEnum::RUMAH_TANGGA])) {
- switch ($subjek) {
- case AnalisisRefSubjekEnum::KELUARGA:
- return PendudukHidup::where('id_kk', $id)->orderBy('kk_level')->get()->toArray();
-
- case AnalisisRefSubjekEnum::RUMAH_TANGGA:
- return PendudukHidup::where('id_rtm', $id)->orderBy('rtm_level')->get()->toArray();
-
- default: return null;
- }
- }
-
- return null;
- }
-
- public function listIndikator($analisisMaster, $periode, $id)
- {
- $per = $periode;
- $delik = session('delik');
-
- $data = AnalisisIndikator::with(['kategori'])
- ->where('id_master', $analisisMaster->id)
- ->orderByRaw("LPAD(nomor, 10, ' ') ASC")
- ->get()
- ->toArray();
- $counter = count($data);
-
- for ($i = 0; $i < $counter; $i++) {
- $data[$i]['no'] = $i + 1;
- $data[$i]['kategori'] = $data[$i]['kategori']['kategori'];
- if ($data[$i]['id_tipe'] == 1 || $data[$i]['id_tipe'] == 2) {
- $data[$i]['parameter_respon'] = $this->listJawab2($id, $data[$i]['id'], $per);
- } else {
- $data[$i]['parameter_respon'] = $delik ? '' : $this->listJawab3($id, $data[$i]['id'], $per);
- }
- }
-
- return $data;
- }
-
- private function listJawab2($id = 0, $in = 0, $per = 0)
- {
- $delik = session('delik');
- $query = AnalisisParameter::selectRaw('id as id_parameter,jawaban,kode_jawaban')
- ->where('id_indikator', $in)
- ->orderBy('kode_jawaban', 'ASC');
- if ($delik) {
- $query->selectRaw('0 as cek');
- } else {
- $query->selectRaw('(SELECT count(id_subjek) FROM analisis_respon WHERE id_parameter = analisis_parameter.id AND id_subjek =' . $id . ' AND id_periode=' . $per . ') as cek');
- }
-
- return $query->get()->toArray();
- }
-
- private function listJawab3($id = 0, $in = 0, $per = 0)
- {
- return AnalisisRespon::selectRaw('analisis_parameter.id as id_parameter,analisis_parameter.jawaban')
- ->leftJoin('analisis_parameter', 'analisis_respon.id_parameter', '=', 'analisis_parameter.id')
- ->where(['analisis_respon.id_indikator' => $in, 'analisis_respon.id_subjek' => $id, 'analisis_respon.id_periode' => $per])
- ->get()
- ->toArray();
- }
-
- public function listBukti($analisisMaster, $periode, $id)
- {
- $per = $periode;
-
- return AnalisisResponBukti::select(['pengesahan'])
- ->where('id_subjek', $id)
- ->where('id_master', $analisisMaster->id)
- ->where('id_periode', $per)
- ->orderBy('tgl_update', 'DESC')
- ->get()
- ->toArray();
- }
-
- private function listJawabLaporan($periode, $idSubjek, $in)
- {
- $per = $periode;
- $obj = AnalisisRespon::selectRaw('analisis_parameter.id as id_parameter, analisis_parameter.jawaban as jawaban,analisis_parameter.nilai')
- ->join('analisis_parameter', 'analisis_respon.id_parameter', '=', 'analisis_parameter.id')
- ->where('id_subjek', $idSubjek)
- ->where('id_periode', $per)
- ->where('analisis_respon.id_indikator', $in)
- ->first();
-
- $data['jawaban'] = $obj->jawaban ?? '-';
- $data['nilai'] = $obj->nilai ?? '0';
-
- return $data;
- }
-
- public function listIndikatorLaporan($analisisMaster, $periode, $id = 0)
- {
- $data = AnalisisIndikator::where('id_master', $analisisMaster->id)->orderBy('nomor')->get()->toArray();
- $counter = count($data);
-
- for ($i = 0; $i < $counter; $i++) {
- $data[$i]['no'] = $i + 1;
- $ret = $this->listJawabLaporan($periode, $id, $data[$i]['id']);
- $data[$i]['jawaban'] = $ret['jawaban'];
- $data[$i]['nilai'] = $ret['nilai'];
- $data[$i]['poin'] = $data[$i]['bobot'] * $ret['nilai'];
- }
-
- return $data;
- }
-
- public function multi_jawab($master)
- {
- $kf = session('jawab') ?? '7777777';
-
- $data = AnalisisIndikator::selectRaw('analisis_indikator.pertanyaan,analisis_indikator.nomor,analisis_parameter.jawaban,analisis_parameter.id AS id_jawaban,analisis_parameter.kode_jawaban')
- ->selectRaw("(SELECT count(id) FROM analisis_parameter WHERE id IN ({$kf}) AND id = analisis_parameter.id AND analisis_indikator.config_id = " . identitas('id') . ') AS cek')
- ->where('id_master', $master)
- ->join('analisis_parameter', 'analisis_parameter.id_indikator', '=', 'analisis_indikator.id')
- ->orderBy('nomor')->orderBy('kode_jawaban')->get()->toArray();
- $counter = count($data);
-
- for ($i = 0; $i < $counter; $i++) {
- $data[$i]['no'] = $i + 1;
- }
-
- return $data;
- }
-}
+ 2,
- 'nama' => 80,
- 'nik' => 81,
- 'rtm_level' => 82,
- 'awal_respon_rt' => 14,
- 'awal_respon_penduduk' => 82,
- ];
- private $kolom_subjek;
- private $kolom_indikator_pertama;
- private $list_id_subjek;
-
- public function __construct($idMaster, $periode)
- {
- $this->idMaster = $idMaster;
- $this->periode = $periode;
- $this->analisisMaster = AnalisisMaster::findOrFail($idMaster);
- }
-
- private function file_import_valid()
- {
- // error 1 = UPLOAD_ERR_INI_SIZE; lihat Upload.php
- // TODO: pakai cara upload yg disediakan Codeigniter
- if ($_FILES['bdt']['error'] == 1) {
- $upload_mb = max_upload();
- $_SESSION['error_msg'] .= ' -> Ukuran file melebihi batas ' . $upload_mb . ' MB';
- $_SESSION['success'] = -1;
-
- return false;
- }
- $tipe_file = TipeFile($_FILES['bdt']);
- $mime_type_excel = ['application/vnd.ms-excel', 'application/octet-stream'];
- if (! in_array($tipe_file, $mime_type_excel)) {
- $_SESSION['error_msg'] .= ' -> Jenis file salah: ' . $tipe_file;
- $_SESSION['success'] = -1;
-
- return false;
- }
-
- return true;
- }
-
- /*
- * 1. Impor pengelompokan rumah tangga
- * 2. Impor data BDT 2015 ke dalam analisis_respon
- *
- * Abaikan subjek di data BDT yang tidak ada di database
- */
- public function impor(): void
- {
- $_SESSION['error_msg'] = '';
- $_SESSION['success'] = 1;
- if ($this->file_import_valid() == false) {
- return;
- }
-
- // Pakai parameter 'false' untuk mengurangi penggunaan memori
- // https://github.com/jasonrogena/php-excel-reader/issues/96
- $data = new Spreadsheet_Excel_Reader($_FILES['bdt']['tmp_name'], false);
- // Baca jumlah baris berkas BDT
- $this->jml_baris = $data->rowcount($sheet_index = 0);
- $this->baris_pertama = $this->cari_baris_pertama($data, $this->jml_baris);
- if ($this->baris_pertama <= 0) {
- $_SESSION['error_msg'] .= ' -> Tidak ada data';
- $_SESSION['success'] = -1;
-
- return;
- }
-
- // BDT2015 terbatas pada subjek rumah tangga dan penduduk
- if ($_SESSION['subjek_tipe'] == 3) {
- // Rumah tangga
- $this->kolom_subjek = $this->kolom['id_rtm'];
- $this->kolom_indikator_pertama = $this->kolom['awal_respon_rt'];
- } else {
- // Penduduk
- $this->kolom_subjek = $this->kolom['nik'];
- $this->kolom_indikator_pertama = $this->kolom['awal_respon_penduduk'];
- }
-
- $data_sheet = $data->sheets[0]['cells'];
- $this->impor_respon($data_sheet);
- }
-
- private function impor_respon($data_sheet): void
- {
- $gagal = 0;
- $ada = 0;
- $sudah_proses = [];
- $per = $this->periode;
- $indikator = AnalisisIndikator::where('id_master', $this->idMaster)->orderBy('id')->get()->toArray();
-
- $respon = [];
-
- for ($i = $this->baris_pertama; $i <= $this->jml_baris; $i++) {
- $data_subjek = $this->tulis_rtm($data_sheet[$i], $rtm);
- if (! $data_subjek) {
- $gagal++;
-
- continue; // Jangan impor jika NIK tidak ada di database
- }
- // Proses setiap subjek sekali saja
- if (! in_array($data_sheet[$i][$this->kolom_subjek], $sudah_proses)) {
- // $list_id_subjek[nik] = id-penduduk atau $list_id_subjek[id_rtm] = id-rumah-tangga
- if ($this->analisisMaster->subjek_tipe == 3) {
- $this->list_id_subjek[$data_sheet[$i][$this->kolom_subjek]] = $rtm;
- } else {
- $this->list_id_subjek[$data_sheet[$i][$this->kolom_subjek]] = $data_subjek['id_penduduk'];
- }
- $this->siapkan_respon($indikator, $per, $data_sheet[$i], $respon);
- $sudah_proses[] = $data_sheet[$i][$this->kolom_subjek];
- $ada++;
- }
- }
-
- // echo '
';
- // echo var_dump($this->list_id_subjek);
- $this->hapus_respon($this->list_id_subjek);
-
- // echo '
';
- // echo var_dump($respon);
-
- $outp = empty($respon) ? false : AnalisisRespon::insert($respon);
- (new AnalisisRespon())->pre_update($this->idMaster, $this->periode);
-
- if (! $outp) {
- $_SESSION['success'] = -1;
- }
-
- $nama_subjek = ($_SESSION['subjek_tipe'] == 3) ? 'RUMAH TANGGA' : 'PENDUDUK';
- echo "
JUMLAH PENDUDUK GAGAL : {$gagal}";
- echo "
JUMLAH {$nama_subjek} BERHASIL : {$ada}";
- echo 'LANJUT';
- }
-
- // Hapus semua respon untuk semua subjek pada periode aktif
- private function hapus_respon($list_id_subjek): void
- {
- if (empty($list_id_subjek)) {
- return;
- }
-
- $per = $this->periode;
- $prefix = $list_id_subjek_str = '';
-
- foreach ($list_id_subjek as $id) {
- $list_id_subjek_str .= $prefix . "'" . $id . "'";
- $prefix = ', ';
- }
-
- AnalisisRespon::where('id_periode', $per)->whereRaw("id_subjek in({$list_id_subjek_str})")->delete();
- }
-
- private function cari_baris_pertama(Spreadsheet_Excel_Reader $data, $jml_baris)
- {
- if ($jml_baris <= 1) {
- return 0;
- }
-
- $ada_baris = false;
-
- // Baris pertama baris judul kolom
- for ($i = 2; $i <= $jml_baris; $i++) {
- // Baris kedua yang mungkin ditambahkan untuk memudahkan penomoran kolom
- if ($data->val($i, 1) == 'KOLOM') {
- continue;
- }
- if (empty($data->val($i, 1))) {
- continue;
- }
- $ada_baris = true;
- $baris_pertama = $i;
- break;
- }
- if ($ada_baris) {
- return $baris_pertama;
- }
-
- return 0;
- }
-
- private function tulis_rtm($baris, &$rtm)
- {
- $id_rtm = $baris[$this->kolom['id_rtm']];
- $rtm_level = $baris[$this->kolom['rtm_level']];
- if ($rtm_level > 1) {
- $rtm_level = 2;
- } //Hanya rekam kepala & anggota rumah tangga
- $nik = $baris[$this->kolom['nik']];
-
- $pendudukObj = Penduduk::where('nik', $nik)->first();
- if (! $pendudukObj) {
- // Laporkan penduduk BDT tidak ada di database
- echo "" . $id_rtm . ' ' . $rtm_level . ' ' . $nik . ' ' . $baris[$this->kolom['nama']] . ' == tidak ditemukan di database penduduk.
';
-
- return false;
- }
-
- $rtm = Rtm::where('no_kk', $id_rtm)->first()->id;
- if ($rtm) {
- // Update rumah tangga
- if ($rtm_level == 1) {
- Rtm::where('id', $rtm)->update(['nik_kepala' => $pendudukObj->id]);
- }
- } else {
- // Tambah rumah tangga
- $rtm_data = [];
- $rtm_data['no_kk'] = $id_rtm;
- if ($rtm_level == 1) {
- $rtm_data['nik_kepala'] = $pendudukObj->id;
- }
-
- $rtm = (Rtm::create($rtm_data))->id;
- }
-
- $penduduk = [];
- $penduduk['id_rtm'] = $id_rtm;
- $penduduk['rtm_level'] = $rtm_level;
- $penduduk['updated_at'] = date('Y-m-d H:i:s');
- $penduduk['updated_by'] = auth()->id;
- Penduduk::where('nik', $nik)->update($penduduk);
- $penduduk['id_penduduk'] = $pendudukObj->id;
-
- return $penduduk;
- }
-
- private function siapkan_respon($indikator, $per, $baris, &$respon): void
- {
- foreach ($indikator as $key => $indi) {
- $isi = $baris[$this->kolom_indikator_pertama + $key];
-
- switch ($indi['id_tipe']) {
- case 1:
- $list_parameter = $this->parameter_pilihan_tunggal($indi['id'], $isi);
- break;
-
- case 2:
- $list_parameter = $this->parameter_pilihan_ganda($indi['id'], $isi);
- break;
-
- default:
- $list_parameter = $this->parameter_isian($indi['id'], $isi);
- break;
- }
-
- // Himpun respon untuk semua indikator untuk semua baris
- foreach ($list_parameter as $parameter) {
- if (! empty($parameter)) {
- $respon[] = [
- 'id_indikator' => $indi['id'],
- 'id_subjek' => $this->list_id_subjek[$baris[$this->kolom_subjek]],
- 'id_periode' => $per,
- 'id_parameter' => $parameter,
- ];
- }
- }
- }
- }
-
- private function parameter_pilihan_tunggal($id_indikator, $isi)
- {
- $param = AnalisisParameter::select('id')->where('id_indikator', $id_indikator)->where('kode_jawaban', $isi)->first()->toArray();
- if ($param) {
- $in_param = $param['id'];
- } elseif ($isi == '') {
- $in_param = 0;
- } else {
- $in_param = -1;
- }
-
- return [$in_param];
- }
-
- private function parameter_pilihan_ganda($id_indikator, $isi)
- {
- if (empty($isi)) {
- return [null];
- }
- $id_isi = explode(',', $isi);
- $in_param = [];
-
- foreach ($id_isi as $isi) {
- $param = AnalisisParameter::select('id')->where('id_indikator', $id_indikator)->where('kode_jawaban', $isi)->first()->toArray();
- if ($param['id'] != '') {
- $in_param[] = $param['id'];
- }
- }
-
- return $in_param;
- }
-
- private function parameter_isian($id_indikator, $isi)
- {
- if (empty($isi)) {
- return [null];
- }
- $param = AnalisisParameter::select('id')->where('id_indikator', $id_indikator)->where('jawaban', $isi)->first()->toArray();
-
- // apakah sdh ada jawaban yg sama
- if ($param) {
- $in_param = $param['id'];
- } else {
- // simpan setiap jawaban yang baru
- $parameter = [];
- $parameter['jawaban'] = $isi;
- $parameter['id_indikator'] = $id_indikator;
- $parameter['asign'] = 0;
-
- $in_param = (AnalisisParameter::create($parameter))->id;
- }
-
- return [$in_param];
- }
-}
+request = $request;
- }
-
- public function save(): array
- {
- $list_error = [];
-
- // SIMPAN ANALISIS MASTER
- $data_analisis_master = [
- 'nama' => $this->request->get('nama_form') == '' ? 'Response Google Form ' . date('dmY_His') : $this->request->get('nama_form'),
- 'subjek_tipe' => $this->request->get('subjek_analisis') == 0 ? 1 : $this->request->get('subjek_analisis'),
- 'id_kelompok' => 0,
- 'lock' => 1,
- 'format_impor' => 0,
- 'pembagi' => 1,
- 'id_child' => 0,
- 'deskripsi' => '',
- 'gform_id' => $this->request->get('gform-form-id'),
- 'gform_nik_item_id' => $this->request->get('gform-id-nik-kk'),
- 'gform_last_sync' => date('Y-m-d H:i:s'),
- 'config_id' => identitas('id'),
- ];
- $analisisMaster = AnalisisMaster::create($data_analisis_master);
- $id_master = $analisisMaster->id;
-
- // SIMPAN KATEGORI ANALISIS
- $list_kategori = $this->request->get('kategori');
- $temp_unique_kategori = [];
- $list_unique_kategori = [];
-
- // Get Unique Value dari Kategori
- foreach ($list_kategori as $key => $val) {
- if ($this->request->get('is_selected')[$key] != 'true') {
- continue;
- }
- if (in_array($val, $temp_unique_kategori)) {
- continue;
- }
- $temp_unique_kategori[] = $val;
- }
-
- // Simpan Unique Value dari Kategori
- foreach ($temp_unique_kategori as $key => $val) {
- $data_kategori = [
- 'id_master' => $id_master,
- 'kategori' => $val,
- 'kategori_kode' => '',
- 'config_id' => identitas('id'),
- ];
- $kategori = AnalisisKategori::create($data_kategori);
-
- $list_unique_kategori[$kategori->id] = $val;
- }
-
- // SIMPAN PERTANYAAN/INDIKATOR ANALISIS
- $id_column_nik_kk = $this->request->get('id-row-nik-kk');
- $count_indikator = 1;
- $db_idx_parameter = [];
- $db_idx_indikator = [];
-
- foreach ($this->request->get('pertanyaan') as $key => $val) {
- $temp_idx_parameter = [];
- $id_indikator = 0;
- if ($this->request->get('is_selected')[$key] == 'true' && $key != $id_column_nik_kk) {
- $data_indikator = [
- 'id_master' => $id_master,
- 'nomor' => $count_indikator,
- 'pertanyaan' => $val,
- 'id_tipe' => $this->request->get('tipe')[$key],
- 'bobot' => $this->request->get('bobot')[$key],
- 'act_analisis' => 0,
- 'id_kategori' => array_search($this->request->get('kategori')[$key], $list_unique_kategori, true),
- 'is_publik' => 0,
- 'is_teks' => 0,
- ];
-
- if ($data_indikator['id_tipe'] != 1) {
- $data_indikator['act_analisis'] = 2;
- $data_indikator['bobot'] = 0;
- }
-
- $data_indikator['config_id'] = identitas('id');
- $analisisIndikator = AnalisisIndikator::create($data_indikator);
- $id_indikator = $analisisIndikator->id;
-
- // Simpan Parameter untuk setiap unique value pada masing-masing indikator
- foreach ($this->request->get('unique-param-value-' . $key) as $param_key => $param_val) {
- $param_nilai = ($this->request->get('unique-param-nilai-' . $key)[$param_key] == '') ? 0 : $this->request->get('unique-param-nilai-' . $key)[$param_key];
-
- $data_parameter = [
- 'id_indikator' => $id_indikator,
- 'jawaban' => $this->request->get('unique-param-value-' . $key)[$param_key],
- 'nilai' => $param_nilai,
- 'kode_jawaban' => ($param_key + 1),
- 'asign' => 0,
- 'config_id' => identitas('id'),
- ];
- $analisisParameter = AnalisisParameter::create($data_parameter);
- $id_parameter = $analisisParameter->id;
- $temp_idx_parameter[$id_parameter] = $param_val;
- }
-
- $count_indikator++;
- }
- $db_idx_indikator[$id_indikator] = $key;
- $db_idx_parameter[] = $temp_idx_parameter;
- }
-
- // SIMPAN PERIODE ANALISIS
- $data_periode = [
- 'id_master' => $id_master,
- 'nama' => 'Pendataan ' . date('dmY_His'),
- 'id_state' => 1,
- 'aktif' => 1,
- 'keterangan' => 0,
- 'tahun_pelaksanaan' => $this->request->get('tahun_pendataan') == '' ? date('Y') : $this->request->get('tahun_pendataan'),
- 'config_id' => identitas('id'),
- ];
- $analisisPeriode = AnalisisPeriode::create($data_periode);
- $id_periode = $analisisPeriode->id;
-
- // SIMPAN RESPON ANALISIS
- $data_import = session('data_import');
-
- // Iterasi untuk setiap subjek
- foreach ($data_import['jawaban'] as $key_jawaban => $val_jawaban) {
- // Get Id Subjek berdasarkan Tipe Subjek (Penduduk / Keluarga / Rumah Tangga / Kelompok)
- $nik_kk_subject = $val_jawaban[$id_column_nik_kk];
- if ($data_analisis_master['subjek_tipe'] == AnalisisRefSubjekEnum::KELUARGA) {
- $id_subject = Keluarga::where(['no_kk' => $nik_kk_subject])->first()?->id;
- } else {
- $id_subject = Penduduk::where(['nik' => $nik_kk_subject])->first()?->id;
- }
-
- if ($id_subject != null && $id_subject != '') {
- // Iterasi untuk setiap indikator / jawaban dari subjek
- foreach ($this->request->get('pertanyaan') as $key_pertanyaan => $val_pertanyaan) {
- if ($this->request->get('is_selected')[$key_pertanyaan] == 'true' && $key_pertanyaan != $id_column_nik_kk) {
- $data_respon = [
- 'id_indikator' => array_search($key_pertanyaan, $db_idx_indikator, true),
- 'id_parameter' => array_search($val_jawaban[$key_pertanyaan], $db_idx_parameter[$key_pertanyaan], true),
- 'id_subjek' => $id_subject,
- 'id_periode' => $id_periode,
- ];
-
- AnalisisRespon::create($data_respon);
- }
- }
- } else {
- $list_error[] = 'NIK / No. KK data ke-' . ($key_jawaban + 1) . ' (' . $nik_kk_subject . ') ' . $id_subject . ' tidak valid';
- }
- }
-
- return ['error' => $list_error];
- }
-
- protected function getOAuthCredentialsFile()
- {
- // Hanya ambil dari config jika tidak ada setting aplikasi utk redirect_uri
- $api_gform_credential = setting('api_gform_credential') ?? config_item('api_gform_credential');
-
- return json_decode(str_replace('\"', '"', $api_gform_credential), true);
- }
-
- public function import_gform($redirect_link = '')
- {
- // Check Credential File
- if (! $oauth_credentials = $this->getOAuthCredentialsFile()) {
- echo 'ERROR - File Credential Not Found';
-
- return;
- }
-
- $redirect_uri = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
-
- // Get the API client and construct the service object.
- $client = new Client();
- $client->setAuthConfig($oauth_credentials);
- $client->setRedirectUri($redirect_uri);
- $client->addScope('https://www.googleapis.com/auth/forms');
- $client->addScope('https://www.googleapis.com/auth/spreadsheets');
- $service = new Script($client);
-
- // API script id
- // Hanya ambil dari config jika tidak ada setting aplikasi unrtuk redirect_uri
- if (empty(setting('api_gform_id_script')) && empty(setting('api_gform_redirect_uri'))) {
- $script_id = config_item('api_gform_script_id');
- } else {
- $script_id = setting('api_gform_id_script');
- }
- // add "?logout" to the URL to remove a token from the session
- if (isset($_REQUEST['logout'])) {
- unset($_SESSION['upload_token']);
- }
-
- if (isset($_GET['code'])) {
- $token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
- $client->setAccessToken($token);
-
- // store in the session also
- $_SESSION['upload_token'] = $token;
- }
-
- // set the access token as part of the client
- if (! empty($_SESSION['upload_token'])) {
- $client->setAccessToken($_SESSION['upload_token']);
- if ($client->isAccessTokenExpired()) {
- unset($_SESSION['upload_token']);
- }
- } else {
- $authUrl = $client->createAuthUrl();
- }
-
- // Create an execution request object.
- $request = new ExecutionRequest();
- $request->setFunction('getFormItems');
- $form_id = session('google_form_id');
- if ($form_id == '') {
- $form_id = session('gform_id');
- }
- $request->setParameters($form_id);
-
- try {
- if (isset($authUrl) && $_SESSION['inside_retry'] != true) {
- // If no authentication before
- set_session('form_id', $form_id);
- set_session('inside_retry', true);
- set_session('inside_redirect_link', $redirect_link);
- header('Location: ' . $authUrl);
- } else {
- // If it has authenticated
- // Make the API request.
- $response = $service->scripts->run($script_id, $request);
-
- if ($response->getError()) {
- echo 'Error';
- // The API executed, but the script returned an error.
-
- // Extract the first (and only) set of error details. The values of this
- // object are the script's 'errorMessage' and 'errorType', and an array of
- // stack trace elements.
- $error = $response->getError()['details'][0];
- printf("Script error message: %s\n", $error['errorMessage']);
-
- if (array_key_exists('scriptStackTraceElements', $error)) {
- // There may not be a stacktrace if the script didn't start executing.
- echo "Script error stacktrace:\n";
-
- foreach ($error['scriptStackTraceElements'] as $trace) {
- printf("\t%s: %d\n", $trace['function'], $trace['lineNumber']);
- }
- }
- } else {
- // Get Response
- $resp = $response->getResponse();
-
- return $resp['result'];
- }
- }
- } catch (Exception $e) {
- // The API encountered a problem before the script started executing.
- echo 'Caught exception: ', $e->getMessage(), "\n";
- }
-
- return '0';
- }
-
- public function update($id, $variabel)
- {
- // Get data analisis master
- $master_data = AnalisisMaster::find($id)->toArray();
-
- // Get existing data indikator (pertanyaan) dan parameter (jawaban)
- $existing_data = AnalisisIndikator::where(['id_master' => $id])->get()?->toArray();
-
- // Get existing respon
- $id_periode_aktif = AnalisisPeriode::active()->where(['id_master' => $id])->first()->toArray();
- $existing_respon = $this->get_respon_by_id_periode($id_periode_aktif, $master_data['subjek_tipe']);
-
- $id_column_nik_kk = 0;
- $list_error = [];
- $list_pertanyaan = [];
-
- $deleted_responden = [];
- $deleted_jawaban = [];
-
- foreach ($variabel['pertanyaan'] as $key_pertanyaan => $val_pertanyaan) {
- // Mencari kolom NIK/No. KK pada form
- if ($val_pertanyaan['itemId'] == $master_data['gform_nik_item_id']) {
- $id_column_nik_kk = $key_pertanyaan;
- }
- }
-
- // Cek keberadaan existing indikator pada data terkini, jika SALAH SATU SAJA hilang maka proses tidak dapat dilanjutkan
- foreach ($existing_data['indikator'] as $key_indikator => $val_indikator) {
- if (! array_search($val_indikator, array_column($variabel['pertanyaan'], 'title'), true)) {
- $list_error[] = 'Terdapat kolom yang hilang pada hasil response Google Form terkini (' . $val_indikator . ')';
- }
- }
-
- if ($list_error) {
-
- return ['error' => $list_error];
- }
-
- // Mencari nilai untuk pertanyaan-pertanyaan yang dimasukkan sebelumnya
- foreach ($existing_data['indikator'] as $key_indikator => $val_indikator) {
- foreach ($variabel['pertanyaan'] as $val_pertanyaan) {
- if ($val_indikator == $val_pertanyaan['title']) {
- // Mengisi nilai
- $list_pertanyaan[$key_indikator] = $val_pertanyaan;
-
- // Cek jawaban yang tidak terpakai
- $deleted_jawaban[$key_indikator] = $existing_data['parameter'][$key_indikator];
-
- foreach ($existing_data['parameter'][$key_indikator] as $key_param => $val_param) {
- if (array_search($val_param, $val_pertanyaan['choices'], true)) {
- unset($deleted_jawaban[$key_indikator][$key_param]);
- }
- }
-
- $new_parameter = [];
-
- // Insert jawaban baru
- foreach ($val_pertanyaan['choices'] as $val_choice) {
- // Jika nilai belum ada di database, maka tambahkan data parameter baru
- if (! (array_search($val_choice, $existing_data['parameter'][$key_indikator], true))) {
- $data_parameter = [
- 'id_indikator' => $key_indikator,
- 'jawaban' => $val_choice,
- 'nilai' => 0,
- 'kode_jawaban' => 0,
- 'asign' => 0,
- 'config_id' => identitas('id'),
- ];
- $analisisParameter = AnalisisParameter::create($data_parameter);
- $id_parameter = $analisisParameter->id;
- $data_parameter['id'] = $id_parameter;
- $new_parameter[$id_parameter] = $val_choice;
- }
- }
-
- // Update list parameter dengan operasi Union antara parameter yang sudah ada dengan parameter yang baru ditambahkan
- $existing_data['parameter'][$key_indikator] += $new_parameter;
-
- break;
- }
- }
- }
-
- foreach ($existing_respon as $key_respon => $val_respon) {
- if (! in_array($key_respon, array_column($variabel['jawaban'], $id_column_nik_kk), true)) {
- $deleted_responden[$key_respon] = $val_respon;
- }
- }
-
- foreach ($variabel['jawaban'] as $key_responden => $val_responden) {
- $nik_kk = $val_responden[$id_column_nik_kk];
-
- if ($master_data['subjek_tipe'] == AnalisisRefSubjekEnum::KELUARGA) {
- $id_subject = Keluarga::where(['no_kk' => $nik_kk])->first()?->id;
- } else {
- $id_subject = Penduduk::where(['no_kk' => $nik_kk])->first()?->id;
- }
-
- if ($id_subject != null && $id_subject != '') { // Jika NIK valid
- foreach ($val_responden as $key_jawaban => $val_jawaban) {
- $id_indikator = array_search($variabel['pertanyaan'][$key_jawaban], $list_pertanyaan, true); // Cek apakah kolom yang telah ada
-
- if ($id_indikator) {
- $id_parameter = array_search($val_jawaban, $existing_data['parameter'][$id_indikator], true); // Jawaban terkini
-
- if (isset($existing_respon[$val_responden[$id_column_nik_kk]])) {
- // Jika Responden sudah pernah disimpan
- $obj_respon = $existing_respon[$nik_kk][$id_indikator];
-
- if ($obj_respon['id_parameter'] != $id_parameter) {
- $where = [
- 'id_indikator' => $id_indikator,
- 'id_subjek' => $obj_respon['id_subjek'],
- 'id_periode' => $obj_respon['id_periode'],
- ];
- AnalisisRespon::where($where)->delete();
-
- $data_respon = [
- 'id_indikator' => $id_indikator,
- 'id_parameter' => $id_parameter,
- 'id_subjek' => $obj_respon['id_subjek'],
- 'id_periode' => $obj_respon['id_periode'],
- ];
- AnalisisRespon::create($data_respon);
- }
- } else {
- // Jika Responden belum pernah disimpan (Responden Baru)
- $data_respon = [
- 'id_indikator' => $id_indikator,
- 'id_parameter' => $id_parameter,
- 'id_subjek' => $id_subject,
- 'id_periode' => $id_periode_aktif,
- ];
-
- AnalisisRespon::create($data_respon);
- }
- }
- }
- } else {
- $list_error[] = 'NIK / No. KK data ke-' . ($key_responden + 1) . ' (' . $nik_kk . ') tidak valid';
- }
- }
-
- // Hapus data responden yang tidak ada di response terkini
- foreach (array_keys($deleted_responden) as $key_responden) {
- if ($master_data['subjek_tipe'] == AnalisisRefSubjekEnum::KELUARGA) {
- $id_subject = Keluarga::where(['no_kk' => $nik_kk])->first()?->id;
- } else {
- $id_subject = Penduduk::where(['no_kk' => $nik_kk])->first()?->id;
- }
-
- $where = [
- 'id_subjek' => $id_subject,
- 'id_periode' => $id_periode_aktif,
- ];
- AnalisisRespon::where($where)->delete();
- }
-
- // Update gform_last_sync
- $update_data = [
- 'gform_last_sync' => date('Y-m-d H:i:s'),
- ];
-
- AnalisisMaster::where('id', $id)->update($update_data);
-
- return ['error' => $list_error];
- }
-
- public function get_respon_by_id_periode($id_periode = 0, $subjek = 1)
- {
- $result = [];
- if ($subjek == 1) { // Untuk Subjek Penduduk
- $list_penduduk = AnalisisRespon::selectRaw('analisis_respon.*, tweb_penduduk.nik')->join('tweb_penduduk', 'tweb_penduduk.id', 'analisis_respon.id_subjek')->where(['id_periode' => $id_periode])->get()?->toArray();
-
- foreach ($list_penduduk as $penduduk) {
- $result[$penduduk['nik']][$penduduk['id_indikator']] = $penduduk;
- }
- } else { // Untuk Subjek Keluarga
- $list_keluarga = AnalisisRespon::selectRaw('analisis_respon.*, tweb_keluarga.no_kkk')->join('tweb_keluarga', 'tweb_keluarga.id', 'analisis_respon.id_subjek')->where(['id_periode' => $id_periode])->get()?->toArray();
-
- foreach ($list_keluarga as $keluarga) {
- $result[$keluarga['no_kk']][$keluarga['id_indikator']] = $keluarga;
- }
- }
-
- return $result;
- }
-}
+file = $file;
- }
-
- public function analisis($kode = '00000', $jenis = 2): void
- {
- $reader = new Reader();
- $reader->open($this->file);
- $id_master = null;
-
- foreach ($reader->getSheetIterator() as $sheet) {
- switch ($sheet->getName()) {
- case 'master':
- $id_master = $this->impor_master($sheet, $kode, $jenis);
- break;
-
- case 'pertanyaan':
- $this->impor_pertanyaan($sheet, $id_master);
- break;
-
- case 'jawaban':
- $this->impor_jawaban($sheet, $id_master);
- break;
-
- case 'klasifikasi':
- $this->impor_klasifikasi($sheet, $id_master);
- break;
-
- default:
- }
- }
- $reader->close();
- }
-
- private function impor_master($sheet, $kode, $jenis)
- {
- $master = [];
-
- foreach ($sheet->getRowIterator() as $index => $row) {
- $cells = $row->getCells();
-
- switch ($index) {
- case 1: // Nama analisis
- $master['nama'] = $cells[1]->getValue();
- break;
-
- case 2: // Subjek
- $master['subjek_tipe'] = $cells[1]->getValue();
- break;
-
- case 3: // Status
- $master['lock'] = $cells[1]->getValue();
- break;
-
- case 4: // Bilangan Pembagi
- $master['pembagi'] = $cells[1]->getValue();
- break;
-
- case 5: // Deskripsi Analisis
- $master['deskripsi'] = $cells[1]->getValue();
- $periode['keterangan'] = $cells[1]->getValue();
- break;
-
- case 6: // Nama Periode
- $periode['nama'] = $cells[1]->getValue();
- break;
-
- case 7: // Tahun Pendataan
- $periode['tahun_pelaksanaan'] = $cells[1]->getValue();
- break;
- }
- }
- $master['kode_analisis'] = $kode;
- $master['jenis'] = $jenis;
- $master['config_id'] = identitas('id');
-
- $analisisMaster = AnalisisMaster::create($master);
-
- $periode['id_master'] = $analisisMaster->id;
- $periode['aktif'] = 1;
- $periode['config_id'] = identitas('id');
-
- AnalisisPeriode::create($periode);
-
- return $analisisMaster->id;
- }
-
- private function impor_pertanyaan($sheet, $id_master)
- {
- foreach ($sheet->getRowIterator() as $index => $row) {
- if ($index == 1) {
- continue;
- } // Abaikan baris judul
- $cells = $row->getCells();
- // Tambahkan indikator
- $indikator = [];
- $indikator['id_master'] = $id_master;
- $indikator['nomor'] = $cells[0]->getValue();
- $indikator['pertanyaan'] = $cells[1]->getValue();
- $indikator['id_kategori'] = $this->get_id_kategori($cells[2]->getValue(), $id_master);
- $indikator['id_tipe'] = $cells[3]->getValue();
- $indikator['config_id'] = identitas('id');
- if (! empty($cells[4]) && $cells[4]->getValue()) {
- $indikator['bobot'] = (int) $cells[4]->getValue();
- }
- if (! empty($cells[5]) && $cells[5]->getValue()) {
- $indikator['act_analisis'] = $cells[5]->getValue();
- }
-
- AnalisisIndikator::create($indikator);
- }
- }
-
- private function get_id_kategori($kategori, $id_master)
- {
- $adaKategori = AnalisisKategori::firstOrCreate(['kategori' => $kategori, 'id_master' => $id_master]);
-
- return $adaKategori->id;
- }
-
- private function impor_jawaban($sheet, $id_master)
- {
- foreach ($sheet->getRowIterator() as $index => $row) {
- if ($index == 1) {
- continue;
- } // Abaikan baris judul
- $cells = $row->getCells();
- // Tambahkan parameter
- $parameter = [];
- $parameter['id_indikator'] = $this->get_id_indikator($cells[0]->getValue(), $id_master);
- $parameter['jawaban'] = $cells[2]->getValue();
- $parameter['config_id'] = identitas('id');
- if (! empty($cells[1]) && $cells[1]->getValue()) {
- $parameter['kode_jawaban'] = $cells[1]->getValue();
- }
- if (! empty($cells[3]) && $cells[3]->getValue()) {
- $parameter['nilai'] = $cells[3]->getValue();
- }
- AnalisisParameter::create($parameter);
- }
- }
-
- private function get_id_indikator($kode_pertanyaan, $id_master)
- {
- return AnalisisIndikator::where(['id_master' => $id_master, 'nomor' => $kode_pertanyaan])->first()?->id;
- }
-
- private function impor_klasifikasi($sheet, $id_master)
- {
- foreach ($sheet->getRowIterator() as $index => $row) {
- if ($index == 1) {
- continue;
- } // Abaikan baris judul
- $cells = $row->getCells();
- // Tambahkan parameter
- $klasifikasi = [];
- $klasifikasi['id_master'] = $id_master;
- $klasifikasi['nama'] = $cells[0]->getValue();
- $klasifikasi['minval'] = $cells[1]->getValue();
- $klasifikasi['maxval'] = $cells[2]->getValue();
- $klasifikasi['config_id'] = identitas('id');
-
- AnalisisKlasifikasi::create($klasifikasi);
- }
- }
-}
+belongsTo(AnalisisKategori::class, 'id_kategori');
- }
-
- /**
- * Get all of the parameter for the AnalisisIndikator
- */
- public function parameter(): HasMany
- {
- return $this->hasMany(AnalisisParameter::class, 'id_indikator');
- }
-
- public static function hubungan($sasaran)
- {
- switch ($sasaran) {
-
- // Penduduk
- case 1:
- $data = [
- 'kk_level' => [
- 'judul' => 'Hubungan Dalam Keluarga',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_penduduk_hubungan'),
- ],
- 'rtm_level' => [
- 'judul' => 'Hubungan Dalam Rumah Tangga',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_rtm_hubungan'),
- ],
- 'sex' => [
- 'judul' => 'Jenis Kelamin',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_penduduk_sex'),
- ],
- 'tempatlahir' => [
- 'judul' => 'Tempat Lahir',
- ],
- 'tanggallahir' => [
- 'judul' => 'Tanggal Lahir',
- ],
- 'agama_id' => [
- 'judul' => 'Agama',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_penduduk_agama'),
- ],
- 'pendidikan_kk_id' => [
- 'judul' => 'Pendidikan Dalam KK',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_penduduk_pendidikan_kk'),
- ],
- 'pendidikan_sedang_id' => [
- 'judul' => 'Pendidikan Sedang Ditempuh',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_penduduk_pendidikan'),
- ],
- 'pekerjaan_id' => [
- 'judul' => 'Pekerjaan',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_penduduk_pekerjaan'),
- ],
- 'status_kawin' => [
- 'judul' => 'Status_perkawinan',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_penduduk_kawin'),
- ],
- 'warganegara_id' => [
- 'judul' => 'Kewarganegaraan',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_penduduk_warganegara'),
- ],
- 'dokumen_pasport' => [
- 'judul' => 'Dokumen Passport',
- ],
- 'dokumen_kitas' => [
- 'judul' => 'Dokumen KITAS',
- ],
- 'ayah_nik' => [
- 'judul' => 'NIK Ayah',
- ],
- 'nama_ayah' => [
- 'judul' => 'Nama Ayah',
- ],
- 'ibu_nik' => [
- 'judul' => 'NIK Ibu',
- ],
- 'nama_ibu' => [
- 'judul' => 'Nama Ibu',
- ],
- 'golongan_darah_id' => [
- 'judul' => 'Golongan Darah',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_golongan_darah'),
- ],
- // id_cluster => wilayah, agar tdk duplikasi
- 'wilayah' => [
- 'judul' => 'Wilayah (Dusun/RW/RT)',
- ],
- 'status' => [
- 'judul' => 'Status Penduduk',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_penduduk_status'),
- ],
- 'alamat_sebelumnya' => [
- 'judul' => 'Alamat Sebelumnya',
- ],
- 'alamat_sekarang' => [
- 'judul' => 'Alamat Sekarang',
- ],
- 'status_dasar' => [
- 'judul' => 'Status Dasar',
- // 'referensi' => $this->referensi_model->list_data('tweb_status_dasar'),
- ],
- 'hamil' => [
- 'judul' => 'Status Kehamilan',
- ],
- 'cacat_id' => [
- 'judul' => 'Jenis Cacat',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_cacat'),
- ],
- 'sakit_menahun_id' => [
- 'judul' => 'Sakit Menahun',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_sakit_menahun'),
- ],
- 'akta_lahir' => [
- 'judul' => 'Akta Lahir',
- ],
- 'akta_perkawinan' => [
- 'judul' => 'Akta Perkawinan',
- ],
- 'tanggalperkawinan' => [
- 'judul' => 'Tanggal Perkawinan',
- ],
- 'akta_perceraian' => [
- 'judul' => 'Akta Perceraian',
- ],
- 'tanggalperceraian' => [
- 'judul' => 'Tanggal Perceraian',
- ],
- 'cara_kb_id' => [
- 'judul' => 'Akseptor KB',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_cara_kb'),
- ],
- 'telepon' => [
- 'judul' => 'Telepon',
- ],
- 'tanggal_akhir_paspor' => [
- 'judul' => 'Tanggal Akhir Paspor',
- ],
- 'no_kk_sebelumnya' => [
- 'judul' => 'No. KK Sebelumnya',
- ],
- 'ktp_el' => [
- 'judul' => 'E-KTP',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_status_ktp'),
- ],
- 'status_rekam' => [
- 'judul' => 'Status Rekam',
- // 'referensi' => $this->referensi_model->list_status_rekam(),
- ],
- 'waktu_lahir' => [
- 'judul' => 'Waktu Lahir',
- ],
- 'tempat_dilahirkan' => [
- 'judul' => 'Tempat Dilahirkan',
- ],
- 'jenis_kelahiran' => [
- 'judul' => 'Jenis Kelahiran',
- ],
- 'kelahiran_anak_ke' => [
- 'judul' => 'Kelahiran Anak Ke - ',
- 'tipe' => 3,
- ],
- 'penolong_kelahiran' => [
- 'judul' => 'Penolong Kelahiran',
- ],
- 'berat_lahir' => [
- 'judul' => 'Berat lahir',
- 'tipe' => 3,
- ],
- 'panjang_lahir' => [
- 'judul' => 'Panjang Lahir',
- 'tipe' => 3,
- ],
- 'tag_id_card' => [
- 'judul' => 'Tag ID Card',
- ],
- 'id_asuransi' => [
- 'judul' => 'ID Asuransi',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_penduduk_asuransi'),
- ],
- 'no_asuransi' => [
- 'judul' => 'No. Asusransi',
- ],
- 'email' => [
- 'judul' => 'Email',
- ],
- 'bahasa_id' => [
- 'judul' => 'Dapat Membaca Huruf',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('ref_penduduk_bahasa'),
- ],
- 'negara_asal' => [
- 'judul' => 'Negara Asal',
- ],
- 'tempat_cetak_ktp' => [
- 'judul' => 'Tempat Cetak KTP',
- ],
- 'tanggal_cetak_ktp' => [
- 'judul' => 'Tanggal Cetak KTP',
- ],
- 'suku' => [
- 'judul' => 'Suku/Etnis',
- ],
- 'bpjs_ketenagakerjaan' => [
- 'judul' => 'BPJS Ketenagakerjaan',
- ],
- ];
- break;
-
- // Keluarga
- case 2:
- $data = [
- 'nik_kepala' => [
- 'judul' => 'NIK Kepala KK',
- ],
- 'kelas_sosial' => [
- 'judul' => 'Kelas Sosial',
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_keluarga_sejahtera'),
- ],
- 'alamat' => [
- 'judul' => 'Alamat',
- ],
- // id_cluster => wilayah, agar tdk duplikasi
- 'wilayah' => [
- 'judul' => 'Wilayah (Dusun/RW/RT)',
- ],
- ];
- break;
-
- // Desa
- default:
-
- $desa = setting('sebutan_desa');
- $kepala = setting('sebutan_kepala_desa');
-
- $data = [
-
- // IDENTITAS DESA
- 'nama_desa' => [
- 'judul' => 'Nama ' . $desa,
- ],
- 'kode_desa' => [
- 'judul' => 'Kode ' . $desa,
- ],
- 'kode_pos' => [
- 'judul' => 'Kode POS',
- ],
- 'nama_kepala_desa' => [
- 'judul' => 'Nama ' . $kepala,
- ],
- 'nip_kepala_desa' => [
- 'judul' => 'NIP ' . $kepala,
- ],
- 'jk_kepala_desa' => [
- 'judul' => 'Jenis Kelamin ' . $kepala,
- 'tipe' => 1,
- // 'referensi' => $this->referensi_model->list_data('tweb_penduduk_sex'),
- ],
- 'titik_koordinat_desa' => [
- 'judul' => 'Titik Koordinat ' . $desa . ' (Lintang / Bujur)',
- ],
- 'alamat_kantor' => [
- 'judul' => 'Alamat Kantor',
- ],
- 'no_telepon_kepala_desa' => [
- 'judul' => 'Nomor Telepon Rumah / HP ' . $kepala,
- ],
- 'no_telepon_kantor_desa' => [
- 'judul' => 'Nomor Telepon Kantor ' . $desa,
- ],
- 'email_desa' => [
- 'judul' => 'Email ' . $desa,
- ],
- 'pendidikan_kepala_desa' => [
- 'judul' => 'Pendidikan Terakhir ' . $kepala,
- ],
- 'nama_kecamatan' => [
- 'judul' => 'Nama Kecamatan',
- ],
- 'kode_kecamatan' => [
- 'judul' => 'Kode Kecamatan',
- ],
- 'nama_kepala_camat' => [
- 'judul' => 'Nama Kepala Camat',
- ],
- 'nip_kepala_camat' => [
- 'judul' => 'NIP Kepala Camat',
- ],
- 'kode_kabupaten' => [
- 'judul' => 'Kode Kabupaten',
- ],
- 'nama_propinsi' => [
- 'judul' => 'Nama Provinsi',
- ],
- 'kode_propinsi' => [
- 'judul' => 'Kode Provinsi',
- ],
-
- // DEMOGRAFI
- // # Penduduk
- 'jumlah_total_penduduk' => [
- 'judul' => 'Jumlah Total Penduduk',
- ],
- 'jumlah_penduduk_laki_laki' => [
- 'judul' => 'Jumlah Penduduk Laki-laki',
- ],
- 'jumlah_penduduk_perempuan' => [
- 'judul' => 'Jumlah Penduduk Perempuan',
- ],
- 'jumlah_penduduk_pedatang' => [
- 'judul' => 'Jumlah Penduduk Pendatang',
- ],
- 'jumlah_penduduk_yang_pergi' => [
- 'judul' => 'Jumlah Penduduk Yang Pergi',
- ],
-
- // # Kepala Keluarga
- 'jumlah_total_kepala_keluarga' => [
- 'judul' => 'Jumlah Total Kepala Keluarga',
- ],
- 'jumlah_kepala_keluarga_laki_laki' => [
- 'judul' => 'Jumlah Kepala Keluarga Laki-laki',
- ],
- 'jumlah_kepala_keluarga_perempuan' => [
- 'judul' => 'Jumlah Kepala Keluarga Perempuan',
- ],
-
- 'jumlah_peserta_bpjs' => [
- 'judul' => 'Jumlah Penduduk Terdaftar BPJS Kesehatan / JKN',
- ],
- ];
- break;
- }
-
- return $data;
- }
-
- public static function indikatorUnduh($idMaster, $parameter = 1)
- {
- $data = self::where('id_master', $idMaster)->orderByRaw('LPAD(nomor, 10, " ")')->get()->toArray();
- $counter = count($data);
-
- for ($i = 0; $i < $counter; $i++) {
- $data[$i]['no'] = $i + 1;
- $data[$i]['par'] = null;
-
- if ($parameter == 2) {
- $par = AnalisisParameter::where('id_indikator', $data[$i]['id'])->where('asign', 1)->get()->toArray();
- $data[$i]['par'] = $par;
- }
- }
-
- return $data;
- }
-}
+hasMany(AnalisisIndikator::class, 'id_kategori');
- }
-}
+attributes['lock'] == self::LOCK;
- }
-
- public function isSystem(): bool
- {
- return $this->attributes['jenis'] == 1;
- }
-
- protected function scopeSubjekPenduduk($query)
- {
- return $query->where('subjek_tipe', AnalisisRefSubjekEnum::PENDUDUK);
- }
-}
+belongsTo(AnalisisIndikator::class, 'id_indikator');
- }
-}
+id_state];
- }
-
- public function isLock(): bool
- {
- return $this->attributes['aktif'] == self::LOCK;
- }
-
- public function isUnlock(): bool
- {
- return $this->attributes['aktif'] == self::UNLOCK;
- }
-
- public function scopeActive($query)
- {
- return $query->where('aktif', self::UNLOCK);
- }
-}
+where('id_periode', $idPeriode)->delete();
- if (! empty($postData['rb'])) {
- $id_rb = $postData['rb'];
-
- foreach ($id_rb as $id_p) {
- if (empty($id_p)) {
- continue;
- } // Abaikan isian kosong
- $p = preg_split('/\\./', $id_p);
-
- $data['id_subjek'] = $id;
- $data['id_periode'] = $idPeriode;
- $data['id_indikator'] = $p[0];
- $data['id_parameter'] = $p[1];
- self::insert($data);
- }
- }
- if (isset($postData['cb'])) {
- $id_cb = $postData['cb'];
- if ($id_cb) {
- foreach ($id_cb as $id_p) {
- $p = preg_split('/\\./', $id_p);
-
- $data['id_subjek'] = $id;
- $data['id_periode'] = $idPeriode;
- $data['id_indikator'] = $p[0];
- $data['id_parameter'] = $p[1];
- self::insert($data);
- }
- }
- }
-
- if (isset($postData['ia'])) {
- $id_ia = $postData['ia'];
-
- foreach ($id_ia as $id_p) {
- if ($id_p != '') {
- unset($data);
- $indikator = key($id_ia);
- $dx = AnalisisParameter::firstOrCreate(['jawaban' => $id_p, 'id_indikator' => $indikator]);
-
- unset($data);
- $data['id_parameter'] = $dx->id;
- $data['id_indikator'] = $indikator;
- $data['id_subjek'] = $id;
- $data['id_periode'] = $idPeriode;
- self::create($data);
- }
- next($id_ia);
- }
- }
- if (isset($postData['it'])) {
- $id_it = $postData['it'];
-
- foreach ($id_it as $id_p) {
- if ($id_p != '') {
- unset($data);
- $indikator = key($id_it);
- $dx = AnalisisParameter::firstOrCreate(['jawaban' => $id_p, 'id_indikator' => $indikator]);
-
- $data2['id_parameter'] = $dx->id;
- $data2['id_indikator'] = $indikator;
- $data2['id_subjek'] = $id;
- $data2['id_periode'] = $idPeriode;
- self::create($data2);
- }
- next($id_it);
- }
- }
-
- $sql = 'SELECT SUM(i.bobot * nilai) as jml FROM analisis_respon r LEFT JOIN analisis_indikator i ON r.id_indikator = i.id LEFT JOIN analisis_parameter z ON r.id_parameter = z.id WHERE r.id_subjek = ? AND i.act_analisis=1 AND r.id_periode=? ';
- $dx = (array) DB::select($sql, [$id, $idPeriode])[0];
-
- $upx['id_master'] = $idMaster;
- $upx['akumulasi'] = 0 + $dx['jml'];
- $upx['id_subjek'] = $id;
- $upx['id_periode'] = $idPeriode;
- $upx['config_id'] = identitas('id');
- AnalisisResponHasil::where('id_subjek', $id)->where('id_periode', $idPeriode)->delete();
- AnalisisResponHasil::create($upx);
- }
- }
-
- public function import_respon($idMaster, $periode, $subjekTipe, $op = 0)
- {
- $per = $periode;
- $subjek = $subjekTipe;
- $mas = $idMaster;
- $key = ($per + 3) * ($mas + 7) * ($subjek * 3);
- $key = 'AN' . $key;
- $respon = [];
-
- $indikator = AnalisisIndikator::where('id_master', $idMaster)->orderBy('id')->get()->toArray();
-
- try {
- if ($_FILES['respon']['type'] != 'application/vnd.ms-excel') {
- return [
- 'success' => false,
- 'message' => 'File yang diunggah harus berformat .xls',
- ];
- }
- $data = new Spreadsheet_Excel_Reader($_FILES['respon']['tmp_name']);
- $s = 0;
- $baris = $data->rowcount($s);
- $kolom = $data->colcount($s);
-
- $ketemu = 0;
-
- for ($b = 1; $b <= $baris; $b++) {
- for ($k = 1; $k <= $kolom; $k++) {
- $isi = $data->val($b, $k, $s);
- // ketemu njuk stop
- if ($isi == $key) {
- $br = $b + 1;
- $kl = $k + 1;
-
- $b = $baris + 1;
- $k = $kolom + 1;
- $ketemu = 1;
- }
- }
- }
- if ($ketemu == 1) {
- $dels = '';
- $true = 0;
-
- for ($i = $br; $i <= $baris; $i++) {
- $id_subjek = $data->val($i, $kl - 1, $s);
-
- $j = $kl;
-
- foreach ($indikator as $indi) {
- $isi = $data->val($i, $j, $s);
- if ($isi != '') {
- $true = 1;
- }
-
- $j++;
- }
- if ($true == 1) {
- $dels .= $id_subjek . ',';
- $true = 0;
- }
- }
-
- $dels .= '9999999';
- //cek ada row
- self::where('id_periode', $per)->whereRaw("id_subjek in({$dels})")->delete();
- $dels = '';
-
- for ($i = $br; $i <= $baris; $i++) {
- $id_subjek = $data->val($i, $kl - 1, $s);
- if (strlen($id_subjek) > 14 && $subjek == 1) {
- $id_subjek = PendudukHidup::select(['id'])->where('nik', $id_subjek)->first()?->id ?? null;
- } elseif ($subjek == 3) {
- // sasaran rumah tangga, simpan id, bukan nomor rumah tangga
- $id_subjek = Rtm::select('id')->where('id_rtm', $id_subjek)->first()?->id ?? null;
- }
-
- $j = $kl + $op;
- $all = '';
-
- foreach ($indikator as $indi) {
- $isi = $data->val($i, $j, $s);
- if ($isi != '') {
- if ($indi['id_tipe'] == 1) {
- $param = AnalisisParameter::where('id_indikator', $indi['id'])
- ->where(static function ($query) use ($isi) {
- $query->where('kode_jawaban', $isi)->orWhere('jawaban', $isi);
- })->first()->toArray();
- if ($param) {
- $in_param = $param['id'];
- } elseif ($isi == '') {
- $in_param = 0;
- } else {
- $in_param = -1;
- }
-
- $respon[] = [
- 'id_parameter' => $in_param,
- 'id_indikator' => $indi['id'],
- 'id_subjek' => $id_subjek,
- 'id_periode' => $per,
- ];
- } elseif ($indi['id_tipe'] == 2) {
- $this->respon_checkbox($indi, $isi, $id_subjek, $per, $respon);
- } else {
- $param = AnalisisParameter::where('id_indikator', $indi['id'])->where('jawaban', $isi)->first()->toArray();
-
- // apakah sdh ada jawaban yg sama
- if ($param) {
- $in_param = $param['id'];
- } else {
- $parameter['jawaban'] = $isi;
- $parameter['id_indikator'] = $indi['id'];
- $parameter['asign'] = 0;
- $parameter['config_id'] = identitas('id');
- AnalisisParameter::create($parameter);
-
- $param = AnalisisParameter::where('id_indikator', $indi['id'])->where('jawaban', $isi)->first()->toArray();
- $in_param = $param['id'];
- }
-
- $respon[] = [
- 'id_parameter' => $in_param,
- 'id_indikator' => $indi['id'],
- 'id_subjek' => $id_subjek,
- 'id_periode' => $per,
- ];
- }
- }
-
- $j++;
- }
- }
-
- if (count($respon) > 0) {
- AnalisisRespon::insert($respon);
- } else {
- return [
- 'success' => false,
- 'message' => 'Tidak ada data yang diimpor',
- ];
- }
- }
-
- $this->pre_update($idMaster, $per);
- } catch (Exception $e) {
- return [
- 'success' => false,
- 'pesan' => $e->getMessage(),
- ];
- }
-
- return [
- 'success' => true,
- 'message' => 'Data berhasil diimpor',
- ];
- }
-
- private function respon_checkbox($indi, $isi, $id_subjek, $per, &$respon): void
- {
- $list_isi = explode(',', $isi);
-
- foreach ($list_isi as $isi_ini) {
- if ($indi['is_teks'] == 1) {
- // Isian sebagai teks pilihan bukan kode
- $teks = strtolower($isi_ini);
- $param = AnalisisParameter::where('id_indikator', $indi['id'])->whereRaw("LOWER(jawaban) = '{$teks}'")->first()->toArray();
- } else {
- $param = AnalisisParameter::where('id_indikator', $indi['id'])->where('kode_jawaban', $isi_ini)->first()->toArray();
- }
- if ($param['id'] != '') {
- $in_param = $param['id'];
- $respon[] = [
- 'id_parameter' => $in_param,
- 'id_indikator' => $indi['id'],
- 'id_subjek' => $id_subjek,
- 'id_periode' => $per,
- 'config_id' => identitas('id'),
- ];
- }
- }
- }
-
- public function pre_update($idMaster, $per): void
- {
- $data = AnalisisRespon::selectRaw('distinct(id_subjek) as id')->where('id_periode', $per)->get()->toArray();
-
- AnalisisResponHasil::where('id_subjek', 0)->delete();
- AnalisisRespon::where('id_subjek', 0)->delete();
- AnalisisResponHasil::where('id_periode', $per)->delete();
-
- $counter = count($data);
-
- for ($i = 0; $i < $counter; $i++) {
- $sql = 'SELECT SUM(i.bobot * nilai) as jml FROM analisis_respon r LEFT JOIN analisis_indikator i ON r.id_indikator = i.id LEFT JOIN analisis_parameter z ON r.id_parameter = z.id WHERE r.id_subjek = ? AND i.act_analisis=1 AND r.id_periode=?';
- $dx = (array) DB::select($sql, [$data[$i]['id'], $per])[0];
-
- $upx[$i]['id_master'] = $idMaster;
- $upx[$i]['akumulasi'] = 0 + $dx['jml'];
- $upx[$i]['id_subjek'] = $data[$i]['id'];
- $upx[$i]['id_periode'] = $per;
- $upx[$i]['config_id'] = identitas('id');
- }
- if (@$upx) {
- AnalisisResponHasil::insert($upx);
- }
- }
-}
+active()->value('id');
- $data = self::where('id_periode', $per)->distinct()->pluck('id_subjek');
-
- self::where('id_subjek', 0)->delete();
- AnalisisRespon::where('id_subjek', 0)->delete();
- self::where('id_periode', $per)->delete();
-
- $upx = $data->map(static function ($id_subjek) use ($per, $idMaster) {
- $akumulasi = self::where('id_subjek', $id_subjek)
- ->where('id_periode', $per)
- ->whereHas('indikator', static fn ($query) => $query->where('act_analisis', 1))
- ->sum(DB::raw('analisis_indikator.bobot * nilai'));
-
- return [
- 'id_master' => $idMaster,
- 'akumulasi' => $akumulasi ?: 0,
- 'id_subjek' => $id_subjek,
- 'id_periode' => $per,
- ];
- })->toArray();
-
- if ($upx) {
- self::insert($upx);
- }
- }
-}
+registerConfig();
$this->registerViews();
}
@@ -70,6 +71,19 @@ public function register()
{
}
+ /**
+ * Register config.
+ *
+ * @return void
+ */
+ protected function registerConfig()
+ {
+ $this->mergeConfigFrom(
+ __DIR__ . '/../Config/config.php',
+ $this->moduleNameLower
+ );
+ }
+
/**
* Register views.
*/
diff --git a/Modules/Analisis/Routes/web.php b/Modules/Analisis/Routes/web.php
index 1eb1f5729..036a17083 100644
--- a/Modules/Analisis/Routes/web.php
+++ b/Modules/Analisis/Routes/web.php
@@ -1,149 +1,457 @@
- 'Analisis'], static function (): void {
- Route::get('', 'AnalisisMasterController@index')->name('analisis_master.index-default');
- Route::get('clear', 'AnalisisMasterController@index')->name('analisis_master.clear');
- Route::get('datatables', 'AnalisisMasterController@datatables')->name('analisis_master.datatables');
- Route::get('form/{id?}', 'AnalisisMasterController@form')->name('analisis_master.form');
- Route::post('insert', 'AnalisisMasterController@insert')->name('analisis_master.insert');
- Route::post('update/{id?}', 'AnalisisMasterController@update')->name('analisis_master.update');
- Route::get('delete/{id?}', 'AnalisisMasterController@delete')->name('analisis_master.delete');
- Route::post('delete', 'AnalisisMasterController@delete')->name('analisis_master.delete-all');
- Route::get('lock/{id}', 'AnalisisMasterController@lock')->name('analisis_master.lock');
- Route::get('panduan', 'AnalisisMasterController@panduan')->name('analisis_master.panduan');
- Route::get('import_analisis', 'AnalisisMasterController@import_analisis')->name('analisis_master.import_analisis');
- Route::post('import', 'AnalisisMasterController@import')->name('analisis_master.import');
- Route::get('ekspor/{id}', 'AnalisisMasterController@ekspor')->name('analisis_master.ekspor');
- Route::get('import_gform/{id?}', 'AnalisisMasterController@import_gform')->name('analisis_master.import_gform');
- Route::get('menu/{id?}', 'AnalisisMasterController@menu')->name('analisis_master.menu');
- Route::post('exec_import_gform', 'AnalisisMasterController@exec_import_gform')->name('analisis_master.exec_import_gform');
- Route::post('save_import_gform/{id?}', 'AnalisisMasterController@save_import_gform')->name('analisis_master.save_import_gform');
- Route::match(['GET', 'POST'], '/update_gform/{id?}', 'AnalisisMasterController@update_gform')->name('analisis_master.update_gform');
-});
-
-Route::group('analisis_indikator/{master}', ['namespace' => 'Analisis'], static function (): void {
- Route::get('', 'AnalisisIndikatorController@index')->name('analisis_indikator.index-default');
- Route::get('datatables', 'AnalisisIndikatorController@datatables')->name('analisis_indikator.datatables');
- Route::get('form/{id?}', 'AnalisisIndikatorController@form')->name('analisis_indikator.form');
- Route::post('insert', 'AnalisisIndikatorController@insert')->name('analisis_indikator.insert');
- Route::post('update/{id?}', 'AnalisisIndikatorController@update')->name('analisis_indikator.update');
- Route::get('delete/{id?}', 'AnalisisIndikatorController@delete')->name('analisis_indikator.delete');
- Route::post('delete', 'AnalisisIndikatorController@delete')->name('analisis_indikator.delete-all');
- Route::group('parameter/{indikator}', static function (): void {
- Route::get('', 'AnalisisParamterController@index')->name('analisis_parameter.index-default');
- Route::get('datatables', 'AnalisisParamterController@datatables')->name('analisis_parameter.datatables');
- Route::get('form/{id?}', 'AnalisisParamterController@form')->name('analisis_parameter.form');
- Route::post('insert', 'AnalisisParamterController@insert')->name('analisis_parameter.insert');
- Route::post('update/{id?}', 'AnalisisParamterController@update')->name('analisis_parameter.update');
- Route::get('delete/{id?}', 'AnalisisParamterController@delete')->name('analisis_parameter.delete');
- Route::post('delete', 'AnalisisParamterController@delete')->name('analisis_parameter.delete-all');
- });
-});
-
-Route::group('analisis_kategori/{master}', ['namespace' => 'Analisis'], static function (): void {
- Route::get('', 'AnalisisKategoriController@index')->name('analisis_kategori.index-default');
- Route::get('datatables', 'AnalisisKategoriController@datatables')->name('analisis_kategori.datatables');
- Route::get('form/{id?}', 'AnalisisKategoriController@form')->name('analisis_kategori.form');
- Route::post('insert', 'AnalisisKategoriController@insert')->name('analisis_kategori.insert');
- Route::post('update/{id?}', 'AnalisisKategoriController@update')->name('analisis_kategori.update');
- Route::get('delete/{id?}', 'AnalisisKategoriController@delete')->name('analisis_kategori.delete');
- Route::post('delete', 'AnalisisKategoriController@delete')->name('analisis_kategori.delete-all');
-});
-
-Route::group('analisis_klasifikasi/{master}', ['namespace' => 'Analisis'], static function (): void {
- Route::get('', 'AnalisisKlasifikasiController@index')->name('analisis_klasifikasi.index-default');
- Route::get('datatables', 'AnalisisKlasifikasiController@datatables')->name('analisis_klasifikasi.datatables');
- Route::get('form/{id?}', 'AnalisisKlasifikasiController@form')->name('analisis_klasifikasi.form');
- Route::post('insert', 'AnalisisKlasifikasiController@insert')->name('analisis_klasifikasi.insert');
- Route::post('update/{id?}', 'AnalisisKlasifikasiController@update')->name('analisis_klasifikasi.update');
- Route::get('delete/{id?}', 'AnalisisKlasifikasiController@delete')->name('analisis_klasifikasi.delete');
- Route::post('delete', 'AnalisisKlasifikasiController@delete')->name('analisis_klasifikasi.delete-all');
-});
-
-Route::group('analisis_respon/{master}', ['namespace' => 'Analisis'], static function (): void {
- Route::get('', 'AnalisisResponController@index');
- Route::get('datatables', 'AnalisisResponController@datatables')->name('analisis_respon.datatables');
- Route::get('form/{id}/{fs?}', 'AnalisisResponController@form')->name('analisis_respon.form');
- Route::get('perbaharui/{id_subjek}', 'AnalisisResponController@perbaharui')->name('analisis_respon.perbaharui');
- Route::post('update/{id}', 'AnalisisResponController@update')->name('analisis_respon.update');
- Route::get('aturan_unduh', 'AnalisisResponController@aturan_unduh')->name('analisis_respon.aturan_unduh');
- Route::get('data_ajax', 'AnalisisResponController@data_ajax')->name('analisis_respon.data_ajax');
- Route::post('data_unduh', 'AnalisisResponController@data_unduh')->name('analisis_respon.data_unduh');
- Route::get('import/{op?}', 'AnalisisResponController@import')->name('analisis_respon.import');
- Route::post('import_proses/{op?}', 'AnalisisResponController@import_proses')->name('analisis_respon.import_proses');
- Route::get('form_impor_bdt/{id?}', 'AnalisisResponController@form_impor_bdt')->name('analisis_respon.form_impor_bdt');
- Route::post('impor_bdt', 'AnalisisResponController@impor_bdt')->name('analisis_respon.impor_bdt');
- Route::group('child', static function (): void {
- Route::get('form/{id}/{idc?}', 'AnalisisResponChild@formChild')->name('analisis_respon.form_child');
- Route::post('update/{id}/{idc?}', 'AnalisisResponChild@updateChild')->name('analisis_respon.update_child');
- });
-});
-
-Route::group('analisis_periode/{master}', ['namespace' => 'Analisis'], static function (): void {
- Route::get('', 'AnalisisPeriodeController@index')->name('analisis_periode.index-default');
- Route::get('datatables', 'AnalisisPeriodeController@datatables')->name('analisis_periode.datatables');
- Route::get('form/{id?}', 'AnalisisPeriodeController@form')->name('analisis_periode.form');
- Route::post('insert', 'AnalisisPeriodeController@insert')->name('analisis_periode.insert');
- Route::post('update/{id?}', 'AnalisisPeriodeController@update')->name('analisis_periode.update');
- Route::get('lock/{id}', 'AnalisisPeriodeController@lock')->name('analisis_periode.lock');
- Route::get('delete/{id?}', 'AnalisisPeriodeController@delete')->name('analisis_periode.delete');
- Route::post('delete', 'AnalisisPeriodeController@delete')->name('analisis_periode.delete-all');
-});
-
-Route::group('analisis_laporan/{master}', ['namespace' => 'Analisis'], static function (): void {
- Route::get('', 'AnalisisLaporanController@index');
- Route::get('datatables', 'AnalisisLaporanController@datatables')->name('analisis_laporan.datatables');
- Route::get('form/{id}', 'AnalisisLaporanController@form')->name('analisis_laporan.form');
- Route::get('dialog_kuisioner/{id}/{aksi?}', 'AnalisisLaporanController@dialog_kuisioner')->name('analisis_laporan.dialog_kuisioner');
- Route::post('daftar/{id}/{aksi?}', 'AnalisisLaporanController@daftar')->name('analisis_laporan.daftar');
- Route::get('dialog/{aksi?}', 'AnalisisLaporanController@dialog')->name('analisis_laporan.dialog');
- Route::post('cetak/{aksi?}', 'AnalisisLaporanController@cetak')->name('analisis_laporan.cetak');
- Route::get('multi_jawab', 'AnalisisLaporanController@multi_jawab')->name('analisis_laporan.multi_jawab');
- Route::post('multi_exec', 'AnalisisLaporanController@multi_exec')->name('analisis_laporan.multi_exec');
- Route::get('ajax_multi_jawab', 'AnalisisLaporanController@ajax_multi_jawab')->name('analisis_laporan.ajax_multi_jawab');
- Route::post('multi_jawab_proses', 'AnalisisLaporanController@multi_jawab_proses')->name('analisis_laporan.multi_jawab_proses');
-});
-
-Route::group('analisis_statistik_jawaban/{master}', ['namespace' => 'Analisis'], static function (): void {
- Route::get('', 'AnalisisStatistikJawabanController@index');
- Route::get('datatables', 'AnalisisStatistikJawabanController@datatables')->name('analisis_statistik_jawaban.datatables');
- Route::get('grafik_parameter/{id?}', 'AnalisisStatistikJawabanController@grafik_parameter')->name('analisis_statistik_jawaban.grafik_parameter');
- Route::get('subjek_parameter/{id}/{par}', 'AnalisisStatistikJawabanController@subjek_parameter')->name('analisis_statistik_jawaban.subjek_parameter');
- Route::post('cetak', 'AnalisisStatistikJawabanController@cetak')->name('analisis_statistik_jawaban.cetak');
- Route::get('cetak_subjek/{id}/{par}/{tipe?}', 'AnalisisStatistikJawabanController@cetak_subjek')->name('analisis_statistik_jawaban.cetak_subjek');
-});
+ 'Anjungan',
+];
diff --git a/Modules/Anjungan/Http/Controllers/BackEnd/AnjunganBaseController.php b/Modules/Anjungan/Http/Controllers/BackEnd/AnjunganBaseController.php
index 8eeeae013..180c85ed1 100644
--- a/Modules/Anjungan/Http/Controllers/BackEnd/AnjunganBaseController.php
+++ b/Modules/Anjungan/Http/Controllers/BackEnd/AnjunganBaseController.php
@@ -1,51 +1,753 @@
-input->is_ajax_request()) {
- return datatables()->of(AnjunganModel::query())
- ->addColumn('ceklist', static function ($row) {
- if (can('h')) {
- return '';
- }
- })
- ->addIndexColumn()
- ->addColumn('aksi', static function ($row) use ($status): string {
- $aksi = '';
-
- if (can('u')) {
- $aksi .= ' ';
- $url_kunci = site_url("anjungan/kunci/{$row->id}");
- $disabled = $status !== '' && $status !== '0' ? '' : 'disabled';
-
- if ($status === '' || $status === '0') {
- $aksi .= ' ';
- } elseif ($row->status) {
- $aksi .= ' ';
- } else {
- $aksi .= ' ';
- }
- }
-
- if (can('h')) {
- $aksi .= ' ';
- }
-
- return $aksi;
- })
- ->editColumn('ip_address_port_printer', static fn ($row) => ($row->printer_ip ?: '-:' . $row->printer_port) ?: '-')
- ->editColumn('keyboard', static fn ($row): string => '' . StatusEnum::valueOf($row->keyboard) . '')
- ->editColumn('status', static function ($row) use ($status): string {
- if ($status === '' || $status === '0') {
- $row->status = StatusEnum::TIDAK;
- }
-
- return '' . StatusEnum::valueOf($row->status) . '';
- })
- ->rawColumns(['ceklist', 'aksi', 'keyboard', 'status'])
- ->make();
- }
-
- return show_404();
- }
-
- public function form($id = null)
- {
- isCan('u');
-
- if ($id) {
- $data['action'] = 'Ubah';
- $data['form_action'] = ci_route('anjungan.update', $id);
- $data['anjungan'] = AnjunganModel::findOrFail($id);
- } else {
- $data['action'] = 'Tambah';
- $data['form_action'] = ci_route('anjungan.insert');
- $data['anjungan'] = null;
- }
-
- return view('anjungan::backend.anjungan.form', $data);
- }
-
- public function insert(): void
- {
- isCan('u');
-
- if (AnjunganModel::create(static::validate($this->request))) {
- redirect_with('success', 'Berhasil Tambah Data');
- }
- redirect_with('error', 'Gagal Tambah Data');
- }
-
- public function update($id = null): void
- {
- isCan('u');
-
- $data = AnjunganModel::findOrFail($id);
-
- if ($data->update(static::validate($this->request, $id))) {
- redirect_with('success', 'Berhasil Ubah Data');
- }
- redirect_with('error', 'Gagal Ubah Data');
- }
-
- public function delete($id = null): void
- {
- isCan('h');
-
- if (AnjunganModel::destroy($id ?? $this->request['id_cb']) !== 0) {
- redirect_with('success', 'Berhasil Hapus Data');
- }
- redirect_with('error', 'Gagal Hapus Data');
- }
-
- public function kunci($id = null, $val = StatusEnum::TIDAK): void
- {
- isCan('u');
-
- if (cek_anjungan() === '' || cek_anjungan() === '0') {
- redirect_with('warning', 'Untuk mengaktifkan harus memesan anjungan terlebih dahulu.');
- }
-
- $kunci = AnjunganModel::findOrFail($id);
- $kunci->update(['status' => ($val == StatusEnum::YA) ? StatusEnum::TIDAK : StatusEnum::YA, 'status_alasan' => null]);
-
- redirect_with('success', 'Berhasil Ubah Data');
- }
-
- // Hanya filter inputan
- protected static function validate(array $request = [], $id = null): array
- {
- $anjungan = AnjunganModel::find($id);
- $ip_address = AnjunganModel::where('ip_address', $request['ip_address'])->first();
- $mac_address = AnjunganModel::where('mac_address', $request['mac_address'])->first();
- $id_pengunjung = AnjunganModel::where('id_pengunjung', $request['id_pengunjung'])->first();
-
- if ($ip_address && $anjungan->ip_address != $request['ip_address']) {
- redirect_with('error', 'IP Address telah digunakan');
- }
-
- if ($mac_address && $anjungan->mac_address != $request['mac_address']) {
- redirect_with('error', 'Mac Address telah digunakan');
- }
-
- if ($id_pengunjung && $anjungan->id_pengunjung != $request['id_pengunjung']) {
- redirect_with('error', 'ID Pengunjung telah digunakan');
- }
-
- $validated = [
- 'ip_address' => strip_tags($request['ip_address']),
- 'mac_address' => alfanumerik_kolon($request['mac_address']),
- 'id_pengunjung' => alfanumerik($request['id_pengunjung']),
- 'printer_ip' => bilangan_titik($request['printer_ip']),
- 'printer_port' => bilangan($request['printer_port']),
- 'keyboard' => bilangan($request['keyboard']),
- 'keterangan' => htmlentities($request['keterangan']),
- ];
-
- $validated['created_by'] = $id ? $validated['updated_by'] = ci_auth()->id : ci_auth()->id;
-
- return $validated;
- }
-}
+input->is_ajax_request()) {
- $order = $this->input->get('order') ?? false;
-
- return datatables()->of(Menu::when(! $order, static fn ($q) => $q->orderBy('urut')))
- ->addColumn('drag-handle', static fn (): string => '')
- ->addColumn('ceklist', static function ($row) {
- if (can('h')) {
- return '';
- }
- })
- ->addIndexColumn()
- ->addColumn('aksi', static function ($row): string {
- $aksi = '';
-
- if (can('u')) {
- $aksi .= ' ';
-
- if ($row->status == StatusEnum::YA) {
- $aksi .= ' ';
- } else {
- $aksi .= ' ';
- }
- }
-
- if (can('h')) {
- $aksi .= ' ';
- }
-
- return $aksi;
- })
- ->rawColumns(['drag-handle', 'ceklist', 'aksi'])
- ->make();
- }
-
- return show_404();
- }
-
- public function form($id = null)
- {
- isCan('u');
- $tipe_link = $this->referensi_model->list_ref(LINK_TIPE);
-
- $data['link_tipe'] = $tipe_link;
- $data['artikel_statis'] = Artikel::statis()->get();
- $data['kategori_artikel'] = Kategori::where('enabled', 1)->get();
- $data['statistik_penduduk'] = $this->referensi_model->list_ref(STAT_PENDUDUK);
- $data['statistik_keluarga'] = $this->referensi_model->list_ref(STAT_KELUARGA);
- $data['statistik_kategori_bantuan'] = $this->referensi_model->list_ref(STAT_BANTUAN);
- $data['statistik_program_bantuan'] = Bantuan::get();
- $data['kelompok'] = Kelompok::tipe('kelompok')->get();
- $data['lembaga'] = Kelompok::tipe('lembaga')->get();
- $data['suplemen'] = Suplemen::get();
- $data['statis_lainnya'] = $this->referensi_model->list_ref(STAT_LAINNYA);
- $data['artikel_keuangan'] = Artikel::keuangan()->get();
-
- if ($id) {
- $data['action'] = 'Ubah';
- $data['form_action'] = ci_route('anjungan_menu.update', $id);
- $data['menu'] = Menu::findOrFail($id);
- } else {
- $data['action'] = 'Tambah';
- $data['form_action'] = ci_route('anjungan_menu.insert');
- $data['menu'] = null;
- }
-
- return view('anjungan::backend.menu.form', $data);
- }
-
- public function insert(): void
- {
- isCan('u');
-
- if (Menu::create(static::validate($this->request))) {
- redirect_with('success', 'Berhasil Tambah Data');
- }
- redirect_with('error', 'Gagal Tambah Data');
- }
-
- public function update($id = null): void
- {
- isCan('u');
-
- $data = Menu::findOrFail($id);
-
- if ($data->update(static::validate($this->request, $id))) {
- redirect_with('success', 'Berhasil Ubah Data');
- }
- redirect_with('error', 'Gagal Ubah Data');
- }
-
- public function delete($id = null): void
- {
- isCan('h');
-
- if (Menu::destroy($id ?? $this->request['id_cb']) !== 0) {
- redirect_with('success', 'Berhasil Hapus Data');
- }
- redirect_with('error', 'Gagal Hapus Data');
- }
-
- public function lock($id = 0): void
- {
- isCan('u');
-
- if (Menu::gantiStatus($id, 'status')) {
- redirect_with('success', 'Berhasil Ubah Status');
- }
-
- redirect_with('error', 'Gagal Ubah Status');
- }
-
- public function tukar()
- {
- isCan('u');
-
- $menu = $this->input->post('data');
- Menu::setNewOrder($menu);
-
- return json(['status' => 1]);
- }
-
- protected static function validate(array $request = [], $id = null): array
- {
- $urut = $id ? Menu::find($id)->urut : Menu::max('urut') + 1;
-
- return [
- 'nama' => htmlentities($request['nama']),
- 'link' => $request['link'],
- 'icon' => static::unggah('icon'),
- 'link_tipe' => $request['link_tipe'],
- 'urut' => $urut,
- 'status' => 1,
- ];
- }
-
- protected static function unggah($jenis = '')
- {
- $CI = &get_instance();
- $CI->load->library('MY_Upload', null, 'upload');
- folder(LOKASI_ICON_MENU_ANJUNGAN);
-
- $CI->uploadConfig = [
- 'upload_path' => LOKASI_ICON_MENU_ANJUNGAN,
- 'allowed_types' => 'gif|jpg|jpeg|png',
- 'max_size' => max_upload() * 1024,
- ];
- // Adakah berkas yang disertakan?
- if (empty($_FILES[$jenis]['name'])) {
- return null;
- }
- // Tes tidak berisi script PHP
- if (isPHP($_FILES[$jenis]['tmp_name'], $_FILES[$jenis]['name'])) {
- redirect_with('error', 'Jenis file ini tidak diperbolehkan');
- }
- $uploadData = null;
- // Inisialisasi library 'upload'
- $CI->upload->initialize($CI->uploadConfig);
- // Upload sukses
- if ($CI->upload->do_upload($jenis)) {
- $uploadData = $CI->upload->data();
- $tipe_file = TipeFile($_FILES['icon']);
- resizeImage(LOKASI_ICON_MENU_ANJUNGAN . $uploadData['file_name'], $tipe_file, ['width' => 100, 'height' => 100]);
-
- return $uploadData['file_name'];
- }
- redirect_with('error', $CI->upload->display_errors(null, null));
-
- return null;
- }
-}
+pluck('value', 'key')->toArray();
- $data['anjungan_artikel'] = json_decode($data['pengaturan']['anjungan_artikel'], null);
- $data['slides'] = Galery::where('parrent', 0)->where('enabled', 1)->get();
-
- return view('anjungan::backend.pengaturan.index', $data);
- }
-
- public function update(): void
- {
- isCan('u');
-
- $data = static::validate($this->request);
-
- foreach ($data as $key => $value) {
- SettingAplikasi::where('key', '=', $key)->update(['value' => $value]);
- }
- (new SettingAplikasi())->flushQueryCache();
- redirect_with('success', 'Berhasil Ubah Data');
- }
-
- protected static function validate(array $request = []): array
- {
- return [
- 'sebutan_anjungan_mandiri' => strip_tags($request['sebutan_anjungan_mandiri']),
- 'anjungan_artikel' => json_encode($request['artikel'], JSON_THROW_ON_ERROR),
- 'anjungan_teks_berjalan' => strip_tags($request['teks_berjalan']),
- 'anjungan_profil' => bilangan($request['tampilan_profil']),
- 'anjungan_video' => strip_tags($request['video']),
- 'anjungan_youtube' => strip_tags($request['youtube']),
- 'anjungan_slide' => bilangan($request['slide']),
- 'tampilan_anjungan' => bilangan($request['screensaver']),
- 'tampilan_anjungan_waktu' => bilangan($request['screensaver_waktu']),
- 'tampilan_anjungan_slider' => bilangan($request['screensaver_slide']),
- 'tampilan_anjungan_video' => strip_tags($request['screensaver_video']),
- 'anjungan_layar' => bilangan($request['layar']),
- ];
- }
-}
+session->is_anjungan) {
- redirect(route('layanan-mandiri.beranda.index'));
- }
- }
-
- public function index()
- {
- $data['beranda'] = true;
-
- return view('anjungan::frontend.beranda.content', $data);
- }
-}
+load->helper('web');
- $this->load->model('pamong_model');
- if (! cek_anjungan() || $this->cek_anjungan['tipe'] != 1) {
- redirect('layanan-mandiri/beranda');
- }
- }
-
- public function index()
- {
- $menu = AnjunganMenu::where('status', 1)->get();
-
- $jumlah_artikel = setting('anjungan_layar') == 1 ? 4 : 6;
-
- $data = [
- 'cek_anjungan' => $this->cek_anjungan,
- 'arsip_terkini' => Artikel::arsip()->orderBy('tgl_upload', 'DESC')->limit($jumlah_artikel)->get(),
- 'arsip_populer' => Artikel::arsip()->orderBy('hit', 'DESC')->limit($jumlah_artikel)->get(),
- 'tanggal' => Carbon::now()->dayName . ', ' . date('d/m/Y'),
- 'menu' => $menu,
- 'slides' => count($menu) > 5 ? 5 : count($menu),
- 'teks_berjalan' => setting('anjungan_teks_berjalan'),
- 'gambar' => Galery::where('parrent', setting('anjungan_slide'))->where('enabled', 1)->get(),
- 'pamong' => $this->pamong_model->list_aparatur_desa()['daftar_perangkat'],
- ];
-
- $layar = setting('anjungan_layar') == 1 ? 'index' : 'potrait';
-
- return view("anjungan::frontend.{$layar}", $data);
- }
-}
+session->is_anjungan) {
- redirect(route('layanan-mandiri.beranda.index'));
- }
- }
-
- public function buat($id = '')
- {
- $id_pend = $this->is_login->id_pend;
- $permohonan = [];
- // Cek hanya status = 0 (belum lengkap) yg boleh di ubah
- if ($id) {
- $obj = PermohonanSurat::where(['id' => $id, 'id_pemohon' => $id_pend, 'status' => 0])->first();
-
- if (! $obj) {
- redirect(route('anjungan.surat.buat'));
- }
-
- $permohonan = $obj->toArray();
- $form_action = route('anjungan.surat.form', $id);
- } else {
- $form_action = route('anjungan.surat.form');
- }
-
- $data = [
- 'menu_surat_mandiri' => FormatSurat::kunci(FormatSurat::KUNCI_DISABLE)->mandiri()->get(),
- 'menu_dokumen_mandiri' => SyaratSurat::get()->toArray(),
- 'permohonan' => $permohonan,
- 'form_action' => $form_action,
- ];
-
- return view('anjungan::frontend.surat.buat', $data);
- }
-
- public function form($id = '')
- {
- $id_pend = $this->is_login->id_pend;
- $surat = FormatSurat::find($id);
- $syarat_surat = $this->getSyarat($surat->syarat_surat);
- $penduduk = Penduduk::find($id_pend) ?? show_404();
- $individu = $penduduk->formIndividu();
- $data = [];
- $data = array_merge($data, [
- 'syarat_surat' => $syarat_surat,
- 'url' => $surat->url_surat,
- 'individu' => $individu,
- 'anggota' => $penduduk?->keluarga?->anggota?->toArray(),
- 'surat_url' => rtrim($_SERVER['REQUEST_URI'], '/clear'),
- 'form_action' => ci_route("surat/cetak/{$surat->url_surat}"),
- 'anjungan' => true,
- ]);
- $this->get_data_untuk_form($surat->url_surat, $data);
-
- return view('anjungan::frontend.surat.form', $data);
- }
-
- public function getSyarat($suratMaster)
- {
- $syaratSurat = SyaratSurat::query()->get();
-
- $data = [];
-
- $syaratSuratList = json_decode($suratMaster, true);
-
- foreach ($syaratSurat as $baris) {
- if (is_array($syaratSuratList) && in_array($baris->ref_syarat_id, $syaratSuratList)) {
-
- $data[] = $baris->ref_syarat_nama;
- }
- }
-
- return $data;
- }
-
- private function get_data_untuk_form($url, array &$data): void
- {
- // Panggil 1 penduduk berdasarkan datanya sendiri
- $data['penduduk'] = [$data['periksa']['penduduk']];
-
- $data['surat_terakhir'] = LogSurat::lastNomerSurat($url);
- $data['surat'] = FormatSurat::where('url_surat', $url)->first()->toArray();
- $data['input'] = $this->input->post();
- $data['input']['nomor'] = $data['surat_terakhir']['no_surat_berikutnya'];
- $data['format_nomor_surat'] = FormatSurat::format_penomoran_surat($data);
- }
-
- public function permohonan()
- {
- if ($this->input->is_ajax_request()) {
- $printer = $this->print_connector();
-
- return datatables(PermohonanSurat::with(['logSurat', 'surat'])->where('id_pemohon', $this->is_login->id_pend)->orWhereHas('logSurat', function ($q) {
- $q->where('id_pend', $this->is_login->id_pend)
- ->where('deleted_at', null);
- }))
- ->addIndexColumn()
- ->addColumn('aksi', function ($item) use ($printer) {
- $aksi = '';
-
- if ($item->status == 0) {
- $url = site_url("layanan-mandiri/surat/buat/{$item->id}");
- $aksi .= "Lengkapi Surat ";
- } elseif ($item->status == 1) {
- $aksi .= "{$item->statusPermohonan} ";
- } elseif ($item->status == 2) {
- $aksi .= "{$item->statusPermohonan} ";
- } elseif ($item->status == 3) {
- $aksi .= "{$item->statusPermohonan} ";
- } elseif ($item->status == 4) {
- $aksi .= "{$item->statusPermohonan} ";
- } else {
- $aksi .= "
- {$item->statusPermohonan}
-
- ";
- }
-
- if (in_array($item->status, ['0', '1'])) {
- $url = site_url(MANDIRI . "/surat/proses/{$item->id}");
- $aksi .= " ";
- }
-
- if ($item->no_antrian && $this->cek_anjungan && $printer) {
- $url = site_url(MANDIRI . "/surat/cetak_no_antrian/{$item->no_antrian}");
- $aksi .= "No. Antrean ";
- }
-
- if ($item->status == 3 && $item->logSurat?->last()?->tte != null) {
- $url = site_url("layanan-mandiri/surat/cetak/{$item->logSurat?->last()?->id}");
- $aksi .= "";
- }
-
- return $aksi;
- })
- ->editColumn('no_antrian', static fn ($item) => get_antrian($item->no_antrian))
- ->editColumn('created_at', static fn ($item) => tgl_indo2($item->created_at))
- ->rawColumns(['aksi'])
- ->make();
- }
-
- return view('anjungan::frontend.surat.permohonan');
- }
-
- protected function print_connector()
- {
- if (null === ($anjungan = $this->cek_anjungan)) {
- return;
- }
-
- try {
- $connector = new NetworkPrintConnector($anjungan['printer_ip'], $anjungan['printer_port'], 5);
- } catch (Exception $e) {
- logger()->error($e->getMessage());
-
- return false;
- }
-
- return $connector;
- }
-
- public function kirim($id = ''): void
- {
- $this->load->library('Telegram/telegram');
- $post = $this->input->post();
-
- $surat = FormatSurat::where('url_surat', $post['url_surat'])->first();
-
- $syrat = collect(json_decode($surat->syarat_surat, true))
- ->mapWithKeys(static fn ($item, $key) => [(string) ($key + 1) => $item])
- ->all();
-
- $data = [
- 'config_id' => identitas('id'),
- 'id_pemohon' => bilangan($post['nik']),
- 'id_surat' => $surat->id,
- 'isian_form' => json_encode($post, JSON_THROW_ON_ERROR),
- 'status' => 1, // Selalu 1 bagi pengguna layanan mandiri
- 'keterangan' => 'Permohonan Surat dari Anjungan Mandiri',
- 'no_hp_aktif' => bilangan($post['no_hp_aktif']),
- 'syarat' => json_encode($syrat, JSON_THROW_ON_ERROR),
- 'updated_at' => date('Y-m-d H:i:s'),
- ];
-
- if ($id) {
- PermohonanSurat::whereId($id)->update($data);
- } else {
- $data['created_at'] = $data['updated_at'];
-
- PermohonanSurat::insert($data);
-
- if (setting('telegram_notifikasi') && cek_koneksi_internet()) {
- try {
- // Data pesan telegram yang akan digantikan
- $pesanTelegram = [
- '[nama_penduduk]' => $this->is_login->nama,
- '[judul_surat]' => FormatSurat::find($post['id_surat'])->nama,
- '[tanggal]' => tgl_indo2(date('Y-m-d H:i:s')),
- '[melalui]' => 'Layanan Mandiri',
- '[website]' => APP_URL,
- ];
-
- $kirimPesan = setting('notifikasi_pengajuan_surat');
- $kirimPesan = str_replace(array_keys($pesanTelegram), array_values($pesanTelegram), $kirimPesan);
- $this->telegram->sendMessage([
- 'text' => $kirimPesan,
- 'parse_mode' => 'Markdown',
- 'chat_id' => $this->setting->telegram_user_id,
- ]);
- } catch (Exception $e) {
- logger()->error($e->getMessage());
- }
- }
- }
-
- $this->session->unset_userdata('data_permohonan');
-
- redirect(route('anjungan.permohonan'));
- }
-}
+ self::ANJUNGAN,
- ];
-
- /**
- * The attributes that should be appended to the model.
- *
- * @var array
- */
- protected static function booted()
- {
- static::addGlobalScope('tipe', static function (Builder $builder) {
- $builder->where('tipe', self::ANJUNGAN);
- });
- }
-}
+
- */
- protected $fillable = [
- 'nama',
- 'icon',
- 'link',
- 'link_tipe',
- 'urut',
- 'status',
- 'created_by',
- 'updated_by',
- ];
-
- /**
- * The relations to eager load on every query.
- *
- * @var array
- */
- protected $with = [
- // 'createdBy',
- // 'updatedBy',
- ];
-
- protected $appends = ['link_url'];
-
- /**
- * {@inheritDoc}
- */
- public $sortable = [
- 'order_column_name' => 'urut',
- 'sort_when_creating' => true,
- ];
-
- /**
- * Define a one-to-one relationship.
- *
- * @return \Illuminate\Database\Eloquent\Relations\hasOne
- */
- public function createdBy()
- {
- return $this->hasOne(User::class, 'id', 'created_by');
- }
-
- /**
- * Define a one-to-one relationship.
- *
- * @return \Illuminate\Database\Eloquent\Relations\hasOne
- */
- public function updatedBy()
- {
- return $this->hasOne(User::class, 'id', 'updated_by');
- }
-
- /**
- * The "booted" method of the model.
- */
- public static function boot(): void
- {
- parent::boot();
-
- static::updating(static function ($model): void {
- static::deleteFile($model, 'icon');
- });
-
- static::deleting(static function ($model): void {
- static::deleteFile($model, 'icon', true);
- });
- }
-
- public static function deleteFile($model, ?string $file, $deleting = false): void
- {
- if ($model->isDirty($file) || $deleting) {
- $logo = LOKASI_ICON_MENU_ANJUNGAN . $model->getOriginal($file);
- if (file_exists($logo)) {
- unlink($logo);
- }
- }
- }
-
- public function getLinkUrlAttribute()
- {
- return $this->attributes['link_tipe'] == 99 ? $this->attributes['link'] : menu_slug($this->attributes['link']);
- }
-}
+registerConfig();
$this->registerViews();
$this->registerAssets();
}
@@ -72,6 +73,19 @@ public function register()
{
}
+ /**
+ * Register config.
+ *
+ * @return void
+ */
+ protected function registerConfig()
+ {
+ $this->mergeConfigFrom(
+ __DIR__ . '/../Config/config.php',
+ $this->moduleNameLower
+ );
+ }
+
/**
* Register views.
*/
@@ -84,12 +98,6 @@ public function registerViews(): void
public function registerAssets()
{
- $publicPath = FCPATH . 'assets/modules/' . $this->moduleNameLower;
- $assetPath = FCPATH . 'Modules/' . $this->moduleName . '/Views/assets';
-
- if (! File::exists($publicPath)) {
- File::ensureDirectoryExists(dirname($publicPath), 0755);
- File::link($assetPath, $publicPath);
- }
+ CreateSymlinkModule::handle($this->moduleName, $this->moduleNameLower);
}
}
diff --git a/Modules/Anjungan/Routes/web.php b/Modules/Anjungan/Routes/web.php
index 644ed7c86..0b2bdeacf 100644
--- a/Modules/Anjungan/Routes/web.php
+++ b/Modules/Anjungan/Routes/web.php
@@ -1,78 +1,457 @@
- Daftar Anjungan
-Route::group('anjungan', ['namespace' => 'Anjungan/BackEnd'], static function (): void {
- Route::get('/', 'AnjunganController@index')->name('admin.anjungan.index');
- Route::get('/datatables', 'AnjunganController@datatables')->name('admin.anjungan.datatables');
- Route::get('/form/{id?}', 'AnjunganController@form')->name('admin.anjungan.form');
- Route::post('/insert', 'AnjunganController@insert')->name('admin.anjungan.insert');
- Route::post('/update/{id?}', 'AnjunganController@update')->name('admin.anjungan.update');
- Route::get('/delete/{id?}', 'AnjunganController@delete')->name('admin.anjungan.delete');
- Route::post('/delete', 'AnjunganController@delete')->name('admin.anjungan.delete-all');
- Route::get('/kunci/{id?}/{val?}', 'AnjunganController@kunci')->name('admin.anjungan.kunci');
-});
-
-// Anjungan > Menu
-Route::group('anjungan_menu', ['namespace' => 'Anjungan/BackEnd'], static function (): void {
- Route::get('/', 'AnjunganMenuController@index')->name('anjungan_menu.index');
- Route::get('/datatables', 'AnjunganMenuController@datatables')->name('anjungan_menu.datatables');
- Route::get('/form/{id?}', 'AnjunganMenuController@form')->name('anjungan_menu.form');
- Route::post('/insert', 'AnjunganMenuController@insert')->name('anjungan_menu.insert');
- Route::post('/update/{id?}', 'AnjunganMenuController@update')->name('anjungan_menu.update');
- Route::get('/delete/{id?}', 'AnjunganMenuController@delete')->name('anjungan_menu.delete');
- Route::post('/delete', 'AnjunganMenuController@delete')->name('anjungan_menu.delete-all');
- Route::get('/lock/{id?}', 'AnjunganMenuController@lock')->name('anjungan_menu.lock');
- Route::post('/tukar', 'AnjunganMenuController@tukar')->name('anjungan_menu.tukar');
-});
-
-// Anjungan > Pengaturan
-Route::group('anjungan_pengaturan', ['namespace' => 'Anjungan/BackEnd'], static function (): void {
- Route::get('/', 'AnjunganPengaturanController@index')->name('anjungan_pengaturan.index');
- Route::post('/update', 'AnjunganPengaturanController@update')->name('anjungan_pengaturan.update');
-});
-
-// FRONTEND
-Route::group('anjungan-mandiri', ['namespace' => 'Anjungan/FrontEnd'], static function (): void {
- Route::get('/', 'AnjunganController@index')->name('anjungan.index');
- Route::get('/beranda', 'AnjunganBerandaController@index')->name('anjungan.beranda.index');
- Route::get('/surat/{id?}', 'AnjunganSuratController@buat')->name('anjungan.surat');
- Route::get('/surat/form/{id?}', 'AnjunganSuratController@form')->name('anjungan.surat.form');
- Route::post('/surat/kirim', 'AnjunganSuratController@kirim')->name('anjungan.surat.kirim');
- Route::get('/permohonan', 'AnjunganSuratController@permohonan')->name('anjungan.permohonan');
-});
+
-
-
+
+
diff --git a/Modules/Anjungan/Views/frontend/index.blade.php b/Modules/Anjungan/Views/frontend/index.blade.php
index 8435836f9..abb917bfc 100644
--- a/Modules/Anjungan/Views/frontend/index.blade.php
+++ b/Modules/Anjungan/Views/frontend/index.blade.php
@@ -12,21 +12,21 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@stack('css')
-
-
-
+
+
+
Absen
-Buku
Tamu
= $pemerintah[0] ?>
= $pemerintah[1] ?>
Layanan
Mandiri
Gelapkan Layar