From d7e2cd7692924bb8865510a86ea6844dde83bb90 Mon Sep 17 00:00:00 2001 From: SyaharaniSalsabilla Date: Mon, 15 Jun 2026 12:05:03 +0700 Subject: [PATCH] update daftar pengguna --- .../Web/Konfigurasi/UserController.php | 66 +++- .../Web/Produktivitas/ProduksiController.php | 138 +++---- app/Models/Map/Panen.php | 5 +- ...6_06_134032_create_panen_tanamen_table.php | 6 +- .../views/konfigurasi/user/add.blade.php | 336 +++++++++++++++--- .../views/konfigurasi/user/index.blade.php | 81 +---- .../produktivitas/produksi/_form.blade.php | 60 ++-- .../produktivitas/produksi/index.blade.php | 31 +- .../produktivitas/produksi/view.blade.php | 20 +- 9 files changed, 471 insertions(+), 272 deletions(-) diff --git a/app/Http/Controllers/Web/Konfigurasi/UserController.php b/app/Http/Controllers/Web/Konfigurasi/UserController.php index 7d79fc1..d9bfc73 100644 --- a/app/Http/Controllers/Web/Konfigurasi/UserController.php +++ b/app/Http/Controllers/Web/Konfigurasi/UserController.php @@ -7,6 +7,7 @@ use Illuminate\Http\Request; use App\Models\User; use App\Models\Profile; use App\Enums\Role; +use App\Models\Wilayah\Provinsi; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; @@ -68,14 +69,28 @@ class UserController extends Controller } } + public function create() + { + $roles = Role::cases(); + $provinsi = Provinsi::orderBy('nama', 'asc')->get(); + + return view('konfigurasi.user.add', compact('roles', 'provinsi')); + } + public function store(Request $request) { $validator = Validator::make($request->all(), [ - 'username' => ['required', 'string', 'max:255', 'unique:users,name'], - 'name' => ['required', 'string', 'max:255'], - 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], - 'password' => ['required', 'string', 'min:8', 'confirmed'], - 'role' => ['required', 'string'], + 'username' => ['required', 'string', 'max:255', 'unique:users,username'], + 'nama' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'], + 'password' => ['required', 'string', 'min:8', 'confirmed'], + 'role' => ['required', 'string'], + 'telepon' => ['required', 'max:13'], + 'desa_kelurahan_id' => ['required'], + 'ktp' => ['nullable', 'min:16', 'max:16'], + 'kk' => ['nullable', 'min:16', 'max:16'], + 'file_ktp' => ['nullable', 'file', 'mimes:jpeg,jpg,png,pdf', 'max:2048'], + 'file_kk' => ['nullable', 'file', 'mimes:jpeg,jpg,pdf,png', 'max:2048'], ], [ 'password.confirmed' => 'Konfirmasi password tidak cocok!', 'password.min' => 'Password minimal 8 karakter!', @@ -84,14 +99,25 @@ class UserController extends Controller ]); if ($validator->fails()) { - return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422); + if ($request->expectsJson()) { + return response()->json(['status' => 'error', 'errors' => $validator->errors()], 422); + } + + return back()->withErrors($validator)->withInput(); } try { DB::transaction(function () use ($request) { + $pathKtp = $request->hasFile('file_ktp') + ? $request->file('file_ktp')->store('uploads/users/ktp', 'public') + : null; + + $pathKk = $request->hasFile('file_kk') + ? $request->file('file_kk')->store('uploads/users/kk', 'public') + : null; $user = User::create([ - 'name' => $request->name, + 'name' => $request->nama, 'username' => $request->username, 'email' => $request->email, 'password' => Hash::make($request->password), @@ -104,18 +130,34 @@ class UserController extends Controller 'user_id' => $user->id, 'user_uid' => $user->uid, 'role' => $request->role, - 'nama' => $request->name, + 'nama' => $request->nama, 'email' => $request->email, + 'telepon' => $request->telepon, + 'alamat' => $request->alamat, + 'kk' => $request->kk, + 'ktp' => $request->ktp, + 'desa_kelurahan_id' => $request->desa_kelurahan_id, + 'path_kk' => $pathKk, + 'path_ktp' => $pathKtp, 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), ]); }); - return response()->json([ - 'status' => 'success', - 'message' => 'User baru berhasil ditambahkan.' - ]); + if ($request->expectsJson()) { + return response()->json([ + 'status' => 'success', + 'message' => 'User baru berhasil ditambahkan.' + ]); + } + + return redirect()->route('users.index')->with('success', 'User baru berhasil ditambahkan.'); } catch (\Exception $e) { + if (!$request->expectsJson()) { + return back()->withInput()->with('error', 'Gagal menyimpan data: ' . $e->getMessage()); + } + return response()->json([ 'status' => 'error', 'message' => 'Gagal menyimpan data: ' . $e->getMessage() diff --git a/app/Http/Controllers/Web/Produktivitas/ProduksiController.php b/app/Http/Controllers/Web/Produktivitas/ProduksiController.php index d7e387b..9b13876 100644 --- a/app/Http/Controllers/Web/Produktivitas/ProduksiController.php +++ b/app/Http/Controllers/Web/Produktivitas/ProduksiController.php @@ -4,38 +4,40 @@ namespace App\Http\Controllers\Web\Produktivitas; use App\Http\Controllers\Controller; use App\Enums\Role; +use App\Models\Map\Lahan; +use App\Models\Map\Panen; +use App\Models\Map\PanenTanaman; use App\Models\Pertanian\Komoditas; -use App\Models\Pertanian\Lahan; -use App\Models\Pertanian\Produksi; use App\Models\Profile; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; +use Illuminate\Support\Str; use Illuminate\Validation\Rule; class ProduksiController extends Controller { public function index(Request $request) { - $query = Produksi::with(['profile', 'lahan', 'komoditas']) + $query = Panen::with(['petani', 'lahan', 'panenTanaman']) + ->orderBy('harvest_date', 'desc') ->orderBy('created_at', 'desc'); if ($request->filled('search')) { $query->where(function ($q) use ($request) { $search = '%' . $request->search . '%'; - $q->where('kode_produksi', 'like', $search) - ->orWhere('periode', 'like', $search) - ->orWhereHas('profile', fn ($profile) => $profile->where('nama', 'like', $search)) + $q->where('title', 'like', $search) + ->orWhere('notes', 'like', $search) + ->orWhereHas('petani', fn ($profile) => $profile->where('nama', 'like', $search)) ->orWhereHas('lahan', fn ($lahan) => $lahan->where('nama', 'like', $search)) - ->orWhereHas('komoditas', fn ($komoditas) => $komoditas->where('nama', 'like', $search)); + ->orWhereHas('panenTanaman', fn ($detail) => $detail->where('commodity_name', 'like', $search)); }); } - if ($request->filled('status_panen')) { - $query->where('status_panen', $request->status_panen); - } - - if ($request->filled('komoditas_id')) { - $query->where('komoditas_id', $request->komoditas_id); + if ($request->filled('komoditas')) { + $query->whereHas('panenTanaman', function ($detail) use ($request) { + $detail->where('commodity_name', $request->komoditas); + }); } $produksi = $query->paginate($request->per_page ?? 10); @@ -57,24 +59,28 @@ class ProduksiController extends Controller return back()->withErrors($validator)->withInput(); } - Produksi::create($this->payload($request) + [ - 'created_by' => auth()->id(), - 'updated_by' => auth()->id(), - ]); + DB::transaction(function () use ($request) { + $panen = Panen::create($this->panenPayload($request) + [ + 'created_by' => auth()->id(), + 'updated_by' => auth()->id(), + ]); + + $this->savePanenDetail($panen, $request); + }); return redirect()->route('produksi.index')->with('success', 'Data hasil panen berhasil ditambahkan.'); } public function show($id) { - $produksi = Produksi::with(['profile', 'lahan', 'komoditas'])->findOrFail($id); + $produksi = Panen::with(['petani', 'lahan', 'panenTanaman'])->findOrFail($id); return view('produktivitas.produksi.view', compact('produksi')); } public function edit($id) { - $produksi = Produksi::findOrFail($id); + $produksi = Panen::with('panenTanaman')->findOrFail($id); return view('produktivitas.produksi.edit', $this->formData() + compact('produksi')); } @@ -87,19 +93,24 @@ class ProduksiController extends Controller return back()->withErrors($validator)->withInput(); } - $produksi = Produksi::findOrFail($id); - $produksi->update($this->payload($request) + [ - 'updated_by' => auth()->id(), - ]); + DB::transaction(function () use ($request, $id) { + $panen = Panen::findOrFail($id); + $panen->update($this->panenPayload($request) + [ + 'updated_by' => auth()->id(), + ]); + + $this->savePanenDetail($panen, $request); + }); return redirect()->route('produksi.index')->with('success', 'Data hasil panen berhasil diperbarui.'); } public function destroy($id) { - $produksi = Produksi::findOrFail($id); - $produksi->update(['deleted_by' => auth()->id()]); - $produksi->delete(); + $panen = Panen::findOrFail($id); + $panen->panenTanaman()->delete(); + $panen->update(['deleted_by' => auth()->id()]); + $panen->delete(); return response()->json(['status' => 'success', 'message' => 'Data hasil panen berhasil dihapus.']); } @@ -108,9 +119,7 @@ class ProduksiController extends Controller { return [ 'profiles' => Profile::where('role', Role::PETANI->value)->orderBy('nama')->get(), - 'lahan' => Lahan::whereHas('profile', function ($query) { - $query->where('role', Role::PETANI->value); - })->orderBy('nama')->get(), + 'lahan' => Lahan::whereNotNull('profile_id')->orderBy('nama')->get(), 'komoditas' => Komoditas::orderBy('nama')->get(), ]; } @@ -118,47 +127,56 @@ class ProduksiController extends Controller private function validator(Request $request) { return Validator::make($request->all(), [ - 'kode_produksi' => ['nullable', 'string', 'max:255'], - 'profile_id' => [ + 'farmer_id' => [ 'required', Rule::exists('profiles', 'id')->where('role', Role::PETANI->value), ], - 'lahan_id' => [ + 'land_id' => [ 'required', - Rule::exists('map_lahan', 'id')->where('profile_id', $request->profile_id), + Rule::exists('map_lahan', 'id')->where('profile_id', $request->farmer_id), ], - 'komoditas_id' => ['required', 'exists:master_komoditas,id'], - 'periode' => ['nullable', 'string', 'max:255'], - 'tanggal_panen' => ['required', 'date'], - 'luas_tanam' => ['nullable', 'numeric', 'min:0'], - 'luas_panen' => ['nullable', 'numeric', 'min:0'], - 'jumlah_panen' => ['required', 'numeric', 'min:0'], - 'satuan' => ['required', 'string', 'max:20'], - 'status_panen' => ['nullable', 'in:panen_sebagian,selesai'], - 'catatan' => ['nullable', 'string'], + 'commodity_name' => ['required', 'string', 'max:255'], + 'harvest_date' => ['required', 'date'], + 'weight_kg' => ['required', 'numeric', 'min:0'], + 'satuan' => ['required', 'in:kg,kuintal,ton'], + 'land_description' => ['nullable', 'string'], + 'notes' => ['nullable', 'string'], ]); } - private function payload(Request $request): array + private function panenPayload(Request $request): array { - $luasPanen = (float) $request->luas_panen; - $jumlahPanen = (float) $request->jumlah_panen; - return [ - 'kode_produksi' => $request->kode_produksi, - 'profile_id' => $request->profile_id, - 'lahan_id' => $request->lahan_id, - 'tanaman_id' => null, - 'komoditas_id' => $request->komoditas_id, - 'periode' => $request->periode, - 'tanggal_panen' => $request->tanggal_panen, - 'luas_tanam' => $request->luas_tanam, - 'luas_panen' => $request->luas_panen, - 'jumlah_panen' => $request->jumlah_panen, - 'satuan' => $request->satuan, - 'produktivitas' => $luasPanen > 0 ? round($jumlahPanen / $luasPanen, 2) : null, - 'status_panen' => $request->status_panen ?? 'selesai', - 'catatan' => $request->catatan, + 'uid' => $request->uid ?: 'PN-' . Str::uuid(), + 'title' => $request->title ?: 'Panen ' . $request->commodity_name, + 'land_id' => $request->land_id, + 'farmer_id' => $request->farmer_id, + 'land_description' => $request->land_description, + 'harvest_date' => $request->harvest_date, + 'notes' => $request->notes, + 'sync_status' => 'synced', ]; } + + private function savePanenDetail(Panen $panen, Request $request): void + { + $detail = $panen->panenTanaman()->first() ?: new PanenTanaman(['panen_id' => $panen->id]); + $detail->fill([ + 'panen_id' => $panen->id, + 'tanaman_id' => null, + 'commodity_name' => $request->commodity_name, + 'weight_kg' => $this->toKilograms((float) $request->weight_kg, $request->satuan), + 'sync_status' => 'synced', + ]); + $detail->save(); + } + + private function toKilograms(float $value, string $unit): float + { + return match ($unit) { + 'ton' => $value * 1000, + 'kuintal' => $value * 100, + default => $value, + }; + } } diff --git a/app/Models/Map/Panen.php b/app/Models/Map/Panen.php index 47386c3..8061b2a 100644 --- a/app/Models/Map/Panen.php +++ b/app/Models/Map/Panen.php @@ -29,6 +29,9 @@ class Panen extends Model 'harvest_date', 'notes', 'sync_status', + 'created_by', + 'updated_by', + 'deleted_by', ]; protected $casts = [ @@ -65,4 +68,4 @@ class Panen extends Model { return $this->hasMany(PanenTanaman::class, 'panen_id', 'id'); } -} \ No newline at end of file +} diff --git a/database/migrations/2026_06_06_134032_create_panen_tanamen_table.php b/database/migrations/2026_06_06_134032_create_panen_tanamen_table.php index 9ab2c9a..e55dfdd 100644 --- a/database/migrations/2026_06_06_134032_create_panen_tanamen_table.php +++ b/database/migrations/2026_06_06_134032_create_panen_tanamen_table.php @@ -15,10 +15,10 @@ return new class extends Migration $bluePrint->id(); $bluePrint->foreignId('panen_id') - ->constrained('panen') + ->constrained('map_panen') ->onDelete('cascade'); - $bluePrint->unsignedBigInteger('tanaman_id'); + $bluePrint->unsignedBigInteger('tanaman_id')->nullable(); $bluePrint->string('commodity_name'); $bluePrint->string('sync_status', 50)->nullable()->default('synced'); $bluePrint->decimal('weight_kg', 10, 2); // Menggunakan decimal agar mendukung angka pecahan (misal: 10.5 kg) @@ -33,6 +33,6 @@ return new class extends Migration */ public function down(): void { - Schema::dropIfExists('panen_tanamen'); + Schema::dropIfExists('panen_tanaman'); } }; diff --git a/resources/views/konfigurasi/user/add.blade.php b/resources/views/konfigurasi/user/add.blade.php index 640a69c..52ddf16 100644 --- a/resources/views/konfigurasi/user/add.blade.php +++ b/resources/views/konfigurasi/user/add.blade.php @@ -1,56 +1,286 @@ -
-
-
Tambah User Baru
- -
-
-
- @csrf -
- - -
-
- - -
-
- - -
-
- - -
-
- -
- - - - +@extends('layout.main') + +@section('content') +
+
+
+
Tambah User Baru
+ + Kembali + +
+ +
+ @if(session('error')) + -
- -
- -
- - - - + @endif + + + @csrf + +
Informasi Akun
+
+
+ + + @error('nama')
{{ $message }}
@enderror +
+
+ + + @error('email')
{{ $message }}
@enderror +
-
- -
- - -
- + +
+
+ + + @error('username')
{{ $message }}
@enderror +
+
+ + + @error('role')
{{ $message }}
@enderror +
+
+ +
+
+ + + @error('telepon')
{{ $message }}
@enderror +
+
+ +
+
+ +
+ + +
+ @error('password')
{{ $message }}
@enderror +
+
+ +
+ + +
+
+
+ +
+
Lokasi & Alamat
+ +
+
+ + +
+ +
+ + +
+
+ +
+
+ + +
+ +
+ + + @error('desa_kelurahan_id')
{{ $message }}
@enderror +
+
+ +
+ + +
+ +
+
Dokumen Pribadi
+ +
+
+ + + @error('ktp')
{{ $message }}
@enderror +
+
+ + + @error('kk')
{{ $message }}
@enderror +
+
+ +
+
+ + + @error('file_ktp')
{{ $message }}
@enderror +
+ Preview KTP +
Dokumen PDF (Baru Terpilih)
+
+
+ +
+ + + @error('file_kk')
{{ $message }}
@enderror +
+ Preview KK +
Dokumen PDF (Baru Terpilih)
+
+
+
+ +
+ Batal + +
+ +
-
\ No newline at end of file +
+@endsection + +@push('scripts') + +@endpush diff --git a/resources/views/konfigurasi/user/index.blade.php b/resources/views/konfigurasi/user/index.blade.php index ab8f031..b0db380 100644 --- a/resources/views/konfigurasi/user/index.blade.php +++ b/resources/views/konfigurasi/user/index.blade.php @@ -85,9 +85,9 @@
Daftar Pengguna
- + + Tambah User Baru +
@@ -204,7 +204,6 @@ {{ $users->appends(request()->query())->links('pagination::bootstrap-5') }}
- @include('konfigurasi.user.add') @include('konfigurasi.user.edit')
@endsection @@ -369,77 +368,5 @@ }); }); }); - - document.addEventListener("DOMContentLoaded", function() { - - function togglePassword(element) { - const input = element.parentElement.querySelector('input'); - const icon = element.querySelector('i'); - if (input.type === 'password') { - input.type = 'text'; - icon.className = 'ti ti-eye tabler-eye'; - } else { - input.type = 'password'; - icon.className = 'ti ti-eye-off tabler-eye-off'; - } - } - - const formAddUser = document.getElementById('formAddUser'); - const offcanvasElement = document.getElementById('offcanvasAddUser'); - - if (formAddUser && offcanvasElement) { - - formAddUser.addEventListener('submit', function(e) { - e.preventDefault(); - - let formData = new FormData(this); - let submitBtn = this.querySelector('button[type="submit"]'); - - submitBtn.disabled = true; - let originalText = submitBtn.innerHTML; - submitBtn.innerHTML = 'Menyimpan...'; - - fetch(this.action, { - method: 'POST', - body: formData, - headers: { - 'X-Requested-With': 'XMLHttpRequest', - 'Accept': 'application/json' - } - }) - .then(response => response.json()) - .then(data => { - submitBtn.disabled = false; - submitBtn.innerHTML = originalText; - - if (data.status === 'success') { - let bsOffcanvas = bootstrap.Offcanvas.getInstance(offcanvasElement) || new bootstrap.Offcanvas(offcanvasElement); - bsOffcanvas.hide(); - - Swal.fire({ - icon: 'success', - title: 'Berhasil!', - text: data.message, - showConfirmButton: false, - timer: 1500 - }).then(() => { - window.location.reload(); - }); - } else { - let errorMsg = data.message || 'Terjadi kesalahan.'; - if (data.errors) { - errorMsg = Object.values(data.errors).map(err => err.join(', ')).join('
'); - } - Swal.fire({ icon: 'error', title: 'Gagal!', html: errorMsg }); - } - }) - .catch(error => { - submitBtn.disabled = false; - submitBtn.innerHTML = originalText; - Swal.fire({ icon: 'error', title: 'Error', text: 'Koneksi bermasalah atau terjadi kesalahan server.' }); - }); - }); - } - }); -@endpush \ No newline at end of file +@endpush diff --git a/resources/views/produktivitas/produksi/_form.blade.php b/resources/views/produktivitas/produksi/_form.blade.php index a99ad6e..742fb7b 100644 --- a/resources/views/produktivitas/produksi/_form.blade.php +++ b/resources/views/produktivitas/produksi/_form.blade.php @@ -4,43 +4,47 @@ @method('PUT') @endif +@php + $detailPanen = isset($produksi) ? $produksi->panenTanaman->first() : null; +@endphp +
- @foreach($profiles as $profile) - + @endforeach - @error('profile_id')
{{ $message }}
@enderror + @error('farmer_id')
{{ $message }}
@enderror
- - @error('lahan_id')
{{ $message }}
@enderror + @error('land_id')
{{ $message }}
@enderror
- @foreach($komoditas as $item) - + @endforeach - @error('komoditas_id')
{{ $message }}
@enderror + @error('commodity_name')
{{ $message }}
@enderror
- - @error('tanggal_panen')
{{ $message }}
@enderror + + @error('harvest_date')
{{ $message }}
@enderror
- - @error('jumlah_panen')
{{ $message }}
@enderror + + @error('weight_kg')
{{ $message }}
@enderror
@@ -52,33 +56,19 @@ @error('satuan')
{{ $message }}
@enderror
- - - @error('luas_tanam')
{{ $message }}
@enderror + + + @error('title')
{{ $message }}
@enderror
- - - @error('luas_panen')
{{ $message }}
@enderror -
-
- - - @error('status_panen')
{{ $message }}
@enderror -
-
- - - @error('periode')
{{ $message }}
@enderror + + + @error('land_description')
{{ $message }}
@enderror
- - @error('catatan')
{{ $message }}
@enderror + + @error('notes')
{{ $message }}
@enderror
@@ -101,7 +91,7 @@ document.addEventListener('DOMContentLoaded', function () { const profileSelect = document.getElementById('profile_id'); const lahanSelect = document.getElementById('lahan_id'); - const selectedLahanId = "{{ old('lahan_id', $produksi->lahan_id ?? '') }}"; + const selectedLahanId = "{{ old('land_id', $produksi->land_id ?? '') }}"; const lahanOptions = @json($lahanOptions); function renderLahanOptions() { diff --git a/resources/views/produktivitas/produksi/index.blade.php b/resources/views/produktivitas/produksi/index.blade.php index 07e03ba..fa7bbf9 100644 --- a/resources/views/produktivitas/produksi/index.blade.php +++ b/resources/views/produktivitas/produksi/index.blade.php @@ -26,17 +26,12 @@
- @foreach($komoditas as $item) - + @endforeach -
@@ -55,35 +50,31 @@ Lahan Tanggal Panen Hasil Panen - Produktivitas - Status + Judul Actions @forelse($produksi as $index => $item) + @php($detailPanen = $item->panenTanaman->first()) {{ $produksi->firstItem() + $index }} - {{ $item->komoditas->nama ?? '-' }} - {{ $item->profile->nama ?? '-' }} + {{ $detailPanen->commodity_name ?? '-' }} + {{ $item->petani->nama ?? '-' }} {{ $item->lahan->nama ?? '-' }} - {{ $item->tanggal_panen ? $item->tanggal_panen->format('d-m-Y') : '-' }} - {{ $item->jumlah_panen ?? '-' }} {{ $item->jumlah_panen ? $item->satuan : '' }} - {{ $item->produktivitas ? $item->produktivitas . ' ' . $item->satuan . '/ha' : '-' }} - - @php($statusClass = ['panen_sebagian' => 'warning', 'selesai' => 'success'][$item->status_panen] ?? 'secondary') - {{ ucwords(str_replace('_', ' ', $item->status_panen)) }} - + {{ $item->harvest_date ? $item->harvest_date->format('d-m-Y') : '-' }} + {{ $detailPanen ? $detailPanen->weight_kg . ' kg' : '-' }} + {{ $item->title ?? '-' }}
- +
@empty - Tidak ada data hasil panen ditemukan. + Tidak ada data hasil panen ditemukan. @endforelse diff --git a/resources/views/produktivitas/produksi/view.blade.php b/resources/views/produktivitas/produksi/view.blade.php index 8a19e44..3bb8075 100644 --- a/resources/views/produktivitas/produksi/view.blade.php +++ b/resources/views/produktivitas/produksi/view.blade.php @@ -9,18 +9,16 @@
+ @php($detailPanen = $produksi->panenTanaman->first()) @foreach([ - 'Komoditas' => $produksi->komoditas->nama ?? '-', - 'Petani' => $produksi->profile->nama ?? '-', + 'Judul Panen' => $produksi->title, + 'Komoditas' => $detailPanen->commodity_name ?? '-', + 'Petani' => $produksi->petani->nama ?? '-', 'Lahan' => $produksi->lahan->nama ?? '-', - 'Tanggal Panen' => $produksi->tanggal_panen ? $produksi->tanggal_panen->format('d-m-Y') : '-', - 'Jumlah Hasil Panen' => $produksi->jumlah_panen ? $produksi->jumlah_panen . ' ' . $produksi->satuan : '-', - 'Satuan Panen' => $produksi->satuan, - 'Luas Tanam' => $produksi->luas_tanam ? $produksi->luas_tanam . ' ha' : '-', - 'Luas Panen' => $produksi->luas_panen ? $produksi->luas_panen . ' ha' : '-', - 'Produktivitas' => $produksi->produktivitas ? $produksi->produktivitas . ' ' . $produksi->satuan . '/ha' : '-', - 'Status Panen' => ucwords(str_replace('_', ' ', $produksi->status_panen)), - 'Periode Panen' => $produksi->periode, + 'Tanggal Panen' => $produksi->harvest_date ? $produksi->harvest_date->format('d-m-Y') : '-', + 'Jumlah Hasil Panen' => $detailPanen ? $detailPanen->weight_kg . ' kg' : '-', + 'Kondisi Lahan Saat Panen' => $produksi->land_description, + 'Status Sinkronisasi' => $produksi->sync_status, ] as $label => $value)
@@ -29,7 +27,7 @@ @endforeach
-
{{ $produksi->catatan ?? '-' }}
+
{{ $produksi->notes ?? '-' }}