Files
database-pertani-web/app/Models/Koperasi/PengurusKoperasi.php
T
2026-11-06 22:38:45 +07:00

163 lines
8.0 KiB
PHP

<?php
namespace App\Models\Koperasi;
use App\Enums\Koperasi\AlasanPinjamanKoperasi;
use App\Enums\Koperasi\BentukPembayaranKoperasi;
use App\Enums\Koperasi\BentukProdukKoperasi;
use App\Enums\Koperasi\EfektivitasSanksiKoperasi;
use App\Enums\Koperasi\FaktorManajemenKoperasi;
use App\Enums\Koperasi\FasilitasKoperasi;
use App\Enums\Koperasi\FokusKomoditasKoperasi;
use App\Enums\Koperasi\FormatPembukuanKoperasi;
use App\Enums\Koperasi\FrekuensiPertemuanKoperasi;
use App\Enums\Koperasi\HubunganPemasokKoperasi;
use App\Enums\Koperasi\JawabanYaTidakKoperasi;
use App\Enums\Koperasi\KetersediaanKoperasi;
use App\Enums\Koperasi\KomoditasAgregasiKoperasi;
use App\Enums\Koperasi\LayananKoperasi;
use App\Enums\Koperasi\MekanismePembayaranKoperasi;
use App\Enums\Koperasi\ModelFermentasiKoperasi;
use App\Enums\Koperasi\PenetapanHargaKoperasi;
use App\Enums\Koperasi\PeranRantaiNilaiKoperasi;
use App\Enums\Koperasi\PerjanjianPetaniKoperasi;
use App\Enums\Koperasi\PosisiKoperasi;
use App\Enums\Koperasi\PraktikFermentasiKoperasi;
use App\Enums\Koperasi\PraktikPengeringanKoperasi;
use App\Enums\Koperasi\PraktikSortasiKoperasi;
use App\Enums\Koperasi\SkalaOperasiKoperasi;
use App\Enums\Koperasi\StatusAdArtKoperasi;
use App\Enums\Koperasi\StatusPembukuanKoperasi;
use App\Enums\Koperasi\SumberPasokanKoperasi;
use App\Enums\Koperasi\TingkatKreditMacetKoperasi;
use App\Enums\Koperasi\TujuanPenjualanKoperasi;
use App\Models\Concerns\CatatAktivitas;
use App\Models\User;
use App\Models\Wilayah\DesaKelurahan;
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class PengurusKoperasi extends Model
{
use CatatAktivitas;
protected $table = 'pengurus_koperasi';
protected $fillable = [
// Profil responden
'nama_lengkap', 'posisi_dalam_koperasi', 'tahun_bergabung',
'no_hp', 'alamat_tinggal',
// Profil Koperasi
'nama_koperasi', 'jenis_koperasi', 'alamat_koperasi', 'desa_kelurahan_id', 'created_by',
'skala_operasi', 'tahun_berdiri',
// Anggota & Pengurus
'jumlah_anggota_awal', 'jumlah_anggota_dewasa', 'jumlah_anggota_anak', 'jumlah_pengurus',
// SHU
'shu_2025', 'shu_2024', 'shu_2023',
// Kelembagaan & Manajemen
'sejarah_lembaga', 'fokus_komoditas', 'detail_fokus_komoditas',
'ad_art', 'tahun_ad_art', 'layanan_koperasi', 'layanan_lainnya',
'pelatihan_produksi', 'pelatihan_pascapanen', 'pelatihan_pengolahan',
'pelatihan_keuangan', 'pelatihan_pemasaran', 'pelatihan_lainnya',
'status_pembukuan', 'format_pembukuan', 'pertemuan_rutin', 'pertemuan_lainnya',
'kasus_kredit_macet', 'sanksi_kredit_macet', 'efektivitas_sanksi',
'faktor_manajemen', 'faktor_manajemen_lainnya', 'keterlibatan_rantai_nilai',
'agregasi_komoditas', 'agregasi_komoditas_lainnya', 'fasilitas_koperasi', 'fasilitas_lainnya',
'pengolahan_lanjutan', 'detail_pengolahan_lanjutan', 'cara_penentuan_harga',
'kontrak_offtaker', 'kontrak_komoditas',
// Akses Pasar & Rantai Nilai Eksternal
'sumber_pasokan', 'sumber_pasokan_lainnya', 'bentuk_pembelian',
'volume_beli_sekarang', 'volume_beli_1_tahun', 'volume_beli_2_tahun',
'tujuan_penjualan', 'tujuan_penjualan_lainnya', 'bentuk_penjualan',
'volume_jual_sekarang', 'volume_jual_1_tahun', 'volume_jual_2_tahun',
'sifat_hubungan_bisnis', 'sifat_hubungan_lainnya', 'mekanisme_pembayaran', 'status_perjanjian_tertulis',
// Harga Komoditas
'harga_segar_sekarang', 'harga_segar_1_tahun', 'harga_segar_2_tahun',
'harga_basah_sekarang', 'harga_basah_1_tahun', 'harga_basah_2_tahun',
'harga_kering_sekarang', 'harga_kering_1_tahun', 'harga_kering_2_tahun',
'harga_fermentasi_sekarang', 'harga_fermentasi_1_tahun', 'harga_fermentasi_2_tahun',
'cara_menetapkan_harga_pasar', 'cara_menetapkan_harga_lainnya',
// Praktik Kualitas & Pascapanen
'praktik_sortasi', 'standar_sortasi', 'praktik_pengeringan', 'cara_pengeringan',
'praktik_fermentasi', 'model_fermentasi', 'proses_fermentasi',
'harga_premium_rupiah', 'harga_premium_persen',
// Sosial Ekonomi
'simpanan_terbesar', 'momen_simpanan_terbesar',
'alasan_pinjaman', 'alasan_pinjaman_lainnya', 'pembayaran_selain_uang',
'bentuk_pembayaran_barang', 'bentuk_pembayaran_lainnya', 'perhitungan_harga_pasar', 'alasan_bukan_harga_pasar',
// PENILAIAN ENUMERATOR
'enum_potensi', 'enum_alasan_potensi', 'enum_kebutuhan', 'enum_kebutuhan_lain', 'enum_keterbukaan',
];
protected function casts(): array
{
return [
'alasan_pinjaman' => AsEnumCollection::of(AlasanPinjamanKoperasi::class),
'bentuk_pembayaran_barang' => AsEnumCollection::of(BentukPembayaranKoperasi::class),
'pembayaran_selain_uang' => KetersediaanKoperasi::class,
'perhitungan_harga_pasar' => JawabanYaTidakKoperasi::class,
'posisi_dalam_koperasi' => PosisiKoperasi::class,
'skala_operasi' => SkalaOperasiKoperasi::class,
'fokus_komoditas' => FokusKomoditasKoperasi::class,
'mekanisme_pembayaran' => MekanismePembayaranKoperasi::class,
'status_perjanjian_tertulis' => PerjanjianPetaniKoperasi::class,
'praktik_sortasi' => PraktikSortasiKoperasi::class,
'praktik_pengeringan' => PraktikPengeringanKoperasi::class,
'praktik_fermentasi' => PraktikFermentasiKoperasi::class,
'sumber_pasokan' => AsEnumCollection::of(SumberPasokanKoperasi::class),
'bentuk_pembelian' => AsEnumCollection::of(BentukProdukKoperasi::class),
'tujuan_penjualan' => AsEnumCollection::of(TujuanPenjualanKoperasi::class),
'bentuk_penjualan' => AsEnumCollection::of(BentukProdukKoperasi::class),
'sifat_hubungan_bisnis' => AsEnumCollection::of(HubunganPemasokKoperasi::class),
'cara_menetapkan_harga_pasar' => AsEnumCollection::of(PenetapanHargaKoperasi::class),
'model_fermentasi' => AsEnumCollection::of(ModelFermentasiKoperasi::class),
'ad_art' => StatusAdArtKoperasi::class,
'pelatihan_produksi' => JawabanYaTidakKoperasi::class,
'pelatihan_pascapanen' => JawabanYaTidakKoperasi::class,
'pelatihan_pengolahan' => JawabanYaTidakKoperasi::class,
'pelatihan_keuangan' => JawabanYaTidakKoperasi::class,
'pelatihan_pemasaran' => JawabanYaTidakKoperasi::class,
'status_pembukuan' => StatusPembukuanKoperasi::class,
'format_pembukuan' => FormatPembukuanKoperasi::class,
'pertemuan_rutin' => FrekuensiPertemuanKoperasi::class,
'kasus_kredit_macet' => TingkatKreditMacetKoperasi::class,
'sanksi_kredit_macet' => KetersediaanKoperasi::class,
'efektivitas_sanksi' => EfektivitasSanksiKoperasi::class,
'pengolahan_lanjutan' => JawabanYaTidakKoperasi::class,
'kontrak_offtaker' => KetersediaanKoperasi::class,
'layanan_koperasi' => AsEnumCollection::of(LayananKoperasi::class),
'faktor_manajemen' => AsEnumCollection::of(FaktorManajemenKoperasi::class),
'keterlibatan_rantai_nilai' => AsEnumCollection::of(PeranRantaiNilaiKoperasi::class),
'agregasi_komoditas' => AsEnumCollection::of(KomoditasAgregasiKoperasi::class),
'fasilitas_koperasi' => AsEnumCollection::of(FasilitasKoperasi::class),
];
}
public function profilLengkap(): bool
{
return $this->exists && collect([
'nama_lengkap', 'posisi_dalam_koperasi', 'nama_koperasi', 'jenis_koperasi', 'skala_operasi',
])->every(fn ($field) => filled($this->getAttributes()[$field] ?? null));
}
public function creator(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by');
}
public function desaKelurahan(): BelongsTo
{
return $this->belongsTo(DesaKelurahan::class, 'desa_kelurahan_id');
}
}