295 lines
11 KiB
PHP
295 lines
11 KiB
PHP
<?php
|
|
|
|
namespace App\Models\Bumdes;
|
|
|
|
use App\Enums\Bumdes\BentukProdukBumdes;
|
|
use App\Enums\Bumdes\CakupanLayananBumdes;
|
|
use App\Enums\Bumdes\DukunganDesaBumdes;
|
|
use App\Enums\Bumdes\FormatPembukuanBumdes;
|
|
use App\Enums\Bumdes\HambatanUsahaBumdes;
|
|
use App\Enums\Bumdes\HubunganPemasokBumdes;
|
|
use App\Enums\Bumdes\KemitraanEksternalBumdes;
|
|
use App\Enums\Bumdes\KeterlibatanKoordinasiBumdes;
|
|
use App\Enums\Bumdes\KondisiKeuanganBumdes;
|
|
use App\Enums\Bumdes\KontribusiPadesBumdes;
|
|
use App\Enums\Bumdes\LayananPetaniBumdes;
|
|
use App\Enums\Bumdes\MekanismePembayaranBumdes;
|
|
use App\Enums\Bumdes\ModelFermentasiBumdes;
|
|
use App\Enums\Bumdes\PencatatanPetaniBumdes;
|
|
use App\Enums\Bumdes\PenetapanHargaBeliBumdes;
|
|
use App\Enums\Bumdes\PengalamanOfftakerBumdes;
|
|
use App\Enums\Bumdes\PeranRantaiNilaiBumdes;
|
|
use App\Enums\Bumdes\PerjanjianPetaniBumdes;
|
|
use App\Enums\Bumdes\PertanggungjawabanMusdesBumdes;
|
|
use App\Enums\Bumdes\SaluranPenjualanBumdes;
|
|
use App\Enums\Bumdes\SifatAuditBumdes;
|
|
use App\Enums\Bumdes\StatusAdArtBumdes;
|
|
use App\Enums\Bumdes\StatusBadanHukumBumdes;
|
|
use App\Enums\Bumdes\StatusFermentasiBumdes;
|
|
use App\Enums\Bumdes\StatusKeaktifanBumdes;
|
|
use App\Enums\Bumdes\StatusKepemilikanAsetBumdes;
|
|
use App\Enums\Bumdes\StatusPembukuanBumdes;
|
|
use App\Enums\Bumdes\StatusPengeringanBumdes;
|
|
use App\Enums\Bumdes\StatusSortasiBumdes;
|
|
use App\Enums\Bumdes\StatusUnitKomoditasBumdes;
|
|
use App\Enums\Bumdes\SumberPasokanBumdes;
|
|
use App\Enums\Bumdes\UnitUsahaBumdes;
|
|
use App\Models\Concerns\CatatAktivitas;
|
|
use App\Models\Concerns\HasDeletedBy;
|
|
use App\Models\User;
|
|
use Illuminate\Database\Eloquent\Casts\AsEnumCollection;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
|
|
|
class KelembagaanAktorBumdes extends Model
|
|
{
|
|
use CatatAktivitas, HasDeletedBy, SoftDeletes;
|
|
|
|
protected $table = 'bumdes_kelembagaan_aktor';
|
|
|
|
protected $fillable = [
|
|
'pengurus_bumdes_id',
|
|
'status_badan_hukum',
|
|
'nomor_dasar_hukum',
|
|
'tahun_dasar_hukum',
|
|
'status_keaktifan',
|
|
'alasan_tidak_aktif',
|
|
'unit_usaha',
|
|
'unit_usaha_jasa_lainnya',
|
|
'status_unit_komoditas',
|
|
'nama_unit_komoditas',
|
|
'status_ad_art',
|
|
'tahun_ad_art',
|
|
'pengurus_inti',
|
|
'memiliki_staf',
|
|
'jumlah_staf',
|
|
'unit_usaha_staf',
|
|
'modal_awal',
|
|
'tahun_modal_awal',
|
|
'pernah_penambahan_modal',
|
|
'penambahan_modal',
|
|
'aset_produktif',
|
|
'aset_produktif_lainnya',
|
|
'status_kepemilikan_aset',
|
|
'infrastruktur_pascapanen',
|
|
'infrastruktur_pascapanen_lainnya',
|
|
'ada_alokasi_desa',
|
|
'jumlah_alokasi_desa',
|
|
'dukungan_desa',
|
|
'dukungan_desa_lainnya',
|
|
'keterlibatan_koordinasi_desa',
|
|
'kemitraan_eksternal',
|
|
'kemitraan_eksternal_lainnya',
|
|
'status_pembukuan',
|
|
'format_pembukuan',
|
|
'pernah_audit',
|
|
'sifat_audit',
|
|
'pelaksana_audit',
|
|
'tahun_audit',
|
|
'pertanggungjawaban_musdes',
|
|
'tahun_laporan_musdes',
|
|
'kondisi_keuangan',
|
|
'kontribusi_pades',
|
|
'nominal_kontribusi_pades',
|
|
'cakupan_layanan',
|
|
'desa_lain_dilayani',
|
|
'jumlah_petani_desa_sendiri',
|
|
'jumlah_petani_desa_lain',
|
|
'pencatatan_petani',
|
|
'layanan_petani',
|
|
'layanan_petani_lainnya',
|
|
'peran_rantai_nilai',
|
|
'pengalaman_offtaker',
|
|
'nama_offtaker',
|
|
'tahun_mulai_offtaker',
|
|
'alasan_berhenti_offtaker',
|
|
'hambatan_usaha',
|
|
'hambatan_usaha_lainnya',
|
|
'melakukan_jual_beli',
|
|
'sumber_pasokan',
|
|
'sumber_pasokan_lainnya',
|
|
'bentuk_produk_dibeli',
|
|
'volume_pembelian',
|
|
'saluran_penjualan',
|
|
'saluran_penjualan_lainnya',
|
|
'bentuk_produk_dijual',
|
|
'volume_penjualan',
|
|
'hubungan_petani_pemasok',
|
|
'hubungan_petani_pemasok_lainnya',
|
|
'mekanisme_pembayaran_petani',
|
|
'mekanisme_pembayaran_lainnya',
|
|
'perjanjian_petani',
|
|
'harga_beli_petani',
|
|
'penetapan_harga_beli',
|
|
'penetapan_harga_beli_lainnya',
|
|
'melakukan_pengolahan_pascapanen',
|
|
'status_sortasi',
|
|
'kriteria_sortasi',
|
|
'status_pengeringan',
|
|
'cara_tempat_pengeringan',
|
|
'status_fermentasi',
|
|
'model_fermentasi',
|
|
'proses_fermentasi',
|
|
'premium_harga_pascapanen',
|
|
'created_by',
|
|
'updated_by',
|
|
'deleted_by',
|
|
];
|
|
|
|
protected function casts(): array
|
|
{
|
|
return [
|
|
'melakukan_pengolahan_pascapanen' => 'boolean',
|
|
'status_sortasi' => StatusSortasiBumdes::class,
|
|
'status_pengeringan' => StatusPengeringanBumdes::class,
|
|
'status_fermentasi' => StatusFermentasiBumdes::class,
|
|
'model_fermentasi' => AsEnumCollection::of(ModelFermentasiBumdes::class),
|
|
'premium_harga_pascapanen' => 'decimal:2',
|
|
'melakukan_jual_beli' => 'boolean',
|
|
'sumber_pasokan' => AsEnumCollection::of(SumberPasokanBumdes::class),
|
|
'bentuk_produk_dibeli' => AsEnumCollection::of(BentukProdukBumdes::class),
|
|
'volume_pembelian' => 'array',
|
|
'saluran_penjualan' => AsEnumCollection::of(SaluranPenjualanBumdes::class),
|
|
'bentuk_produk_dijual' => AsEnumCollection::of(BentukProdukBumdes::class),
|
|
'volume_penjualan' => 'array',
|
|
'hubungan_petani_pemasok' => AsEnumCollection::of(HubunganPemasokBumdes::class),
|
|
'mekanisme_pembayaran_petani' => MekanismePembayaranBumdes::class,
|
|
'perjanjian_petani' => PerjanjianPetaniBumdes::class,
|
|
'harga_beli_petani' => 'array',
|
|
'penetapan_harga_beli' => PenetapanHargaBeliBumdes::class,
|
|
'status_pembukuan' => StatusPembukuanBumdes::class,
|
|
'format_pembukuan' => FormatPembukuanBumdes::class,
|
|
'pernah_audit' => 'boolean',
|
|
'sifat_audit' => AsEnumCollection::of(SifatAuditBumdes::class),
|
|
'tahun_audit' => 'integer',
|
|
'pertanggungjawaban_musdes' => PertanggungjawabanMusdesBumdes::class,
|
|
'tahun_laporan_musdes' => 'integer',
|
|
'kondisi_keuangan' => KondisiKeuanganBumdes::class,
|
|
'kontribusi_pades' => KontribusiPadesBumdes::class,
|
|
'nominal_kontribusi_pades' => 'decimal:2',
|
|
'cakupan_layanan' => CakupanLayananBumdes::class,
|
|
'jumlah_petani_desa_sendiri' => 'integer',
|
|
'jumlah_petani_desa_lain' => 'integer',
|
|
'pencatatan_petani' => PencatatanPetaniBumdes::class,
|
|
'layanan_petani' => AsEnumCollection::of(LayananPetaniBumdes::class),
|
|
'peran_rantai_nilai' => PeranRantaiNilaiBumdes::class,
|
|
'pengalaman_offtaker' => PengalamanOfftakerBumdes::class,
|
|
'tahun_mulai_offtaker' => 'integer',
|
|
'hambatan_usaha' => AsEnumCollection::of(HambatanUsahaBumdes::class),
|
|
'ada_alokasi_desa' => 'boolean',
|
|
'jumlah_alokasi_desa' => 'decimal:2',
|
|
'dukungan_desa' => AsEnumCollection::of(DukunganDesaBumdes::class),
|
|
'keterlibatan_koordinasi_desa' => KeterlibatanKoordinasiBumdes::class,
|
|
'kemitraan_eksternal' => AsEnumCollection::of(KemitraanEksternalBumdes::class),
|
|
'status_badan_hukum' => StatusBadanHukumBumdes::class,
|
|
'status_keaktifan' => StatusKeaktifanBumdes::class,
|
|
'status_unit_komoditas' => StatusUnitKomoditasBumdes::class,
|
|
'status_ad_art' => StatusAdArtBumdes::class,
|
|
'status_kepemilikan_aset' => StatusKepemilikanAsetBumdes::class,
|
|
'tahun_dasar_hukum' => 'integer',
|
|
'tahun_ad_art' => 'integer',
|
|
'unit_usaha' => AsEnumCollection::of(UnitUsahaBumdes::class),
|
|
'pengurus_inti' => 'array',
|
|
'memiliki_staf' => 'boolean',
|
|
'jumlah_staf' => 'integer',
|
|
'modal_awal' => 'decimal:2',
|
|
'tahun_modal_awal' => 'integer',
|
|
'pernah_penambahan_modal' => 'boolean',
|
|
'penambahan_modal' => 'array',
|
|
'aset_produktif' => 'array',
|
|
'infrastruktur_pascapanen' => 'array',
|
|
];
|
|
}
|
|
|
|
public static function sectionFields(string $section): array
|
|
{
|
|
if ($section === 'rantai-nilai') {
|
|
return [
|
|
'melakukan_pengolahan_pascapanen',
|
|
'status_sortasi',
|
|
'kriteria_sortasi',
|
|
'status_pengeringan',
|
|
'cara_tempat_pengeringan',
|
|
'status_fermentasi',
|
|
'model_fermentasi',
|
|
'proses_fermentasi',
|
|
'premium_harga_pascapanen',
|
|
'melakukan_jual_beli',
|
|
'sumber_pasokan',
|
|
'sumber_pasokan_lainnya',
|
|
'bentuk_produk_dibeli',
|
|
'volume_pembelian',
|
|
'saluran_penjualan',
|
|
'saluran_penjualan_lainnya',
|
|
'bentuk_produk_dijual',
|
|
'volume_penjualan',
|
|
'hubungan_petani_pemasok',
|
|
'hubungan_petani_pemasok_lainnya',
|
|
'mekanisme_pembayaran_petani',
|
|
'mekanisme_pembayaran_lainnya',
|
|
'perjanjian_petani',
|
|
'harga_beli_petani',
|
|
'penetapan_harga_beli',
|
|
'penetapan_harga_beli_lainnya',
|
|
];
|
|
}
|
|
|
|
if ($section === 'profil') {
|
|
return [
|
|
'status_keaktifan', 'alasan_tidak_aktif', 'pengurus_inti', 'memiliki_staf',
|
|
'jumlah_staf', 'unit_usaha_staf',
|
|
];
|
|
}
|
|
|
|
return $section === 'operasional' ? [
|
|
'modal_awal', 'tahun_modal_awal',
|
|
'pernah_penambahan_modal', 'penambahan_modal', 'aset_produktif',
|
|
'aset_produktif_lainnya', 'status_kepemilikan_aset', 'infrastruktur_pascapanen',
|
|
'infrastruktur_pascapanen_lainnya',
|
|
'ada_alokasi_desa', 'jumlah_alokasi_desa', 'dukungan_desa',
|
|
'dukungan_desa_lainnya', 'keterlibatan_koordinasi_desa',
|
|
'kemitraan_eksternal', 'kemitraan_eksternal_lainnya',
|
|
'status_pembukuan',
|
|
'format_pembukuan',
|
|
'pernah_audit',
|
|
'sifat_audit',
|
|
'pelaksana_audit',
|
|
'tahun_audit',
|
|
'pertanggungjawaban_musdes',
|
|
'tahun_laporan_musdes',
|
|
'kondisi_keuangan',
|
|
'kontribusi_pades',
|
|
'nominal_kontribusi_pades',
|
|
'cakupan_layanan',
|
|
'desa_lain_dilayani',
|
|
'jumlah_petani_desa_sendiri',
|
|
'jumlah_petani_desa_lain',
|
|
'pencatatan_petani',
|
|
'layanan_petani',
|
|
'layanan_petani_lainnya',
|
|
'peran_rantai_nilai',
|
|
'pengalaman_offtaker',
|
|
'nama_offtaker',
|
|
'tahun_mulai_offtaker',
|
|
'alasan_berhenti_offtaker',
|
|
'hambatan_usaha',
|
|
'hambatan_usaha_lainnya',
|
|
] : [
|
|
'status_badan_hukum', 'nomor_dasar_hukum', 'tahun_dasar_hukum', 'unit_usaha',
|
|
'unit_usaha_jasa_lainnya', 'status_unit_komoditas', 'nama_unit_komoditas',
|
|
'status_ad_art', 'tahun_ad_art',
|
|
];
|
|
}
|
|
|
|
public function pengurusBumdes(): BelongsTo
|
|
{
|
|
return $this->belongsTo(PengurusBumdes::class, 'pengurus_bumdes_id');
|
|
}
|
|
|
|
public function creator(): BelongsTo
|
|
{
|
|
return $this->belongsTo(User::class, 'created_by');
|
|
}
|
|
}
|