3.8 KiB
3.8 KiB
Fastest Permohonan API Integration
Overview
Integration telah selesai untuk endpoint fastest permohonan API Jakarta:
- URL:
https://wsdev.jakarta.go.id/gateway/DataPerizinanLingkungan/1.0/fastest_permohonan
- Parameters:
kategori
(pertek/amdal),limit
(default: 5) - Headers:
Authorization: Bearer <token>
,x-Gateway-APIKey: <key>
Database Schema
Table: fastest_permohonan
- id (bigint, primary key)
- kategori (varchar) - pertek, amdal
- nama (varchar) - nama izin dari API
- total (integer) - jumlah total izin
- durasi_pemohon (varchar) - durasi rata-rata pemohon
- durasi_petugas (varchar) - durasi rata-rata petugas
- rank_order (integer) - urutan ranking 1-5
- api_last_updated (datetime) - dari field API last_updated
- sync_date (date) - tanggal sync data
- created_at, updated_at (timestamps)
Indexes:
(kategori, sync_date, rank_order)
- Unique:
(kategori, rank_order, sync_date)
API Response Structure
{
"success": 1,
"message": "Fastest permohonan retrieved successfully.",
"data": [
{
"nama": "SURAT PERNYATAAN PENGELOLAAN LINGKUNGAN (SPPL)",
"total": 7174,
"durasi_pemohon": "5 Hari 06 Jam 09 Menit 01 Detik",
"durasi_petugas": "4 Hari 03 Jam 12 Menit 18 Detik"
}
],
"last_updated": "2025-07-14 09:50:07"
}
Files Modified/Created
New Files:
database/migrations/2025_07_14_024445_create_fastest_permohonan_table.php
app/Models/FastestPermohonan.php
Modified Files:
-
app/Services/PerizinanApiService.php
- Added
fetchFastestPermohonan()
method - Added
syncFastestDataToDatabase()
method - Modified
syncAllCategories()
to include fastest data
- Added
-
app/Console/Commands/SyncPerizinanData.php
- Added
--fastest
option - Updated to sync both status and fastest data
- Added
-
routes/console.php
- Updated schedule to include
--fastest
flag
- Updated schedule to include
-
app/Helpers/DashboardHelper.php
- Added
getFastestPermohonanByType()
method - Added
getAllFastestData()
method - Added helper methods for formatting and display
- Added
Commands
Sync Status Data Only:
php artisan perizinan:sync # All categories
php artisan perizinan:sync pertek # Specific category
Sync Status + Fastest Data:
php artisan perizinan:sync --fastest # All categories
php artisan perizinan:sync pertek --fastest # Specific category
Check Data:
php artisan perizinan:check
Scheduled Tasks
Daily at midnight (00:00 WIB):
php artisan perizinan:sync --fastest
Data Access Examples
Using DashboardHelper:
// Get fastest data for dashboard
$fastestData = DashboardHelper::getAllFastestData();
// Get fastest data for specific type
$pertekFastest = DashboardHelper::getFastestPermohonanByType('pertek');
Using Model Directly:
// Get today's data for PERTEK
$pertek = FastestPermohonan::getLatestByKategori('pertek');
// Get data for specific date
$data = FastestPermohonan::getByKategoriAndDate('amdal', '2025-07-14');
Data Flow
- API Call: Service fetches data from Jakarta API
- Data Validation: Check API response success
- Database Sync:
- Delete existing data for today (to ensure fresh ranking)
- Insert new data with ranking based on API order
- Dashboard Display: Helper methods format data for frontend
Production Deployment
Data akan tersync otomatis setiap hari jam 12 malam melalui Laravel Scheduler di production server.
Notes
- Data di-refresh setiap hari untuk memastikan ranking terbaru
- Ranking ditentukan berdasarkan urutan dari API response
- Fallback data tersedia jika API tidak tersedia
- Support untuk kategori 'pertek' dan 'amdal' sesuai endpoint yang tersedia