diff --git a/app/Enums/KondisiTanaman.php b/app/Enums/KondisiTanaman.php index a1a8c64..00c44e3 100644 --- a/app/Enums/KondisiTanaman.php +++ b/app/Enums/KondisiTanaman.php @@ -7,5 +7,6 @@ enum KondisiTanaman: string case BAIK = 'baik'; case SEDANG = 'sedang'; case BURUK = 'buruk'; + case SAKIT= 'sakit'; case MATI = 'mati'; } diff --git a/app/Http/Controllers/Web/Produktivitas/AksesPasarController.php b/app/Http/Controllers/Web/Produktivitas/AksesPasarController.php new file mode 100644 index 0000000..14c21a1 --- /dev/null +++ b/app/Http/Controllers/Web/Produktivitas/AksesPasarController.php @@ -0,0 +1,110 @@ +first(); + $hargaJualPanen = HargaJualPanen::where('petani_id', $petaniId)->get(); + + return view('produktivitas.petani.akses-pasar.index', compact('petani', 'aksesPasar', 'hargaJualPanen')); + } + + public function store(Request $request) + { + $request->validate([ + 'petani_id' => 'required|exists:petani,id', + ]); + + DB::beginTransaction(); + + try { + $aksesPasarData = $request->except(['_token', 'harga_jual']); + $aksesPasarData['uid'] = Str::uuid(); + $aksesPasarData['created_by'] = Auth::id(); + + 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(), + ]); + } + } + } + + DB::commit(); + + return redirect()->back()->with('success', 'Data Rantai Nilai dan Akses Pasar berhasil disimpan.'); + + } catch (\Exception $e) { + DB::rollBack(); + return redirect()->back()->withErrors(['error' => 'Gagal menyimpan data: ' . $e->getMessage()])->withInput(); + } + } + + public function update(Request $request, $id) + { + $request->validate([ + 'petani_id' => 'required|exists:petani,id', + ]); + + DB::beginTransaction(); + + try { + $aksesPasar = AksesPasar::findOrFail($id); + $updateData = $request->except(['_token', '_method', 'harga_jual']); + $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(), + ]); + } + } + } + + DB::commit(); + + return redirect()->back()->with('success', 'Data Rantai Nilai dan Akses Pasar berhasil diperbarui.'); + + } catch (\Exception $e) { + DB::rollBack(); + return redirect()->back()->withErrors(['error' => 'Gagal memperbarui data: ' . $e->getMessage()])->withInput(); + } + } +} \ No newline at end of file diff --git a/app/Models/Pertanian/AksesPasar.php b/app/Models/Pertanian/AksesPasar.php new file mode 100644 index 0000000..eedc554 --- /dev/null +++ b/app/Models/Pertanian/AksesPasar.php @@ -0,0 +1,62 @@ + 'array', + ]; + + + public function petani() + { + return $this->belongsTo(Petani::class, 'petani_id'); + } + + public function creator() + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function updater() + { + return $this->belongsTo(User::class, 'updated_by'); + } + + public function deleter() + { + return $this->belongsTo(User::class, 'deleted_by'); + } +} \ No newline at end of file diff --git a/app/Models/Pertanian/HargaJualPanen.php b/app/Models/Pertanian/HargaJualPanen.php new file mode 100644 index 0000000..d74370d --- /dev/null +++ b/app/Models/Pertanian/HargaJualPanen.php @@ -0,0 +1,45 @@ +belongsTo(Petani::class, 'petani_id'); + } + + public function creator() + { + return $this->belongsTo(User::class, 'created_by'); + } + + public function updater() + { + return $this->belongsTo(User::class, 'updated_by'); + } + + public function deleter() + { + return $this->belongsTo(User::class, 'deleted_by'); + } +} \ No newline at end of file diff --git a/resources/views/produktivitas/petani/akses-pasar/index.blade.php b/resources/views/produktivitas/petani/akses-pasar/index.blade.php new file mode 100644 index 0000000..0f3184e --- /dev/null +++ b/resources/views/produktivitas/petani/akses-pasar/index.blade.php @@ -0,0 +1,205 @@ +@extends('layout.main') + +@section('content') +
+ @if (session('success')) +
{{ session('success') }}
+ @endif + + @if ($errors->any()) +
+ +
+ @endif + +
+
+ @include('produktivitas.petani.header', ['petani' => $petani]) + +
+ @csrf + @if($aksesPasar) + @method('PUT') + @endif + + + +
+
+
Pengalaman Saluran Lain
+
+
+ + + @error('skor_pengalaman')
{{ $message }}
@enderror +
+ +
+ + @php($saluran = old('saluran_terdahulu', $aksesPasar?->saluran_terdahulu ?? [])) + + @error('saluran_terdahulu')
{{ $message }}
@enderror +
+ +
+ + + @error('saluran_terdahulu_lainnya')
{{ $message }}
@enderror +
+ +
+ + + @error('alasan_berhenti')
{{ $message }}
@enderror +
+
+ +
HARGA DI SETIAP TITIK
+
Harga Jual Panen Terakhir
+

Harga jual komoditas tiga musim panen terakhir:

+

Dalam tiga musim panen terakhir, berapa harga jual yang Bapak/Ibu terima untuk komoditas ini sesuai dengan bentuk produk yang dijual?

+ +
+ + + + + + + + + + + @php($listBentukProduk = ['Buah segar hasil petik', 'Biji basah', 'Biji kering/Biji Kupas', 'Terfermentasi (Rp/kg)']) + @php($hargaJualPanen = $hargaJualPanen ?? collect()) + + @foreach ($listBentukProduk as $index => $bentuk) + @php($existingData = $hargaJualPanen->firstWhere('bentuk_produk', $bentuk)) + + + + + + + @endforeach + +
Bentuk ProdukPanen Terakhir (Rp/kg)Tahun Lalu (Rp/kg)Dua Tahun Lalu (Rp/kg)
+ + {{ $bentuk }}: + +
+ Rp + + /kg +
+
+
+ Rp + + /kg +
+
+
+ Rp + + /kg +
+
+
+ +
PELUANG NILAI TAMBAH
+
Praktik Fermentasi
+

Apakah sudah ada praktik fermentasi atau pengolahan pascapanen yang Ibu/Bapak lakukan, bagaimana prosesnya dilakukan?

+ +
+
+ + + @error('praktik_fermentasi')
{{ $message }}
@enderror +
+ +
+ + + @error('proses_fermentasi')
{{ $message }}
@enderror +
+ +
+ + + @error('model_fermentasi_memungkinkan')
{{ $message }}
@enderror +
+
+ +
AKSES PASAR PREMIUM
+
Kesadaran Pasar Premium*
+
+
+ + + @error('skor_kesadaran_premium')
{{ $message }}
@enderror +
+ +
+ + + @error('sumber_info_premium')
{{ $message }}
@enderror +
+
+ + + +
+ +
+
+
+
+
+
+
+@endsection + +@push('scripts') + +@endpush \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 9a41f09..87b44f0 100644 --- a/routes/web.php +++ b/routes/web.php @@ -189,11 +189,11 @@ Route::middleware('auth') // Petani Route::resource('petani', App\Http\Controllers\Web\Produktivitas\PetaniController::class); Route::get('petani/show-image/{id}/{field}', [App\Http\Controllers\Web\Produktivitas\PetaniController::class, 'showImage'])->name('petani.show-image'); - Route::resource('sosial-ekonomi', App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class)->except(['create', 'edit']); Route::get('petani/{petani}/akses-pasar', [App\Http\Controllers\Web\Produktivitas\AksesPasarController::class, 'editByPetani'])->name('petani.akses-pasar.edit'); - Route::resource('akses-pasar', App\Http\Controllers\Web\Produktivitas\AksesPasarController::class)->except(['create', 'edit']); Route::resource('petani.lahan-tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanController::class); Route::resource('petani.lahan-tanaman.tanaman', App\Http\Controllers\Web\Produktivitas\PetaniLahanTanamanController::class)->only(['show', 'update', 'destroy']); Route::resource('petani.praktik-budidaya', App\Http\Controllers\Web\Produktivitas\PraktikBudidayaController::class); - Route::resource('petani.sosial-ekonomi', App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class)->only(['index', 'store', 'update']); + Route::resource('petani.sosial-ekonomi', App\Http\Controllers\Web\Produktivitas\SosialEkonomiController::class); + Route::resource('petani.akses-pasar', App\Http\Controllers\Web\Produktivitas\AksesPasarController::class); }); +