Update Koperasi
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Koperasi;
|
||||
|
||||
use App\Enums\Koperasi\BagianRantaiNilaiKoperasi;
|
||||
use App\Enums\Koperasi\BentukProdukKoperasi;
|
||||
use App\Enums\Koperasi\HubunganPemasokKoperasi;
|
||||
use App\Enums\Koperasi\PenetapanHargaKoperasi;
|
||||
use App\Enums\Koperasi\SumberPasokanKoperasi;
|
||||
use App\Enums\Koperasi\TujuanPenjualanKoperasi;
|
||||
|
||||
class RantaiNilaiKoperasiService extends KoperasiSurveyService
|
||||
{
|
||||
public const PERIODS = ['sekarang' => 'Panen Terakhir', '1_tahun' => 'Tahun Lalu', '2_tahun' => 'Dua Tahun Lalu'];
|
||||
|
||||
public function dependencies(): array
|
||||
{
|
||||
$when = fn (string $field, array $values) => ['field' => $field, 'values' => $values, 'source' => 'form'];
|
||||
$buyers = array_values(array_map(fn ($case) => $case->value, array_filter(
|
||||
TujuanPenjualanKoperasi::cases(), fn ($case) => $case !== TujuanPenjualanKoperasi::BELUM_MENJUAL,
|
||||
)));
|
||||
$rules = [
|
||||
'sumber_pasokan_lainnya' => [$when('sumber_pasokan', [SumberPasokanKoperasi::LAINNYA->value])],
|
||||
'tujuan_penjualan_lainnya' => [$when('tujuan_penjualan', [TujuanPenjualanKoperasi::LAINNYA->value])],
|
||||
'sifat_hubungan_lainnya' => [$when('sifat_hubungan_bisnis', [HubunganPemasokKoperasi::LAINNYA->value])],
|
||||
'cara_menetapkan_harga_lainnya' => [$when('cara_menetapkan_harga_pasar', [PenetapanHargaKoperasi::LAINNYA->value])],
|
||||
'bentuk_penjualan' => [$when('tujuan_penjualan', $buyers)],
|
||||
];
|
||||
foreach (array_keys(self::PERIODS) as $period) {
|
||||
$rules['volume_jual_'.$period] = [$when('tujuan_penjualan', $buyers)];
|
||||
}
|
||||
|
||||
return $rules;
|
||||
}
|
||||
|
||||
public function requiredFields(): array
|
||||
{
|
||||
return ['sumber_pasokan_lainnya', 'tujuan_penjualan_lainnya', 'sifat_hubungan_lainnya', 'cara_menetapkan_harga_lainnya'];
|
||||
}
|
||||
|
||||
protected function arrayFields(): array
|
||||
{
|
||||
return ['bentuk_penjualan'];
|
||||
}
|
||||
|
||||
public function sectionFields(BagianRantaiNilaiKoperasi $section): array
|
||||
{
|
||||
if ($section === BagianRantaiNilaiKoperasi::HARGA) {
|
||||
$fields = ['cara_menetapkan_harga_pasar', 'cara_menetapkan_harga_lainnya'];
|
||||
foreach (BentukProdukKoperasi::cases() as $product) {
|
||||
foreach (array_keys(self::PERIODS) as $period) {
|
||||
$fields[] = 'harga_'.$product->pricePrefix().'_'.$period;
|
||||
}
|
||||
}
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
$fields = [
|
||||
'sumber_pasokan', 'sumber_pasokan_lainnya', 'bentuk_pembelian',
|
||||
'tujuan_penjualan', 'tujuan_penjualan_lainnya', 'bentuk_penjualan',
|
||||
'sifat_hubungan_bisnis', 'sifat_hubungan_lainnya', 'mekanisme_pembayaran', 'status_perjanjian_tertulis',
|
||||
];
|
||||
foreach (array_keys(self::PERIODS) as $period) {
|
||||
$fields[] = 'volume_beli_'.$period;
|
||||
$fields[] = 'volume_jual_'.$period;
|
||||
}
|
||||
|
||||
return $fields;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user