bring to final akses pasar
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\AksesPasar;
|
||||
|
||||
enum PraktikFermentasi: string
|
||||
{
|
||||
case RUTIN_SENDIRI = 'Ya, rutin — dilakukan sendiri/individual';
|
||||
case RUTIN_KELOMPOK = 'Ya, rutin — bersama kelompok tani/kolektif';
|
||||
case PERNAH_SENDIRI = 'Pernah mencoba — sendiri';
|
||||
case PERNAH_KELOMPOK = 'Pernah mencoba — bersama kelompok';
|
||||
case BELUM_PERNAH = 'Belum pernah';
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return [
|
||||
['value' => self::RUTIN_SENDIRI->value, 'label' => 'Ya, rutin — dilakukan sendiri/individual'],
|
||||
['value' => self::RUTIN_KELOMPOK->value, 'label' => 'Ya, rutin — bersama kelompok tani/kolektif'],
|
||||
['value' => self::PERNAH_SENDIRI->value, 'label' => 'Pernah mencoba — sendiri'],
|
||||
['value' => self::PERNAH_KELOMPOK->value, 'label' => 'Pernah mencoba — bersama kelompok'],
|
||||
['value' => self::BELUM_PERNAH->value, 'label' => 'Belum pernah'],
|
||||
];
|
||||
}
|
||||
|
||||
public static function values(): array
|
||||
{
|
||||
return array_column(self::cases(), 'value');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\AksesPasar;
|
||||
|
||||
enum SaluranTerdahulu: string
|
||||
{
|
||||
case TENGKULAK = 'Tengkulak–pedagang lokal';
|
||||
case KOPERASI = 'Koperasi';
|
||||
case BUMDES = 'BUMDes';
|
||||
case LANGSUNG_PEMBELI = 'Langsung ke pembeli–eksportir';
|
||||
case LAINNYA = 'Lainnya';
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return [
|
||||
['value' => self::TENGKULAK->value, 'label' => 'Tengkulak–pedagang lokal'],
|
||||
['value' => self::KOPERASI->value, 'label' => 'Koperasi'],
|
||||
['value' => self::BUMDES->value, 'label' => 'BUMDes'],
|
||||
['value' => self::LANGSUNG_PEMBELI->value, 'label' => 'Langsung ke pembeli–eksportir'],
|
||||
['value' => self::LAINNYA->value, 'label' => 'Lainnya'],
|
||||
];
|
||||
}
|
||||
|
||||
public static function values(): array
|
||||
{
|
||||
return array_column(self::cases(), 'value');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\AksesPasar;
|
||||
|
||||
enum SkorKesadaranPremium: int
|
||||
{
|
||||
case BELUM_PERNAH_DENGAR = 1;
|
||||
case PERNAH_BELUM_PAHAM = 2;
|
||||
case PERNAH_SEDIKIT_PAHAM = 3;
|
||||
case SANGAT_PAHAM_BELUM_AKSES = 4;
|
||||
case SUDAH_AKSES_KONSISTEN = 5;
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return [
|
||||
['value' => self::BELUM_PERNAH_DENGAR->value, 'label' => 'Belum pernah dengar'],
|
||||
['value' => self::PERNAH_BELUM_PAHAM->value, 'label' => 'Pernah dengar tapi belum paham syarat'],
|
||||
['value' => self::PERNAH_SEDIKIT_PAHAM->value, 'label' => 'Pernah dengar & sedikit paham syarat'],
|
||||
['value' => self::SANGAT_PAHAM_BELUM_AKSES->value, 'label' => 'Sangat paham syarat tapi belum pernah akses'],
|
||||
['value' => self::SUDAH_AKSES_KONSISTEN->value, 'label' => 'Sudah akses & dapat harga premium konsisten'],
|
||||
];
|
||||
}
|
||||
|
||||
public static function values(): array
|
||||
{
|
||||
return array_column(self::cases(), 'value');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums\AksesPasar;
|
||||
|
||||
enum SkorPengalaman: int
|
||||
{
|
||||
case BELUM_PERNAH = 1;
|
||||
case PERNAH_BERHENTI_TIDAK_ADA_AKSES = 2;
|
||||
case PERNAH_BERHENTI_MUNGKIN_KEMBALI = 3;
|
||||
case PERNAH_SESEKALI_JUAL = 4;
|
||||
case PERNAH_MASIH_AKTIF = 5;
|
||||
|
||||
public static function options(): array
|
||||
{
|
||||
return [
|
||||
['value' => self::BELUM_PERNAH->value, 'label' => 'Belum pernah coba saluran lain'],
|
||||
['value' => self::PERNAH_BERHENTI_TIDAK_ADA_AKSES->value, 'label' => 'Pernah, sudah berhenti & tidak ada akses'],
|
||||
['value' => self::PERNAH_BERHENTI_MUNGKIN_KEMBALI->value, 'label' => 'Pernah, berhenti tapi masih mungkin kembali'],
|
||||
['value' => self::PERNAH_SESEKALI_JUAL->value, 'label' => 'Pernah & sesekali masih jual ke sana'],
|
||||
['value' => self::PERNAH_MASIH_AKTIF->value, 'label' => 'Pernah & masih punya akses aktif'],
|
||||
];
|
||||
}
|
||||
|
||||
public static function values(): array
|
||||
{
|
||||
return array_column(self::cases(), 'value');
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,6 @@ use App\Models\User;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
class AuthController extends Controller
|
||||
|
||||
@@ -7,10 +7,16 @@ use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Validation\Rule;
|
||||
use App\Models\Pertanian\Petani;
|
||||
use App\Models\Pertanian\AksesPasar;
|
||||
use App\Models\Pertanian\HargaJualPanen;
|
||||
|
||||
use App\Enums\AksesPasar\SkorPengalaman;
|
||||
use App\Enums\AksesPasar\SaluranTerdahulu;
|
||||
use App\Enums\AksesPasar\PraktikFermentasi;
|
||||
use App\Enums\AksesPasar\SkorKesadaranPremium;
|
||||
|
||||
class AksesPasarController extends Controller
|
||||
{
|
||||
public function index($petaniId)
|
||||
@@ -20,38 +26,27 @@ class AksesPasarController extends Controller
|
||||
$aksesPasar = AksesPasar::where('petani_id', $petaniId)->first();
|
||||
$hargaJualPanen = HargaJualPanen::where('petani_id', $petaniId)->get();
|
||||
|
||||
return view('produktivitas.petani.akses-pasar.index', compact('petani', 'aksesPasar', 'hargaJualPanen'));
|
||||
return view('produktivitas.petani.akses-pasar.index', array_merge(
|
||||
compact('petani', 'aksesPasar', 'hargaJualPanen'),
|
||||
$this->aksesPasarOptions()
|
||||
));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'petani_id' => 'required|exists:petani,id',
|
||||
]);
|
||||
$validated = $this->validateData($request);
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
try {
|
||||
$aksesPasarData = $request->except(['_token', 'harga_jual']);
|
||||
$aksesPasarData['uid'] = Str::uuid();
|
||||
$aksesPasarData = $this->aksesPasarPayload($validated);
|
||||
$aksesPasarData['uid'] = 'AKP-' . Str::uuid();
|
||||
$aksesPasarData['created_by'] = Auth::id();
|
||||
|
||||
AksesPasar::create($aksesPasarData);
|
||||
$aksesPasar = AksesPasar::create($aksesPasarData);
|
||||
|
||||
if ($request->has('harga_jual')) {
|
||||
foreach ($request->harga_jual as $harga) {
|
||||
if (!empty($harga['bentuk_produk'])) {
|
||||
HargaJualPanen::create([
|
||||
'uid' => Str::uuid(),
|
||||
'petani_id' => $request->petani_id,
|
||||
'bentuk_produk' => $harga['bentuk_produk'],
|
||||
'harga_panen_terakhir' => $harga['harga_panen_terakhir'],
|
||||
'harga_tahun_lalu' => $harga['harga_tahun_lalu'],
|
||||
'harga_dua_tahun_lalu' => $harga['harga_dua_tahun_lalu'],
|
||||
'created_by' => Auth::id(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
$this->syncHargaJual($request->petani_id, $validated['harga_jual'] ?? [], Auth::id());
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
@@ -66,36 +61,20 @@ class AksesPasarController extends Controller
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$request->validate([
|
||||
'petani_id' => 'required|exists:petani,id',
|
||||
]);
|
||||
$validated = $this->validateData($request);
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
try {
|
||||
$aksesPasar = AksesPasar::findOrFail($id);
|
||||
$updateData = $request->except(['_token', '_method', 'harga_jual']);
|
||||
|
||||
$updateData = $this->aksesPasarPayload($validated);
|
||||
$updateData['updated_by'] = Auth::id();
|
||||
|
||||
$aksesPasar->update($updateData);
|
||||
|
||||
HargaJualPanen::where('petani_id', $request->petani_id)->delete();
|
||||
|
||||
if ($request->has('harga_jual')) {
|
||||
foreach ($request->harga_jual as $harga) {
|
||||
if (!empty($harga['bentuk_produk'])) {
|
||||
HargaJualPanen::create([
|
||||
'uid' => Str::uuid(),
|
||||
'petani_id' => $request->petani_id,
|
||||
'bentuk_produk' => $harga['bentuk_produk'],
|
||||
'harga_panen_terakhir' => $harga['harga_panen_terakhir'],
|
||||
'harga_tahun_lalu' => $harga['harga_tahun_lalu'],
|
||||
'harga_dua_tahun_lalu' => $harga['harga_dua_tahun_lalu'],
|
||||
'created_by' => $aksesPasar->created_by,
|
||||
'updated_by' => Auth::id(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
$this->syncHargaJual($request->petani_id, $validated['harga_jual'] ?? [], $aksesPasar->created_by, Auth::id());
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
@@ -107,4 +86,136 @@ class AksesPasarController extends Controller
|
||||
return redirect()->back()->withErrors(['error' => 'Gagal memperbarui data: ' . $e->getMessage()])->withInput();
|
||||
}
|
||||
}
|
||||
|
||||
private function aksesPasarOptions(): array
|
||||
{
|
||||
return [
|
||||
'skorPengalamanOptions' => SkorPengalaman::options(),
|
||||
'saluranTerdahuluOptions' => SaluranTerdahulu::options(),
|
||||
'saluranLainnyaValue' => SaluranTerdahulu::LAINNYA->value,
|
||||
'praktikFermentasiOptions' => PraktikFermentasi::options(),
|
||||
'praktikBelumPernahValue' => PraktikFermentasi::BELUM_PERNAH->value,
|
||||
'skorKesadaranPremiumOptions' => SkorKesadaranPremium::options(),
|
||||
'skorPengalamanBerhentiValues' => [
|
||||
SkorPengalaman::PERNAH_BERHENTI_TIDAK_ADA_AKSES->value,
|
||||
SkorPengalaman::PERNAH_BERHENTI_MUNGKIN_KEMBALI->value
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
private function validateData(Request $request): array
|
||||
{
|
||||
$this->normalizeCurrencyInput($request);
|
||||
|
||||
return $request->validate([
|
||||
'petani_id' => ['required', 'exists:petani,id'],
|
||||
'skor_pengalaman' => ['nullable', 'integer', Rule::in(SkorPengalaman::values())],
|
||||
'alasan_berhenti' => [
|
||||
Rule::requiredIf(fn () => in_array((int)$request->input('skor_pengalaman'), [
|
||||
SkorPengalaman::PERNAH_BERHENTI_TIDAK_ADA_AKSES->value,
|
||||
SkorPengalaman::PERNAH_BERHENTI_MUNGKIN_KEMBALI->value
|
||||
], true)),
|
||||
'nullable', 'string', 'max:255'
|
||||
],
|
||||
|
||||
'saluran_terdahulu' => ['nullable', 'array'],
|
||||
'saluran_terdahulu.*' => ['string', Rule::in(SaluranTerdahulu::values())],
|
||||
'saluran_terdahulu_lainnya' => [
|
||||
Rule::requiredIf(fn () => in_array(SaluranTerdahulu::LAINNYA->value, $request->input('saluran_terdahulu', []), true)),
|
||||
'nullable', 'string', 'max:255'
|
||||
],
|
||||
|
||||
'praktik_fermentasi' => ['nullable', 'string', Rule::in(PraktikFermentasi::values())],
|
||||
'proses_fermentasi' => [
|
||||
Rule::requiredIf(fn () => filled($request->input('praktik_fermentasi')) && $request->input('praktik_fermentasi') !== PraktikFermentasi::BELUM_PERNAH->value),
|
||||
'nullable', 'string'
|
||||
],
|
||||
'model_fermentasi_memungkinkan' => [
|
||||
Rule::requiredIf(fn () => filled($request->input('praktik_fermentasi')) && $request->input('praktik_fermentasi') !== PraktikFermentasi::BELUM_PERNAH->value),
|
||||
'nullable', 'string'
|
||||
],
|
||||
|
||||
'skor_kesadaran_premium' => ['nullable', 'integer', Rule::in(SkorKesadaranPremium::values())],
|
||||
'sumber_info_premium' => ['nullable', 'string', 'max:255'],
|
||||
|
||||
'harga_jual' => ['nullable', 'array'],
|
||||
'harga_jual.*.bentuk_produk' => ['nullable', 'string'],
|
||||
'harga_jual.*.harga_panen_terakhir' => ['nullable', 'numeric', 'min:0'],
|
||||
'harga_jual.*.harga_tahun_lalu' => ['nullable', 'numeric', 'min:0'],
|
||||
'harga_jual.*.harga_dua_tahun_lalu' => ['nullable', 'numeric', 'min:0'],
|
||||
]);
|
||||
}
|
||||
|
||||
private function aksesPasarPayload(array $validated): array
|
||||
{
|
||||
$payload = collect($validated)->except(['harga_jual'])->all();
|
||||
|
||||
if (!in_array((int)($payload['skor_pengalaman'] ?? 0), [
|
||||
SkorPengalaman::PERNAH_BERHENTI_TIDAK_ADA_AKSES->value,
|
||||
SkorPengalaman::PERNAH_BERHENTI_MUNGKIN_KEMBALI->value
|
||||
], true)) {
|
||||
$payload['alasan_berhenti'] = null;
|
||||
}
|
||||
|
||||
if (!in_array(SaluranTerdahulu::LAINNYA->value, $payload['saluran_terdahulu'] ?? [], true)) {
|
||||
$payload['saluran_terdahulu_lainnya'] = null;
|
||||
}
|
||||
|
||||
if (($payload['praktik_fermentasi'] ?? null) === PraktikFermentasi::BELUM_PERNAH->value) {
|
||||
$payload['proses_fermentasi'] = null;
|
||||
$payload['model_fermentasi_memungkinkan'] = null;
|
||||
}
|
||||
|
||||
return $payload;
|
||||
}
|
||||
|
||||
|
||||
private function syncHargaJual($petaniId, array $hargaJualData, $createdBy, $updatedBy = null): void
|
||||
{
|
||||
HargaJualPanen::where('petani_id', $petaniId)->delete();
|
||||
|
||||
foreach ($hargaJualData as $harga) {
|
||||
if (!empty($harga['bentuk_produk'])) {
|
||||
HargaJualPanen::create([
|
||||
'uid' => 'HJP-' . Str::uuid(),
|
||||
'petani_id' => $petaniId,
|
||||
'bentuk_produk' => $harga['bentuk_produk'],
|
||||
'harga_panen_terakhir' => $harga['harga_panen_terakhir'] ?? null,
|
||||
'harga_tahun_lalu' => $harga['harga_tahun_lalu'] ?? null,
|
||||
'harga_dua_tahun_lalu' => $harga['harga_dua_tahun_lalu'] ?? null,
|
||||
'created_by' => $createdBy,
|
||||
'updated_by' => $updatedBy ?? $createdBy,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function normalizeCurrencyInput(Request $request): void
|
||||
{
|
||||
$data = $request->all();
|
||||
|
||||
if (isset($data['harga_jual']) && is_array($data['harga_jual'])) {
|
||||
foreach ($data['harga_jual'] as $index => $item) {
|
||||
if (is_array($item)) {
|
||||
if (array_key_exists('harga_panen_terakhir', $item)) {
|
||||
$data['harga_jual'][$index]['harga_panen_terakhir'] = $this->currencyDigits($item['harga_panen_terakhir']);
|
||||
}
|
||||
if (array_key_exists('harga_tahun_lalu', $item)) {
|
||||
$data['harga_jual'][$index]['harga_tahun_lalu'] = $this->currencyDigits($item['harga_tahun_lalu']);
|
||||
}
|
||||
if (array_key_exists('harga_dua_tahun_lalu', $item)) {
|
||||
$data['harga_jual'][$index]['harga_dua_tahun_lalu'] = $this->currencyDigits($item['harga_dua_tahun_lalu']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$request->merge($data);
|
||||
}
|
||||
|
||||
private function currencyDigits(mixed $value): ?string
|
||||
{
|
||||
if (is_null($value) || $value === '') return null;
|
||||
$digits = preg_replace('/\D/', '', (string) $value);
|
||||
return $digits === '' ? null : $digits;
|
||||
}
|
||||
}
|
||||
@@ -32,17 +32,18 @@
|
||||
<div class="card-body pt-12">
|
||||
<h5 class="pb-3 border-bottom mb-4">Pengalaman Saluran Lain</h5>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6 mb-4 form-control-validation">
|
||||
<label class="form-label" for="skor-pengalaman">Pengalaman & akses ke saluran lain</label>
|
||||
<select class="form-control select2-init @error('skor_pengalaman') is-invalid @enderror" id="skor-pengalaman" name="skor_pengalaman">
|
||||
<option value="">Pilih Skala</option>
|
||||
<option value="1" {{ old('skor_pengalaman', $aksesPasar?->skor_pengalaman) == 1 ? 'selected' : '' }}>Belum pernah coba saluran lain</option>
|
||||
<option value="2" {{ old('skor_pengalaman', $aksesPasar?->skor_pengalaman) == 2 ? 'selected' : '' }}>Pernah, sudah berhenti & tidak ada akses</option>
|
||||
<option value="3" {{ old('skor_pengalaman', $aksesPasar?->skor_pengalaman) == 3 ? 'selected' : '' }}>Pernah, berhenti tapi masih mungkin kembali</option>
|
||||
<option value="4" {{ old('skor_pengalaman', $aksesPasar?->skor_pengalaman) == 4 ? 'selected' : '' }}>Pernah & sesekali masih jual ke sana</option>
|
||||
<option value="5" {{ old('skor_pengalaman', $aksesPasar?->skor_pengalaman) == 5 ? 'selected' : '' }}>Pernah & masih punya akses aktif</option>
|
||||
</select>
|
||||
@error('skor_pengalaman')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
<label class="form-label d-block fw-bold">Pengalaman & akses ke saluran lain</label>
|
||||
@foreach($skorPengalamanOptions as $option)
|
||||
<div class="form-check mb-2">
|
||||
<input class="form-check-input @error('skor_pengalaman') is-invalid @enderror" type="radio"
|
||||
id="skor-pengalaman-{{ $option['value'] }}" name="skor_pengalaman" value="{{ $option['value'] }}"
|
||||
{{ (string) old('skor_pengalaman', $aksesPasar?->skor_pengalaman) === (string) $option['value'] ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="skor-pengalaman-{{ $option['value'] }}">{{ $option['label'] }}</label>
|
||||
</div>
|
||||
@endforeach
|
||||
@error('skor_pengalaman')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
@@ -52,15 +53,21 @@
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4 form-control-validation">
|
||||
<label class="form-label" for="saluran-terdahulu">Dulu pernah jual ke?</label>
|
||||
@php($saluran = old('saluran_terdahulu', $aksesPasar?->saluran_terdahulu ?? []))
|
||||
<select multiple class="form-control select2-init @error('saluran_terdahulu') is-invalid @enderror" id="saluran-terdahulu" name="saluran_terdahulu[]">
|
||||
<option value="Tengkulak–pedagang lokal" {{ in_array('Tengkulak–pedagang lokal', $saluran) ? 'selected' : '' }}>Tengkulak–pedagang lokal</option>
|
||||
<option value="Koperasi" {{ in_array('Koperasi', $saluran) ? 'selected' : '' }}>Koperasi</option>
|
||||
<option value="BUMDes" {{ in_array('BUMDes', $saluran) ? 'selected' : '' }}>BUMDes</option>
|
||||
<option value="Langsung ke pembeli–eksportir" {{ in_array('Langsung ke pembeli–eksportir', $saluran) ? 'selected' : '' }}>Langsung ke pembeli–eksportir</option>
|
||||
</select>
|
||||
@error('saluran_terdahulu')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
<label class="form-label d-block mb-2" for="saluran-terdahulu">Dulu pernah jual ke?</label>
|
||||
@foreach($saluranTerdahuluOptions as $option)
|
||||
<div class="form-check mb-2">
|
||||
<input class="form-check-input @error('saluran_terdahulu') is-invalid @enderror"
|
||||
type="checkbox"
|
||||
id="saluran-terdahulu-{{ Str::slug($option['value']) }}"
|
||||
name="saluran_terdahulu[]"
|
||||
value="{{ $option['value'] }}"
|
||||
{{ in_array($option['value'], (array) old('saluran_terdahulu', $aksesPasar?->saluran_terdahulu ?? []), true) ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="saluran-terdahulu-{{ Str::slug($option['value']) }}">
|
||||
{{ $option['label'] }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
@error('saluran_terdahulu')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
@@ -125,33 +132,37 @@
|
||||
|
||||
<h5 class="pb-3 border-bottom mb-4 mt-4">PELUANG NILAI TAMBAH</h5>
|
||||
|
||||
<div class="border rounded p-4 mb-4" style="background-color: #fbfbfc;">
|
||||
|
||||
<div class="border rounded p-4 mb-4">
|
||||
<div class="mb-4">
|
||||
<h6 class="mb-1 text-primary">Detail Praktik Fermentasi</h6>
|
||||
<p class="text-muted small mb-0">Apakah sudah ada praktik fermentasi atau pengolahan pascapanen yang Ibu/Bapak lakukan?</p>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-9 form-control-validation d-flex flex-column">
|
||||
<div class="mb-2 d-flex align-items-end h-100">
|
||||
<div class="col-md-4 mb-4 form-control-validation d-flex flex-column">
|
||||
<div class="mb-2 d-flex align-items-end">
|
||||
<label class="form-label mb-0" for="praktik-fermentasi">Praktik fermentasi yang dilakukan</label>
|
||||
</div>
|
||||
<div>
|
||||
<select class="form-control select2-init @error('praktik_fermentasi') is-invalid @enderror" id="praktik-fermentasi" name="praktik_fermentasi">
|
||||
<option value="">Pilih</option>
|
||||
<option value="Ya, rutin — dilakukan sendiri/individual" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Ya, rutin — dilakukan sendiri/individual' ? 'selected' : '' }}>Ya, rutin — dilakukan sendiri/individual</option>
|
||||
<option value="Ya, rutin — bersama kelompok tani/kolektif" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Ya, rutin — bersama kelompok tani/kolektif' ? 'selected' : '' }}>Ya, rutin — bersama kelompok tani/kolektif</option>
|
||||
<option value="Pernah mencoba — sendiri" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Pernah mencoba — sendiri' ? 'selected' : '' }}>Pernah mencoba — sendiri</option>
|
||||
<option value="Pernah mencoba — bersama kelompok" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Pernah mencoba — bersama kelompok' ? 'selected' : '' }}>Pernah mencoba — bersama kelompok</option>
|
||||
<option value="Belum pernah" {{ old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) == 'Belum pernah' ? 'selected' : '' }}>Belum pernah</option>
|
||||
</select>
|
||||
@error('praktik_fermentasi')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
@foreach($praktikFermentasiOptions as $option)
|
||||
<div class="form-check mb-2">
|
||||
<input class="form-check-input @error('praktik_fermentasi') is-invalid @enderror"
|
||||
type="radio"
|
||||
id="praktik-fermentasi-{{ Str::slug($option['value']) }}"
|
||||
name="praktik_fermentasi"
|
||||
value="{{ $option['value'] }}"
|
||||
{{ (string) old('praktik_fermentasi', $aksesPasar?->praktik_fermentasi) === (string) $option['value'] ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="praktik-fermentasi-{{ Str::slug($option['value']) }}">
|
||||
{{ $option['label'] }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
@error('praktik_fermentasi')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 mb-4 form-control-validation d-flex flex-column">
|
||||
<div class="mb-2 d-flex align-items-end h-100">
|
||||
<div class="mb-2 d-flex align-items-end">
|
||||
<label class="form-label mb-0" for="proses-fermentasi">Jika ya, bagaimana prosesnya?</label>
|
||||
</div>
|
||||
<div>
|
||||
@@ -161,7 +172,7 @@
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 mb-4 form-control-validation d-flex flex-column">
|
||||
<div class="mb-2 d-flex align-items-end h-100">
|
||||
<div class="mb-2 d-flex align-items-end">
|
||||
<label class="form-label mb-0" for="model-fermentasi">Menurut Bapak/Ibu, apa model yang paling memungkinkan?</label>
|
||||
</div>
|
||||
<div>
|
||||
@@ -176,27 +187,30 @@
|
||||
<h6 class="mb-3">Kesadaran Pasar Premium*</h6>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-4 form-control-validation">
|
||||
<label class="form-label" for="skor-premium">Pengetahuan & akses pasar premium</label>
|
||||
<select class="form-control select2-init @error('skor_kesadaran_premium') is-invalid @enderror" id="skor-premium" name="skor_kesadaran_premium">
|
||||
<option value="">Pilih Skala</option>
|
||||
<option value="1" {{ old('skor_kesadaran_premium', $aksesPasar?->skor_kesadaran_premium) == 1 ? 'selected' : '' }}>Belum pernah dengar</option>
|
||||
<option value="2" {{ old('skor_kesadaran_premium', $aksesPasar?->skor_kesadaran_premium) == 2 ? 'selected' : '' }}>Pernah dengar tapi belum paham syarat</option>
|
||||
<option value="3" {{ old('skor_kesadaran_premium', $aksesPasar?->skor_kesadaran_premium) == 3 ? 'selected' : '' }}>Pernah dengar & sedikit paham syarat</option>
|
||||
<option value="4" {{ old('skor_kesadaran_premium', $aksesPasar?->skor_kesadaran_premium) == 4 ? 'selected' : '' }}>Sangat paham syarat tapi belum pernah akses</option>
|
||||
<option value="5" {{ old('skor_kesadaran_premium', $aksesPasar?->skor_kesadaran_premium) == 5 ? 'selected' : '' }}>Sudah akses & dapat harga premium konsisten</option>
|
||||
</select>
|
||||
@error('skor_kesadaran_premium')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
<label class="form-label d-block mb-2" for="skor-premium">Pengetahuan & akses pasar premium</label>
|
||||
@foreach($skorKesadaranPremiumOptions as $option)
|
||||
<div class="form-check mb-2">
|
||||
<input class="form-check-input @error('skor_kesadaran_premium') is-invalid @enderror"
|
||||
type="radio"
|
||||
id="skor-premium-{{ $option['value'] }}"
|
||||
name="skor_kesadaran_premium"
|
||||
value="{{ $option['value'] }}"
|
||||
{{ (string) old('skor_kesadaran_premium', $aksesPasar?->skor_kesadaran_premium) === (string) $option['value'] ? 'checked' : '' }}>
|
||||
<label class="form-check-label" for="skor-premium-{{ $option['value'] }}">
|
||||
{{ $option['label'] }}
|
||||
</label>
|
||||
</div>
|
||||
@endforeach
|
||||
@error('skor_kesadaran_premium')<div class="invalid-feedback d-block">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-4 form-control-validation">
|
||||
<label class="form-label" for="sumber-info">Sumber informasi utama</label>
|
||||
<label class="form-label mb-2" for="sumber-info">Sumber informasi utama</label>
|
||||
<input type="text" class="form-control @error('sumber_info_premium') is-invalid @enderror" id="sumber-info" name="sumber_info_premium" value="{{ old('sumber_info_premium', $aksesPasar?->sumber_info_premium) }}">
|
||||
@error('sumber_info_premium')<div class="invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="mt-4 text-end">
|
||||
<button type="submit" class="btn btn-success">
|
||||
<i class="icon-base ti tabler-device-floppy me-1_5 icon-sm"></i>Simpan Akses Pasar
|
||||
@@ -214,10 +228,38 @@
|
||||
<script>
|
||||
'use strict';
|
||||
$(document).ready(function () {
|
||||
$('.select2-init').select2({
|
||||
placeholder: "Pilih opsi...",
|
||||
allowClear: true
|
||||
});
|
||||
const saluranLainnyaValue = @json($saluranLainnyaValue);
|
||||
const praktikBelumPernahValue = String(@json($praktikBelumPernahValue));
|
||||
const skorPengalamanBerhentiValues = @json($skorPengalamanBerhentiValues ?? [2,3]).map(Number);
|
||||
|
||||
function syncAlasanBerhenti() {
|
||||
const val = Number($('input[name="skor_pengalaman"]:checked').val());
|
||||
const isBerhenti = skorPengalamanBerhentiValues.includes(val);
|
||||
$('#alasan-berhenti').prop('disabled', !isBerhenti);
|
||||
if (!isBerhenti) $('#alasan-berhenti').val('');
|
||||
}
|
||||
|
||||
function syncSaluranLainnya() {
|
||||
const isLainnya = $('input[name="saluran_terdahulu[]"][value="' + saluranLainnyaValue + '"]').is(':checked');
|
||||
$('#saluran-lainnya').prop('disabled', !isLainnya);
|
||||
if (!isLainnya) $('#saluran-lainnya').val('');
|
||||
}
|
||||
|
||||
function syncPraktikFermentasi() {
|
||||
const isBelumPernah = $('input[name="praktik_fermentasi"]:checked').val() === praktikBelumPernahValue;
|
||||
$('#proses-fermentasi, #model-fermentasi').prop('disabled', isBelumPernah);
|
||||
if (isBelumPernah) {
|
||||
$('#proses-fermentasi, #model-fermentasi').val('');
|
||||
}
|
||||
}
|
||||
|
||||
$('input[name="skor_pengalaman"]').on('change', syncAlasanBerhenti);
|
||||
$('input[name="saluran_terdahulu[]"]').on('change', syncSaluranLainnya);
|
||||
$('input[name="praktik_fermentasi"]').on('change', syncPraktikFermentasi);
|
||||
|
||||
syncAlasanBerhenti();
|
||||
syncSaluranLainnya();
|
||||
syncPraktikFermentasi();
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
Reference in New Issue
Block a user