Skip to content

Commit 1322f3f

Browse files
authored
tambah halaman pengguna kelola desa lengkap (#508)
2 parents e944043 + 5742a01 commit 1322f3f

File tree

8 files changed

+113
-62
lines changed

8 files changed

+113
-62
lines changed

app/Http/Controllers/DashboardController.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,8 +271,14 @@ public function datatablePenggunaPbb(Request $request)
271271

272272
public function datatablePenggunaKeloladesa(Request $request)
273273
{
274+
$fillters = [
275+
'kode_provinsi' => $request->kode_provinsi,
276+
'kode_kabupaten' => $request->kode_kabupaten,
277+
'kode_kecamatan' => $request->kode_kecamatan,
278+
];
279+
274280
if ($request->ajax()) {
275-
$desa = TrackKeloladesa::leftJoin('kode_wilayah', 'track_keloladesa.kode_desa', '=', 'kode_wilayah.kode_desa')
281+
$desa = TrackKeloladesa::filter($fillters)->leftJoin('kode_wilayah', 'track_keloladesa.kode_desa', '=', 'kode_wilayah.kode_desa')
276282
->orderBy('track_keloladesa.created_at', 'desc')
277283
->get()
278284
->map(function ($item) {

app/Http/Controllers/KelolaDesaDashboardController.php

Lines changed: 45 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,22 @@ public function index(Request $request)
2626
'total_desa' => format_angka(Desa::count()),
2727
'pengguna_layanan_desa' => TrackKeloladesa::distinct('kode_desa')->count(),
2828
'versi_terakhir' => $versiTerakhir,
29-
'info_rilis' => 'Rilis KelolaDesa '.$versiTerakhir,
29+
'info_rilis' => 'Rilis KelolaDesa ' . $versiTerakhir,
3030
'total_versi' => TrackKeloladesa::distinct('versi')->count(),
3131
'pengguna_versi_terakhir' => TrackKeloladesa::where('versi', $versiTerakhir)->count(),
3232
'installHariIni' => $installHariIni,
3333
]);
3434
}
3535

36-
public function detail()
36+
public function detail(Request $request)
3737
{
38-
return view('website.keloladesa.detail');
38+
$fillters = [
39+
'kode_provinsi' => $request->kode_provinsi,
40+
'kode_kabupaten' => $request->kode_kabupaten,
41+
'kode_kecamatan' => $request->kode_kecamatan,
42+
];
43+
44+
return view('website.keloladesa.detail', compact('fillters'));
3945
}
4046

4147
public function versi(Request $request)
@@ -66,7 +72,7 @@ public function versi_detail(Request $request)
6672
if ($request->ajax()) {
6773
$versi = $request->versi;
6874

69-
return DataTables::of(TrackKeloladesa::filter($fillters)->when($versi, static fn ($q) => $q->where('versi', $versi))->with(['desa'])->groupBy(['versi', 'kode_desa'])->selectRaw('kode_desa, versi, count(*) as jumlah'))
75+
return DataTables::of(TrackKeloladesa::filter($fillters)->when($versi, static fn($q) => $q->where('versi', $versi))->with(['desa'])->groupBy(['versi', 'kode_desa'])->selectRaw('kode_desa, versi, count(*) as jumlah'))
7076
->addIndexColumn()
7177
->make(true);
7278
}
@@ -78,7 +84,7 @@ public function install_baru(Request $request)
7884
{
7985
if ($request->ajax()) {
8086
return DataTables::of(TrackKeloladesa::with('desa')->filter($request))
81-
->editColumn('updated_at', static fn ($q) => $q->updated_at->translatedFormat('j F Y H:i'))
87+
->editColumn('updated_at', static fn($q) => $q->updated_at->translatedFormat('j F Y H:i'))
8288
->addIndexColumn()
8389
->make(true);
8490
}
@@ -91,24 +97,24 @@ public function summary(Request $request)
9197
$kecamatan = $request->get('kecamatan');
9298

9399
$summary = Desa::selectRaw('count(distinct kode_desa) as desa, count(distinct kode_kecamatan) as kecamatan, count(distinct kode_kabupaten) as kabupaten, count(distinct kode_provinsi) as provinsi')
94-
->whereIn('kode_desa', function ($q) use ($request) {
95-
$q->selectRaw('distinct kode_desa')
96-
->from('track_keloladesa');
100+
->whereIn('kode_desa', function ($q) use ($request) {
101+
$q->selectRaw('distinct kode_desa')
102+
->from('track_keloladesa');
97103

98-
// Menambahkan filter created_at pada subquery
99-
if ($request->period) {
100-
$dates = explode(' - ', $request->period);
101-
if (count($dates) === 2) {
102-
// Jika periode mencakup rentang tanggal
103-
if ($dates[0] !== $dates[1]) {
104-
$q->whereBetween('created_at', [$dates[0], $dates[1]]);
105-
} else {
106-
// Jika hanya satu tanggal
107-
$q->whereDate('created_at', '=', $dates[0]);
104+
// Menambahkan filter created_at pada subquery
105+
if ($request->period) {
106+
$dates = explode(' - ', $request->period);
107+
if (count($dates) === 2) {
108+
// Jika periode mencakup rentang tanggal
109+
if ($dates[0] !== $dates[1]) {
110+
$q->whereBetween('created_at', [$dates[0], $dates[1]]);
111+
} else {
112+
// Jika hanya satu tanggal
113+
$q->whereDate('created_at', '=', $dates[0]);
114+
}
108115
}
109116
}
110-
}
111-
});
117+
});
112118

113119
$summarySebelumnya = Desa::selectRaw('count(distinct kode_desa) as desa, count(distinct kode_kecamatan) as kecamatan, count(distinct kode_kabupaten) as kabupaten, count(distinct kode_provinsi) as provinsi')->whereIn('kode_desa', function ($q) use ($request) {
114120
$q->selectRaw('distinct kode_desa')->from('track_keloladesa');
@@ -146,14 +152,15 @@ public function summary(Request $request)
146152
$summareResult = $summary->first();
147153
$summarySebelumnyaResult = $summarySebelumnya->first();
148154

149-
return response()->json([
150-
'total' => [
151-
'provinsi' => ['total' => $summareResult->provinsi, 'pertumbuhan' => $summareResult->provinsi - $summarySebelumnyaResult->provinsi],
152-
'kabupaten' => ['total' => $summareResult->kabupaten, 'pertumbuhan' => $summareResult->kabupaten - $summarySebelumnyaResult->kabupaten],
153-
'kecamatan' => ['total' => $summareResult->kecamatan, 'pertumbuhan' => $summareResult->kecamatan - $summarySebelumnyaResult->kecamatan],
154-
'desa' => ['total' => $summareResult->desa, 'pertumbuhan' => $summareResult->desa - $summarySebelumnyaResult->desa],
155-
],
156-
]
155+
return response()->json(
156+
[
157+
'total' => [
158+
'provinsi' => ['total' => $summareResult->provinsi, 'pertumbuhan' => $summareResult->provinsi - $summarySebelumnyaResult->provinsi],
159+
'kabupaten' => ['total' => $summareResult->kabupaten, 'pertumbuhan' => $summareResult->kabupaten - $summarySebelumnyaResult->kabupaten],
160+
'kecamatan' => ['total' => $summareResult->kecamatan, 'pertumbuhan' => $summareResult->kecamatan - $summarySebelumnyaResult->kecamatan],
161+
'desa' => ['total' => $summareResult->desa, 'pertumbuhan' => $summareResult->desa - $summarySebelumnyaResult->desa],
162+
],
163+
]
157164
);
158165
}
159166

@@ -179,8 +186,8 @@ public function peta(Request $request)
179186
->whereRaw('lng BETWEEN 95 AND 142')
180187
->where(function ($query) {
181188
$query
182-
->where('lat', '!=', config('tracksid.desa_contoh.lat'))
183-
->where('lng', '!=', config('tracksid.desa_contoh.lng'));
189+
->where('lat', '!=', config('tracksid.desa_contoh.lat'))
190+
->where('lng', '!=', config('tracksid.desa_contoh.lng'));
184191
})
185192
->whereIn('kode_desa', function ($q) use ($request) {
186193
$q->selectRaw('distinct kode_desa')->from('track_keloladesa');
@@ -223,30 +230,30 @@ private function properties($desa)
223230
{
224231
$link = '';
225232
if (auth()->check()) {
226-
$link = '<tr><td>Website</td><td> : <a href="http://'.strtolower($desa->url_hosting).'" target="_blank">'.strtolower($desa->url_hosting).'</a></b></td></tr>';
233+
$link = '<tr><td>Website</td><td> : <a href="http://' . strtolower($desa->url_hosting) . '" target="_blank">' . strtolower($desa->url_hosting) . '</a></b></td></tr>';
227234
}
228235

229236
return [
230237
'logo' => null,
231238
'popupContent' => '
232-
<h6 class="text-center"><b style="color:red">'.strtoupper($desa->sebutan_desa.' '.$desa->nama_desa).'</b></h6>
239+
<h6 class="text-center"><b style="color:red">' . strtoupper($desa->sebutan_desa . ' ' . $desa->nama_desa) . '</b></h6>
233240
<b><table width="100%">
234241
<tr>
235-
<td>'.ucwords($desa->sebutan_desa).'</td><td> : '.ucwords($desa->sebutan_desa.' '.$desa->nama_desa).'</b></td>
242+
<td>' . ucwords($desa->sebutan_desa) . '</td><td> : ' . ucwords($desa->sebutan_desa . ' ' . $desa->nama_desa) . '</b></td>
236243
</tr>
237244
<tr>
238-
<td>Kecamatan</td><td> : '.ucwords($desa->nama_kecamatan).'</b></td>
245+
<td>Kecamatan</td><td> : ' . ucwords($desa->nama_kecamatan) . '</b></td>
239246
</tr>
240247
<tr>
241-
<td>Kab/Kota</td><td> : '.ucwords($desa->nama_kabupaten).'</b></td>
248+
<td>Kab/Kota</td><td> : ' . ucwords($desa->nama_kabupaten) . '</b></td>
242249
</tr>
243250
<tr>
244-
<td>Provinsi</td><td> : '.ucwords($desa->nama_provinsi).'</b></td>
251+
<td>Provinsi</td><td> : ' . ucwords($desa->nama_provinsi) . '</b></td>
245252
</tr>
246253
<tr>
247-
<td>Alamat</td><td> : '.$desa->alamat_kantor.'</b></td>
254+
<td>Alamat</td><td> : ' . $desa->alamat_kantor . '</b></td>
248255
</tr>
249-
'.$link.'
256+
' . $link . '
250257
</table></b>',
251258
];
252259
}

app/Http/Controllers/LayananDesaDashboardController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public function index(Request $request)
1717
'kode_kabupaten' => $request->kode_kabupaten,
1818
'kode_kecamatan' => $request->kode_kecamatan,
1919
];
20+
2021
$versiTerakhir = lastrelease_api_layanandesa();
2122
$installHariIni = TrackMobile::with(['desa'])->whereDate('created_at', '>=', Carbon::now()->format('Y-m-d'))->get();
2223

app/Models/TrackKeloladesa.php

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -68,34 +68,34 @@ protected function scopeFilter($query, $request)
6868

6969
if (isset($request['kode_provinsi'])) {
7070
$query->when($request['kode_provinsi'], function ($q) use ($request) {
71-
$q->whereRaw('left(kode_desa, 2) = \''.$request['kode_provinsi'].'\'');
71+
$q->whereRaw($this->table . '.kode_desa is not null and left(' . $this->table . '.kode_desa, 2) = ?', [$request['kode_provinsi']]);
7272
});
7373
}
7474
if (isset($request['kode_kabupaten'])) {
7575
$query->when($request['kode_kabupaten'], function ($q) use ($request) {
76-
$q->whereRaw('left(kode_desa, 5) = \''.$request['kode_kabupaten'].'\'');
76+
$q->whereRaw($this->table . '.kode_desa is not null and left(' . $this->table . '.kode_desa, 5) = ?', [$request['kode_kabupaten']]);
7777
});
7878
}
7979

8080
if (isset($request['kode_kecamatan'])) {
8181
$query->when($request['kode_kecamatan'], function ($q) use ($request) {
82-
$q->whereRaw('left(kode_desa, 8) = \''.$request['kode_kecamatan'].'\'');
82+
$q->whereRaw($this->table . '.kode_desa is not null and left(' . $this->table . '.kode_desa, 8) = ?', [$request['kode_kecamatan']]);
8383
});
8484
}
8585

8686
if (isset($request['kode_desa'])) {
8787
$query->when($request['kode_desa'], function ($q) use ($request) {
88-
$q->whereRaw('kode_desa = \''.$request['kode_desa'].'\'');
88+
$q->whereRaw($this->table . '.kode_desa = \'' . $request['kode_desa'] . '\'');
8989
});
9090
}
9191

9292
if (isset($request['kode_kecamatan'])) {
93-
$query->when(! empty($request['akses_mobile']), function ($query) use ($request) {
94-
$interval = 'interval '.self::ACTIVE_DAYS.' day';
93+
$query->when(!empty($request['akses_mobile']), function ($query) use ($request) {
94+
$interval = 'interval ' . self::ACTIVE_DAYS . ' day';
9595
$sign = '>=';
96-
switch($request['akses_mobile']) {
96+
switch ($request['akses_mobile']) {
9797
case '1':
98-
$interval = 'interval '.self::ACTIVE_DAYS.' day';
98+
$interval = 'interval ' . self::ACTIVE_DAYS . ' day';
9999
break;
100100
case '2':
101101
$interval = 'interval 2 month';
@@ -106,7 +106,7 @@ protected function scopeFilter($query, $request)
106106
break;
107107
}
108108

109-
return $query->whereRaw('tgl_akses '.$sign.' now() - '.$interval);
109+
return $query->whereRaw('tgl_akses ' . $sign . ' now() - ' . $interval);
110110
});
111111
}
112112

@@ -115,12 +115,12 @@ protected function scopeFilter($query, $request)
115115

116116
public function scopeActive($query)
117117
{
118-
return $query->whereRaw('tgl_akses >= now() - interval '.self::ACTIVE_DAYS.' day');
118+
return $query->whereRaw('tgl_akses >= now() - interval ' . self::ACTIVE_DAYS . ' day');
119119
}
120120

121121
public function scopeNonActive($query)
122122
{
123-
return $query->whereRaw('tgl_akses <= now() - interval '.self::ACTIVE_DAYS.' day');
123+
return $query->whereRaw('tgl_akses <= now() - interval ' . self::ACTIVE_DAYS . ' day');
124124
}
125125

126126
public function scopeAktif($query, $batasTgl)
@@ -132,16 +132,16 @@ public function scopeAktif($query, $batasTgl)
132132

133133
public function scopeProvinsi($query, $provinsi)
134134
{
135-
return $query->whereRaw('left(kode_desa, 2) = \''.$provinsi.'\'');
135+
return $query->whereRaw('left(kode_desa, 2) = \'' . $provinsi . '\'');
136136
}
137137

138138
public function scopeKabupaten($query, $kabupaten)
139139
{
140-
return $query->whereRaw('left(kode_desa, 5) = \''.$kabupaten.'\'');
140+
return $query->whereRaw('left(kode_desa, 5) = \'' . $kabupaten . '\'');
141141
}
142142

143143
public function scopeKecamatan($query, $kecamatan)
144144
{
145-
return $query->whereRaw('left(kode_desa, 8) = \''.$kecamatan.'\'');
145+
return $query->whereRaw('left(kode_desa, 8) = \'' . $kecamatan . '\'');
146146
}
147147
}

catatan_rilis.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Di rilis v2507.0.0 berisi perbaikan yang diminta Komunitas Open Desa.
44

55
1. [#499](https://github.com/OpenSID/pantau/issues/499) Penambahan halaman pengguna opendk lengkap.
66
2. [#500](https://github.com/OpenSID/pantau/issues/500) Penambahan halaman pengguna layanan desa lengkap.
7+
3. [#501](https://github.com/OpenSID/pantau/issues/501) Penambahan halaman pengguna kelola desa lengkap.
78

89
#### Perbaikan Bug
910

resources/views/website/keloladesa/detail.blade.php

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,27 @@
1313
<div class=" bg-gray-light">
1414
<div class="card-body">
1515
<div class="row">
16+
<h1>Pengguna Aplikasi KelolaDesa</h1>
1617
<div class="col-lg-12">
17-
<div class="card">
18+
<div class="card card-outline card-primary">
1819
<div class="card-header">
19-
<h3 class="card-title">Pengguna Aplikasi KelolaDesa</h3>
20+
<div class="row">
21+
<div class="col-sm-3">
22+
<a class="btn btn-sm btn-secondary" data-toggle="collapse"
23+
href="#collapse-filter" role="button" aria-expanded="false"
24+
aria-controls="collapse-filter">
25+
<i class="fas fa-filter"></i>
26+
</a>
27+
</div>
28+
</div>
2029
</div>
2130
<!-- /.card-header -->
2231
<div class="card-body">
32+
<div class="row">
33+
<div class="col-md-12">
34+
@include('layouts.components.form_filter')
35+
</div>
36+
</div>
2337
<div class="table-responsive">
2438
<table class="table" id="table-pengguna-keloladesa">
2539
<thead>
@@ -62,6 +76,11 @@
6276
ajax: {
6377
url: `{{ route('datatables:pengguna-keloladesa') }}`,
6478
method: 'get',
79+
data: function(data) {
80+
data.kode_provinsi = $('#provinsi').val();
81+
data.kode_kabupaten = $('#kabupaten').val();
82+
data.kode_kecamatan = $('#kecamatan').val();
83+
}
6584
},
6685
columns: [{
6786
data: 'DT_RowIndex',
@@ -86,7 +105,20 @@
86105
},
87106
]
88107
})
108+
109+
$('#filter').on('click', function(e) {
110+
// e.preventDefault();
111+
$('#table-pengguna-keloladesa').DataTable().draw();
112+
});
113+
114+
$(document).on('click', '#reset', function(e) {
115+
e.preventDefault();
116+
$('#provinsi').val('').change();
117+
$('#kabupaten').val('').change();
118+
$('#kecamatan').val('').change();
119+
$('#table-pengguna-keloladesa').DataTable().draw();
120+
});
121+
89122
})
90123
</script>
91-
@endpush
92-
124+
@endpush

resources/views/website/keloladesa/index.blade.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@
1818
<div class="row">
1919
<div class="col-md-10 align-content-center">
2020
<div class="d-flex">
21-
<a class="btn btn-sm btn-secondary align-content-center" data-toggle="collapse" href="#collapse-filter" role="button"
22-
aria-expanded="false" aria-controls="collapse-filter">
21+
<a class="btn btn-sm btn-secondary align-content-center" data-toggle="collapse"
22+
href="#collapse-filter" role="button" aria-expanded="false"
23+
aria-controls="collapse-filter">
2324
<i class="fas fa-filter"></i>
2425
</a>
2526
<div class="bg-blue p-1 ml-1" style="width: 100%">
26-
<p class="m-0 text-white"><marquee>Info Rilis Terbaru: {{ $info_rilis }}</marquee></p>
27+
<p class="m-0 text-white">
28+
<marquee>Info Rilis Terbaru: {{ $info_rilis }}</marquee>
29+
</p>
2730
</div>
2831
</div>
2932
</div>
@@ -103,6 +106,7 @@
103106
<b>
104107
Daftar Pengguna KelolaDesa 7 Hari Terakhir
105108
</b>
109+
<a href="{{ route('web.keloladesa.detail') }}" class="btn btn-sm btn-primary">Data Selengkapnya</a>
106110
@include('website.keloladesa.tabel')
107111
</div>
108112
<div class="col-lg-4">
@@ -186,4 +190,4 @@ class="fa ${total.desa.pertumbuhan < 0 ? 'fa-arrow-down' : 'fa-arrow-up'}"></i>
186190
updateData()
187191
})
188192
</script>
189-
@endpush
193+
@endpush

routes/web.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
Route::get('layanandesa/install_baru', [LayananDesaDashboardController::class, 'install_baru']);
7474
Route::get('layanandesa/peta', [LayananDesaDashboardController::class, 'peta']);
7575
Route::get('keloladesa', [KelolaDesaDashboardController::class, 'index']);
76-
Route::get('keloladesa/detail', [KelolaDesaDashboardController::class, 'detail']);
76+
Route::get('keloladesa/detail', [KelolaDesaDashboardController::class, 'detail'])->name('web.keloladesa.detail');
7777
Route::get('keloladesa/versi', [KelolaDesaDashboardController::class, 'versi']);
7878
Route::get('keloladesa/versi/detail', [KelolaDesaDashboardController::class, 'versi_detail']);
7979
Route::get('keloladesa/install_baru', [KelolaDesaDashboardController::class, 'install_baru']);

0 commit comments

Comments
 (0)