# 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 `, `x-Gateway-APIKey: ` ## Database Schema ### Table: `fastest_permohonan` ```sql - 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 ```json { "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: 1. `database/migrations/2025_07_14_024445_create_fastest_permohonan_table.php` 2. `app/Models/FastestPermohonan.php` ### Modified Files: 1. `app/Services/PerizinanApiService.php` - Added `fetchFastestPermohonan()` method - Added `syncFastestDataToDatabase()` method - Modified `syncAllCategories()` to include fastest data 2. `app/Console/Commands/SyncPerizinanData.php` - Added `--fastest` option - Updated to sync both status and fastest data 3. `routes/console.php` - Updated schedule to include `--fastest` flag 4. `app/Helpers/DashboardHelper.php` - Added `getFastestPermohonanByType()` method - Added `getAllFastestData()` method - Added helper methods for formatting and display ## Commands ### Sync Status Data Only: ```bash php artisan perizinan:sync # All categories php artisan perizinan:sync pertek # Specific category ``` ### Sync Status + Fastest Data: ```bash php artisan perizinan:sync --fastest # All categories php artisan perizinan:sync pertek --fastest # Specific category ``` ### Check Data: ```bash php artisan perizinan:check ``` ## Scheduled Tasks Daily at midnight (00:00 WIB): ```bash php artisan perizinan:sync --fastest ``` ## Data Access Examples ### Using DashboardHelper: ```php // Get fastest data for dashboard $fastestData = DashboardHelper::getAllFastestData(); // Get fastest data for specific type $pertekFastest = DashboardHelper::getFastestPermohonanByType('pertek'); ``` ### Using Model Directly: ```php // Get today's data for PERTEK $pertek = FastestPermohonan::getLatestByKategori('pertek'); // Get data for specific date $data = FastestPermohonan::getByKategoriAndDate('amdal', '2025-07-14'); ``` ## Data Flow 1. **API Call**: Service fetches data from Jakarta API 2. **Data Validation**: Check API response success 3. **Database Sync**: - Delete existing data for today (to ensure fresh ranking) - Insert new data with ranking based on API order 4. **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