# Configuration Setup - Local vs Webhost

## Struktur Folder yang Sudah Disesuaikan

### LOKAL (localhost/tracker/)
```
e:\xampp\htdocs\tracker\
├── api/              → http://localhost/tracker/api
├── dashboard/        → http://localhost/tracker/dashboard
├── agent-csharp/     → Windows Service Agent
├── database/         → "tracker" (local MySQL)
└── config/           → Environment configuration
```

### WEBHOST (tracker.lppmunud.id)
```
/home/lppmunu1/public_html/
├── api/              → http://tracker.lppmunud.id/api
├── dashboard/        → http://tracker.lppmunud.id/
├── agent-csharp/     → Windows Service Agent
├── database/         → "lppmunu1_tracker" (remote MySQL)
└── config/           → Environment configuration
```

## Environment Detection

Sistem sudah configurable untuk AUTO-DETECT environment berdasarkan:

### 1. Hostname Detection
- **Local**: `localhost`, `127.0.0.1`
  - Uses: `.env.local` → Database local, API di localhost/tracker/api
  
- **Production**: `tracker.lppmunud.id`
  - Uses: `.env.webhost` → Database remote, API di tracker.lppmunud.id/api

### 2. Configuration Files

#### `/config/EnvironmentHelper.php`
- Class utama untuk environment detection
- Auto-loads `.env` files (local atau webhost)
- Digunakan oleh semua Config.php files

#### `/api/config/Config.php`
- ✅ Now using EnvironmentHelper
- Auto-set DB_HOST, DB_NAME, DB_USER, DB_PASS
- Auto-set CORS origins

#### `/dashboard/config/Config.php`
- ✅ Now using EnvironmentHelper
- Auto-set APP_URL, API_URL based on environment

#### `/api/index.php`
- ✅ Path parsing now dynamic
- Supports both `/track/api` (local) dan `/api` (webhost)

### 3. Agent Configuration

#### Lokal (config.local.json)
```json
{
  "environment": "local",
  "api_url": "http://localhost/tracker/api"
}
```

#### Production (config.production.json)
```json
{
  "environment": "production",
  "api_url": "http://tracker.lppmunud.id/api"
}
```

**Saat ini aktif**: `config.json` → ✅ Sudah set ke LOCAL

## Database Setup

### Local Development
- **Host**: localhost
- **Database**: tracker
- **User**: root
- **Password**: (kosong)
- **Connection**: menggunakan Database class di API

### Webhost Production
- **Host**: tracker.lppmunud.id
- **Database**: lppmunu1_tracker
- **User**: lppmunu1_tracker
- **Password**: Cargo2026#
- **Connection**: menggunakan Database class di API dengan override .env.webhost

## CORS Configuration

### Local Origins
- http://localhost
- http://localhost:80
- http://localhost/tracker
- http://127.0.0.1

### Production Origins
- http://tracker.lppmunud.id
- https://tracker.lppmunud.id
- http://www.tracker.lppmunud.id
- https://www.tracker.lppmunud.id

## File Paths yang Sudah Disesuaikan

✅ **Fixed**:
1. `/config/EnvironmentHelper.php` - NEW: Dynamic environment loader
2. `/api/config/Config.php` - Uses EnvironmentHelper
3. `/api/config/Database.php` - Dynamic DB credentials
4. `/dashboard/config/Config.php` - Uses EnvironmentHelper
5. `/api/index.php` - Dynamic path parsing
6. `/agent-csharp/config.json` - Set ke local
7. `/agent-csharp/config.local.json` - NEW: Local config template
8. `/agent-csharp/config.production.json` - NEW: Production config template

## Cara Menggunakan

### Untuk Setup Local (localhost/tracker/)
1. Database sudah di localhost - OK ✅
2. Agent service sudah running - OK ✅
3. API akan auto-detect localhost dan pakai .env.local
4. Dashboard akan auto-detect localhost dan pakai .env.local

✅ **Siap digunakan!**

### Untuk Deploy ke Webhost (tracker.lppmunud.id)

**Langkah-langkah:**

1. **Upload files ke webhost:**
   ```
   FTP upload ke /home/lppmunu1/public_html/
   ```

2. **Sesuaikan struktur folder:**
   - Remove `/tracker` prefix dari URLs
   - API: `/api/` (bukan `/tracker/api/`)
   - Dashboard: `/` (root, bukan `/tracker/dashboard/`)

3. **Environment akan auto-detect:**
   - Saat akses `tracker.lppmunud.id` → akan auto-load `.env.webhost`
   - Database akan auto-connect ke `tracker.lppmunud.id` dengan credentials webhost

4. **Agent pada webhost:**
   - Copy `config.production.json` ke `config.json`
   - Service akan connect ke `http://tracker.lppmunud.id/api`

5. **Database:**
   - Run `/database/tracker_schema.sql` di database `lppmunu1_tracker`
   - Credentials sudah tersimpan di `.env.webhost`

## Troubleshooting

### Problem: API tidak bisa connect ke database
**Solution:**
- Check `.env.local` dan `.env.webhost` sudah ada
- Verify DB credentials di konsol: `php -r "require 'config/EnvironmentHelper.php'; $e = EnvironmentHelper::getInstance(); echo $e->get('DB_HOST');"`

### Problem: Dashboard shows wrong API URL
**Solution:**
- Environment detection mungkin salah
- Manual override: Set `putenv('TRACKER_ENV=local');` sebelum load Config.php

### Problem: Path parsing error di API
**Solution:**
- Verify HOST environment dalam URL request
- Check `.env` files ada di `/config/` folder

## Testing URLs

### Local
- **Dashboard**: http://localhost/tracker/dashboard
- **API Status**: http://localhost/tracker/api
- **API Agent**: http://localhost/tracker/api/agent

### Webhost
- **Dashboard**: http://tracker.lppmunud.id
- **API Status**: http://tracker.lppmunud.id/api
- **API Agent**: http://tracker.lppmunud.id/api/agent

## Catatan Penting

1. **Folder structure**: Pastikan folder `/config/` ada di root `/tracker/` untuk EnvironmentHelper.php
2. **File permissions**: Pastikan `.env.*` files dapat dibaca oleh PHP
3. **Database**: Verify MySQL credentials di `.env` files
4. **CORS**: Jika ada issue cross-origin, check CORS config di API Config.php

---

**Status**: ✅ Konfigurasi sudah disesuaikan untuk DUAL environment (Local & Webhost)
**Environment Detection**: ✅ Environment sudah auto-detect based on hostname
**Database**: ✅ Database connection sudah dynamic
**API Paths**: ✅ Path parsing sudah dynamic
**CORS**: ✅ CORS origins sudah sesuai per environment

Siap untuk deployment! 🚀
