Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pengguna Aplikasi PBB (poin 9) - Halaman OpenSID #369

Merged
merged 9 commits into from
Aug 8, 2024
27 changes: 27 additions & 0 deletions app/Helpers/helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,33 @@ function lastrelease_opensid()
}
}

if (! function_exists('lastrelease_pbb')) {
/**
* Validasi domain.
*
* @param string $url
* @return object
*/
function lastrelease_pbb()
{

// Cache data until the end of the day
$version = Cache::remember('release_pbb', now()->endOfDay(), function () {
$version = '2401.0.0';
$versi_pbb = lastrelease('https://api.github.com/repos/OpenSID/rilis-pbb/releases/latest');

if ($versi_pbb !== false) {
$version = str_replace('v', '', $versi_pbb->tag_name);
}

return $version;
});


return $version;
}
}

if (! function_exists('pantau_wilayah_khusus')) {
/**
* Validasi domain.
Expand Down
25 changes: 25 additions & 0 deletions app/Http/Controllers/Api/TrackPBBController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\TrackPBBRequest;
use App\Models\Pbb;
use Exception;
use Illuminate\Support\Facades\Log;

class TrackPBBController extends Controller
{
public function __invoke(TrackPBBRequest $request)
{
try {
Pbb::upsert($request->requestData(),['kode_desa']);

return response()->json(['status' => true]);
} catch (Exception $e) {
Log::error($e);

return response()->json('Failed', 422);
}
}
}
4 changes: 4 additions & 0 deletions app/Http/Controllers/WebsiteDashboardController.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use App\Models\Desa;
use App\Models\Opendk;
use App\Models\Openkab;
use App\Models\Pbb;
use Carbon\CarbonPeriod;
use App\Models\TrackMobile;
use Illuminate\Http\Request;
Expand Down Expand Up @@ -319,6 +320,9 @@ public function opensid(Request $request)
'total_versi' => Desa::distinct('versi_hosting')->whereNotNull('versi_hosting')->count(),
'versi_terakhir' => lastrelease_opensid(),
'provinsi_pengguna_opensid' => Desa::selectRaw('nama_provinsi, count(*) as total')->orderBy('total', 'desc')->groupBy('nama_provinsi')->get(),
'pengguna_pbb' => Pbb::count(),
'versi_pbb' => lastrelease_pbb(),
'pengguna_anjungan' => Desa::anjungan()->count(),
'latestPremiumVersion' => 'v' . lastrelease_opensid() . '-premium',
'latestUmumVersion' => 'v' . lastrelease_opensid(),
'statistikDesa' => Desa::jumlahDesa()->get()->first(),
Expand Down
86 changes: 86 additions & 0 deletions app/Http/Requests/TrackPBBRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class TrackPBBRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'nama_desa' => ['required', "not_regex:/[^\.a-zA-Z\s:-]|contoh|demo\s+|sampel\s+/i"],
'kode_desa' => [
'required',
"exists:kode_wilayah,kode_desa,kode_kec,{$this->kode_kecamatan},kode_kab,{$this->kode_kabupaten},kode_prov,{$this->kode_provinsi}",
"unique:desa,kode_desa,{$this->kode_desa},kode_desa",
],
'kode_pos' => 'nullable',
'nama_kecamatan' => ['required', "not_regex:/[^\.a-zA-Z\s:-]|contoh|demo\s+|sampel\s+/i"],
'kode_kecamatan' => [
'required',
'exists:kode_wilayah,kode_kec',
],
'nama_kabupaten' => ['required', "not_regex:/[^\.a-zA-Z\s:-]|contoh|demo\s+|sampel\s+/i"],
'kode_kabupaten' => [
'required',
'exists:kode_wilayah,kode_kab',
],
'nama_provinsi' => ['required', "not_regex:/[^\.a-zA-Z\s:-]|contoh|demo\s+|sampel\s+/i"],
'kode_provinsi' => [
'required',
'exists:kode_wilayah,kode_prov',
],
'url' => ['required', 'url', "not_regex:/{$this->listAbaikanDomain()}/"],
'versi' => 'required',
];
}

/**
* List abikan domain.
*
* @return string
*/
protected function listAbaikanDomain()
{
return abaikan_domain('opensid');
}

/**
* Request data attribute.
*
* @return array
*/
public function requestData()
{
$this->merge(['url' => fixDomainName($this->url)]);

return $this->only([
'kode_desa',
'nama_desa',
'kode_kecamatan',
'kode_kabupaten',
'kode_provinsi',
'nama_kecamatan',
'nama_kabupaten',
'nama_provinsi',
'url',
'versi',
]);
}
}
1 change: 1 addition & 0 deletions app/Http/Requests/TrackRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ public function requestData()
'jml_persil',
'jml_dokumen',
'jml_keluarga',
'anjungan'
]);
}
}
6 changes: 6 additions & 0 deletions app/Models/Desa.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class Desa extends Model
'tgl_rekam_hosting' => 'datetime',
'tgl_akses_lokal' => 'datetime',
'tgl_akses_hosting' => 'datetime',
'anjungan' => 'bool'
];

/** {@inheritdoc} */
Expand Down Expand Up @@ -416,4 +417,9 @@ public function scopeLatestVersion($query)
return $query->orderByRaw('CAST(SUBSTRING_INDEX(versi_hosting, "-", 1) AS DECIMAL) DESC')
->orderBy('versi_hosting', 'DESC');
}

public function scopeAnjungan($query)
{
return $query->where('anjungan', true);
}
}
26 changes: 26 additions & 0 deletions app/Models/Pbb.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Pbb extends Model
{
use HasFactory;

/** {@inheritdoc} */
protected $table = 'pbb';

protected $fillable = [
'kode_desa',
'nama_desa',
'kode_kecamatan',
'nama_kecamatan',
'kode_kabupaten',
'nama_kabupaten',
'kode_provinsi',
'nama_provinsi',
'versi',
];
}
2 changes: 2 additions & 0 deletions catatan_rilis.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ Di rilis v2407.0.0 berisi perbaikan yang diminta Komunitas Open Desa.
22. [#344](https://github.com/OpenSID/pantau/issues/344) Penambahan pengguna baru dalam 7 Hari terakhir.
23. [#345](https://github.com/OpenSID/pantau/issues/345) Penambahan daftar versi dan jumlah terpasang.
24. [#342](https://github.com/OpenSID/pantau/issues/342) Penambahan statistik pengguna OpenSID bulanan.
25. [#340](https://github.com/OpenSID/pantau/issues/340) Penambahan pengguna aplikasi PBB.
26. [#341](https://github.com/OpenSID/pantau/issues/341) PenambahanpPengguna anjungan mandiri.

#### Perbaikan Bug

Expand Down
41 changes: 41 additions & 0 deletions database/migrations/2024_07_31_134703_create_pbb_table.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('pbb', function (Blueprint $table) {
$table->id();
$table->string('kode_desa', 25)->unique();
$table->string('kode_kecamatan', 25);
$table->string('kode_kabupaten', 25);
$table->string('kode_provinsi', 25);
$table->string('nama_desa', 100);
$table->string('nama_kecamatan', 100);
$table->string('nama_kabupaten', 100);
$table->string('nama_provinsi', 100);
$table->string('url', 100)->nullable();
$table->string('versi', 25);
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pbb');
}
};
32 changes: 32 additions & 0 deletions database/migrations/2024_08_01_071506_add_anjungan_desa.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('desa', function(Blueprint $table){
$table->boolean('anjungan')->nullable()->default(false);
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('desa', function(Blueprint $table){
$table->dropColumn('anjungan');
});
}
};
28 changes: 13 additions & 15 deletions resources/views/website/opensid.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,34 +100,32 @@
<div class="row">
<div class="col-xl-6">
<div class="small-box bg-blue rounded-lg">
<div class="row p-2">
<div class="row p-3">
<div class="col-md-2 text-center align-content-center">
<i class="fas fa-building fa-3x text-white"></i>
<i class="fas fa-building fa-6x text-white"></i>
</div>
<div class="col-md-8">
<div class="col-md-6">
<h4>Aplikasi PBB</h4>
<p class="m-0">2213</p>
<p class="m-0">Pengguna Terpasang</p>
<div class="display-4 text-bold mt-n3">{{ $pengguna_pbb }}</div>
<div class="text-bold mt-n2">Pengguna Terpasang</div>
</div>
<div class="col-md-2 text-center">
<span class="badge badge-warning">versi 24.07.0.0</span>
<div class="col-md-4 text-right">
<h3><span class="badge badge-warning rounded-pill">versi {{ $versi_pbb }}</span></h3>
</div>
</div>
</div>
</div>
<div class="col-xl-6">
<div class="small-box bg-blue rounded-lg">
<div class="row p-2">
<div class="row p-3">
<div class="col-md-2 text-center align-content-center">
<i class="fas fa-building fa-3x text-white"></i>
<i class="fas fa-building fa-6x text-white"></i>
</div>
<div class="col-md-8">
<div class="col-md-6">
<h4>Anjungan Mandiri</h4>
<p class="m-0">1823</p>
<p class="m-0">Pengguna Terpasang</p>
</div>
<div class="col-md-2 text-center">
</div>
<div class="display-4 text-bold mt-n3">{{ $pengguna_anjungan }}</div>
<div class="text-bold mt-n2">Pengguna Terpasang</div>
</div>
</div>
</div>
</div>
Expand Down
2 changes: 2 additions & 0 deletions routes/api.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use App\Http\Controllers\Api\TrackOpenkabController;
use App\Http\Controllers\WebsiteDashboardController;
use App\Http\Controllers\Api\TrackKelolaDesaController;
use App\Http\Controllers\Api\TrackPBBController;

/*
|--------------------------------------------------------------------------
Expand Down Expand Up @@ -43,6 +44,7 @@
Route::post('openkab', TrackOpenkabController::class);
Route::post('mobile', TrackMobileController::class);
Route::post('keloladesa', [TrackKelolaDesaController::class, 'store']);
Route::post('pbb', TrackPBBController::class);
});

Route::prefix('web')
Expand Down