update profil petani
This commit is contained in:
@@ -44,12 +44,23 @@ class PetaniController extends Controller
|
|||||||
->orderBy('nama')
|
->orderBy('nama')
|
||||||
->first();
|
->first();
|
||||||
$selectedKabupatenId = $request->query('kabupaten_kota_id', $defaultKabupaten?->id);
|
$selectedKabupatenId = $request->query('kabupaten_kota_id', $defaultKabupaten?->id);
|
||||||
|
$allowedSorts = ['nama_asc', 'nama_desc', 'luas_lahan_desc', 'luas_lahan_asc'];
|
||||||
|
$requestedSort = $request->query('sort_by')
|
||||||
|
?? match ($request->query('sort_nama')) {
|
||||||
|
'asc' => 'nama_asc',
|
||||||
|
'desc' => 'nama_desc',
|
||||||
|
default => null,
|
||||||
|
};
|
||||||
|
|
||||||
$filters = [
|
$filters = [
|
||||||
'search' => $request->query('search'),
|
'search' => $request->query('search'),
|
||||||
'komoditas_id' => $request->query('komoditas_id'),
|
'komoditas_id' => $request->query('komoditas_id'),
|
||||||
'kabupaten_kota_id' => $selectedKabupatenId,
|
'kabupaten_kota_id' => $selectedKabupatenId,
|
||||||
'kecamatan_id' => $request->query('kecamatan_id'),
|
'kecamatan_id' => $request->query('kecamatan_id'),
|
||||||
'desa_kelurahan_id' => $request->query('desa_kelurahan_id'),
|
'desa_kelurahan_id' => $request->query('desa_kelurahan_id'),
|
||||||
|
'sort_by' => in_array($requestedSort, $allowedSorts, true)
|
||||||
|
? $requestedSort
|
||||||
|
: null,
|
||||||
];
|
];
|
||||||
|
|
||||||
$query = Petani::with([
|
$query = Petani::with([
|
||||||
@@ -61,7 +72,7 @@ class PetaniController extends Controller
|
|||||||
'skor:id,petani_id,skor_kesiapan_adopsi',
|
'skor:id,petani_id,skor_kesiapan_adopsi',
|
||||||
'creator:id,name,role',
|
'creator:id,name,role',
|
||||||
])
|
])
|
||||||
->orderBy('created_at', 'desc');
|
->withSum('lahans as total_luas_lahan', 'luas_lahan');
|
||||||
|
|
||||||
$search = $request->filled('search') ? Str::lower($request->search) : null;
|
$search = $request->filled('search') ? Str::lower($request->search) : null;
|
||||||
if ($search) {
|
if ($search) {
|
||||||
@@ -95,6 +106,26 @@ class PetaniController extends Controller
|
|||||||
$query->where('created_by', auth()->user()->id);
|
$query->where('created_by', auth()->user()->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$totalPetani = (clone $query)->count();
|
||||||
|
$totalPetaniLakiLaki = (clone $query)->where('jenis_kelamin', 1)->count();
|
||||||
|
$totalPetaniPerempuan = (clone $query)->where('jenis_kelamin', 0)->count();
|
||||||
|
|
||||||
|
match ($filters['sort_by']) {
|
||||||
|
'nama_asc' => $query->orderBy('nama', 'asc')->orderBy('created_at', 'desc'),
|
||||||
|
'nama_desc' => $query->orderBy('nama', 'desc')->orderBy('created_at', 'desc'),
|
||||||
|
'luas_lahan_desc' => $query->orderByDesc(
|
||||||
|
Lahan::selectRaw('COALESCE(SUM(luas_lahan), 0)')
|
||||||
|
->whereColumn('map_lahan.petani_id', 'petani.id')
|
||||||
|
->whereNull('map_lahan.deleted_at')
|
||||||
|
)->orderBy('created_at', 'desc'),
|
||||||
|
'luas_lahan_asc' => $query->orderBy(
|
||||||
|
Lahan::selectRaw('COALESCE(SUM(luas_lahan), 0)')
|
||||||
|
->whereColumn('map_lahan.petani_id', 'petani.id')
|
||||||
|
->whereNull('map_lahan.deleted_at')
|
||||||
|
)->orderBy('created_at', 'desc'),
|
||||||
|
default => $query->orderBy('created_at', 'desc'),
|
||||||
|
};
|
||||||
|
|
||||||
$summaryPetaniIds = (clone $query)->pluck('id');
|
$summaryPetaniIds = (clone $query)->pluck('id');
|
||||||
$petani = $query->paginate($request->per_page ?? 10);
|
$petani = $query->paginate($request->per_page ?? 10);
|
||||||
|
|
||||||
@@ -176,6 +207,9 @@ class PetaniController extends Controller
|
|||||||
'totalLahan',
|
'totalLahan',
|
||||||
'totalLuasLahan',
|
'totalLuasLahan',
|
||||||
'totalTanaman',
|
'totalTanaman',
|
||||||
|
'totalPetani',
|
||||||
|
'totalPetaniLakiLaki',
|
||||||
|
'totalPetaniPerempuan',
|
||||||
'showFasilitatorColumn'
|
'showFasilitatorColumn'
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,8 +88,8 @@
|
|||||||
<div class="w-25">
|
<div class="w-25">
|
||||||
<x-summary-card
|
<x-summary-card
|
||||||
title="Petani"
|
title="Petani"
|
||||||
count="{{ $petani->count() }}"
|
count="{{ number_format($totalPetani ?? 0, 0, ',', '.') }}"
|
||||||
subtitle="{{ $petani->where('jenis_kelamin', 1)->count() }} Laki-laki, {{ $petani->where('jenis_kelamin', 0)->count() }} Perempuan"
|
subtitle="{{ number_format($totalPetaniLakiLaki ?? 0, 0, ',', '.') }} Laki-laki, {{ number_format($totalPetaniPerempuan ?? 0, 0, ',', '.') }} Perempuan"
|
||||||
icon="user-check"
|
icon="user-check"
|
||||||
color="primary"
|
color="primary"
|
||||||
/>
|
/>
|
||||||
@@ -208,6 +208,22 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="filter-item">
|
||||||
|
<select
|
||||||
|
name="sort_by"
|
||||||
|
id="filter-sort-by"
|
||||||
|
class="form-select form-select-sm indicator-filter-select"
|
||||||
|
data-filter-key="sort_by"
|
||||||
|
aria-label="Urutkan data petani"
|
||||||
|
>
|
||||||
|
<option value="">Urut Terbaru</option>
|
||||||
|
<option value="nama_asc" @selected($filters['sort_by'] === 'nama_asc')>Nama A-Z</option>
|
||||||
|
<option value="nama_desc" @selected($filters['sort_by'] === 'nama_desc')>Nama Z-A</option>
|
||||||
|
<option value="luas_lahan_desc" @selected($filters['sort_by'] === 'luas_lahan_desc')>Luas Lahan Terbesar</option>
|
||||||
|
<option value="luas_lahan_asc" @selected($filters['sort_by'] === 'luas_lahan_asc')>Luas Lahan Terkecil</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="filter-item">
|
<div class="filter-item">
|
||||||
<div class="input-group input-group-sm">
|
<div class="input-group input-group-sm">
|
||||||
<input
|
<input
|
||||||
@@ -261,6 +277,7 @@
|
|||||||
<input type="hidden" name="kecamatan_id" value="{{ $filters['kecamatan_id'] }}">
|
<input type="hidden" name="kecamatan_id" value="{{ $filters['kecamatan_id'] }}">
|
||||||
<input type="hidden" name="desa_kelurahan_id" value="{{ $filters['desa_kelurahan_id'] }}">
|
<input type="hidden" name="desa_kelurahan_id" value="{{ $filters['desa_kelurahan_id'] }}">
|
||||||
<input type="hidden" name="search" value="{{ $filters['search'] }}">
|
<input type="hidden" name="search" value="{{ $filters['search'] }}">
|
||||||
|
<input type="hidden" name="sort_by" value="{{ $filters['sort_by'] }}">
|
||||||
|
|
||||||
<div class="col-md-auto">
|
<div class="col-md-auto">
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
@@ -286,10 +303,9 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th>No</th>
|
<th>No</th>
|
||||||
<th>Nama</th>
|
<th>Nama</th>
|
||||||
<th>Jenis Kelamin</th>
|
|
||||||
<th>Usia</th>
|
|
||||||
<th>Desa/Kelurahan</th>
|
<th>Desa/Kelurahan</th>
|
||||||
<th>Komoditas Utama</th>
|
<th>Komoditas Utama</th>
|
||||||
|
<th>Luas Lahan</th>
|
||||||
@if($showFasilitatorColumn)
|
@if($showFasilitatorColumn)
|
||||||
<th>Fasilitator</th>
|
<th>Fasilitator</th>
|
||||||
@endif
|
@endif
|
||||||
@@ -301,11 +317,22 @@
|
|||||||
@forelse($petani as $index => $item)
|
@forelse($petani as $index => $item)
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ $loop->iteration }}</td>
|
<td>{{ $loop->iteration }}</td>
|
||||||
<td><span class="text-heading">{{ $item->nama }}</span></td>
|
<td>
|
||||||
<td><span class="text-muted">{{ $item->jenis_kelamin ? 'Laki-laki' : 'Perempuan' }}</span></td>
|
<span class="text-heading d-block">{{ $item->nama }}</span>
|
||||||
<td><span class="text-muted">{{ $item->umur }} tahun</span></td>
|
<small class="text-muted">
|
||||||
|
{{ $item->jenis_kelamin ? 'Laki-laki' : 'Perempuan' }}
|
||||||
|
@if(! is_null($item->umur))
|
||||||
|
, {{ $item->umur }} tahun
|
||||||
|
@endif
|
||||||
|
</small>
|
||||||
|
</td>
|
||||||
<td><span class="text-muted">{{ $item->desaKelurahan?->nama }}, {{ $item->desaKelurahan?->kecamatan?->nama }}, {{ $item->desaKelurahan?->kecamatan?->kabupatenKota?->nama }}, {{ $item->desaKelurahan?->kecamatan?->kabupatenKota?->provinsi?->nama }}</span></td>
|
<td><span class="text-muted">{{ $item->desaKelurahan?->nama }}, {{ $item->desaKelurahan?->kecamatan?->nama }}, {{ $item->desaKelurahan?->kecamatan?->kabupatenKota?->nama }}, {{ $item->desaKelurahan?->kecamatan?->kabupatenKota?->provinsi?->nama }}</span></td>
|
||||||
<td>{{ $item->komoditas?->nama }}</td>
|
<td>{{ $item->komoditas?->nama }}</td>
|
||||||
|
<td>
|
||||||
|
<span class="text-muted">
|
||||||
|
{{ number_format((float) ($item->total_luas_lahan ?? 0), 2, ',', '.') }} ha
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
@if($showFasilitatorColumn)
|
@if($showFasilitatorColumn)
|
||||||
<td><span class="text-muted">{{ $item->creator?->name ?? '-' }}</span></td>
|
<td><span class="text-muted">{{ $item->creator?->name ?? '-' }}</span></td>
|
||||||
@endif
|
@endif
|
||||||
|
|||||||
Reference in New Issue
Block a user