163 lines
8.0 KiB
PHP
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');
|
|
}
|
|
}
|