Merge branch 'main' of https://git.probindo.com/Probindo/database-pertani-web
This commit is contained in:
@@ -2,15 +2,49 @@
|
||||
|
||||
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 SoftDeletes, CatatAktivitas;
|
||||
use CatatAktivitas, HasDeletedBy, SoftDeletes;
|
||||
|
||||
protected $table = 'bumdes_kelembagaan_aktor';
|
||||
|
||||
@@ -40,25 +74,213 @@ class KelembagaanAktorBumdes extends Model
|
||||
'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 $casts = [
|
||||
'tahun_dasar_hukum' => 'integer',
|
||||
'tahun_ad_art' => 'integer',
|
||||
'unit_usaha' => 'array',
|
||||
'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',
|
||||
];
|
||||
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
|
||||
{
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
|
||||
namespace App\Models\Bumdes;
|
||||
|
||||
use App\Models\Concerns\CatatAktivitas;
|
||||
use App\Enums\Bumdes\JabatanBumdes;
|
||||
use App\Enums\Pendidikan;
|
||||
use App\Models\Concerns\CatatAktivitas;
|
||||
use App\Models\Concerns\HasDeletedBy;
|
||||
use App\Models\User;
|
||||
use App\Models\Wilayah\DesaKelurahan;
|
||||
use Carbon\Carbon;
|
||||
@@ -15,7 +16,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
|
||||
class PengurusBumdes extends Model
|
||||
{
|
||||
use SoftDeletes, CatatAktivitas;
|
||||
use CatatAktivitas, HasDeletedBy, SoftDeletes;
|
||||
|
||||
protected $table = 'bumdes_pengurus';
|
||||
|
||||
@@ -38,13 +39,33 @@ class PengurusBumdes extends Model
|
||||
'deleted_by',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'jenis_kelamin' => 'boolean',
|
||||
'tanggal_lahir' => 'date',
|
||||
'pendidikan_terakhir' => Pendidikan::class,
|
||||
'tanggal_mulai_menjabat' => 'date',
|
||||
'jabatan' => JabatanBumdes::class,
|
||||
];
|
||||
protected function casts(): array
|
||||
{
|
||||
return [
|
||||
'jenis_kelamin' => 'boolean',
|
||||
'tanggal_lahir' => 'date',
|
||||
'pendidikan_terakhir' => Pendidikan::class,
|
||||
'tanggal_mulai_menjabat' => 'date',
|
||||
'jabatan' => JabatanBumdes::class,
|
||||
];
|
||||
}
|
||||
|
||||
protected static function booted(): void
|
||||
{
|
||||
static::deleting(function (self $pengurus) {
|
||||
if (! $pengurus->isForceDeleting()) {
|
||||
$pengurus->kelembagaanAktor()->each(fn ($data) => $data->delete());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function profilLengkap(): bool
|
||||
{
|
||||
return $this->exists && collect([
|
||||
'nama', 'tempat_lahir', 'tanggal_lahir', 'pendidikan_terakhir', 'alamat',
|
||||
'desa_kelurahan_id', 'jabatan', 'lama_menjabat_tahun',
|
||||
])->every(fn ($field) => filled($this->{$field})) && $this->jenis_kelamin !== null;
|
||||
}
|
||||
|
||||
public function getUsiaAttribute(): ?int
|
||||
{
|
||||
@@ -58,7 +79,7 @@ class PengurusBumdes extends Model
|
||||
public function getLamaMenjabatAttribute(): string
|
||||
{
|
||||
if (! is_null($this->lama_menjabat_tahun)) {
|
||||
return $this->lama_menjabat_tahun . ' tahun';
|
||||
return $this->lama_menjabat_tahun.' tahun';
|
||||
}
|
||||
|
||||
if (! $this->tanggal_mulai_menjabat) {
|
||||
@@ -75,15 +96,15 @@ class PengurusBumdes extends Model
|
||||
$bagian = [];
|
||||
|
||||
if ($selisih->y > 0) {
|
||||
$bagian[] = $selisih->y . ' tahun';
|
||||
$bagian[] = $selisih->y.' tahun';
|
||||
}
|
||||
|
||||
if ($selisih->m > 0) {
|
||||
$bagian[] = $selisih->m . ' bulan';
|
||||
$bagian[] = $selisih->m.' bulan';
|
||||
}
|
||||
|
||||
if (empty($bagian)) {
|
||||
return $selisih->d . ' hari';
|
||||
return $selisih->d.' hari';
|
||||
}
|
||||
|
||||
return implode(' ', $bagian);
|
||||
|
||||
@@ -10,6 +10,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
|
||||
use App\Models\Wilayah\DesaKelurahan;
|
||||
use App\Models\User;
|
||||
|
||||
class KelompokTani extends Model
|
||||
{
|
||||
@@ -125,6 +126,11 @@ class KelompokTani extends Model
|
||||
return $this->belongsTo(DesaKelurahan::class, 'desa_kelurahan_id');
|
||||
}
|
||||
|
||||
public function creator(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class, 'created_by');
|
||||
}
|
||||
|
||||
public function pengurus()
|
||||
{
|
||||
return $this->hasMany(PengurusKelompokTani::class, 'survey_kelompok_tani_id');
|
||||
|
||||
Reference in New Issue
Block a user