# Rencana Implementasi: Galeri Media Kandang (Multi-Media)

Tujuan : Memungkinkan admin untuk mengunggah lebih dari satu foto atau video per kandang dan memilih satu media sebagai tampilan utama (cover).

## User Review Required

> [!IMPORTANT]
> **Format File**: Sistem akan mendukung format Gambar (JPG, PNG, WEBP) dan Video (MP4, WebM).
> 
> **Penyimpanan**: File akan disimpan di folder `public/uploads/coops/`. Pastikan folder tersebut memiliki izin tulis (write permission).

## Proposed Changes

### 1. Database & Migrasi

#### [NEW] `scratch/migrate_coop_media.php`
- Membuat tabel `coop_media`: `id`, `coop_id`, `file_path`, `file_type`, `is_primary`.

### 2. Backend (Models)

#### [NEW] [CoopMedia.php](file:///c:/xampp/htdocs/myportal/poultrysystem/app/models/CoopMedia.php)
- Method `saveMedia($coopId, $files)`: Simpan info file ke DB.
- Method `setPrimary($mediaId, $coopId)`: Update `is_primary` (set 0 untuk yang lain di coop yang sama).
- Method `delete($mediaId)`: Menghapus record dan file fisik.

#### [MODIFY] [Coop.php](file:///c:/xampp/htdocs/myportal/poultrysystem/app/models/Coop.php)
- Tambahkan method `getPrimaryMedia($id)` untuk menampilkan thumbnail di daftar kandang.

### 3. Logika Program (Controllers)

#### [MODIFY] [CoopController.php](file:///c:/xampp/htdocs/myportal/poultrysystem/app/controllers/web/CoopController.php)
- Method `media($id)`: Menampilkan halaman galeri khusus per-kandang.
- Method `uploadMedia()`: Logika upload file (multiple).
- Method `setPrimaryMedia($id)`: Endpoint untuk set media utama.

### 4. Navigasi & Route

#### [MODIFY] [index.php](file:///c:/xampp/htdocs/myportal/poultrysystem/public/index.php)
- Daftarkan route:
    - `GET /admin/coops/{id}/media`
    - `POST /admin/coops/media/upload`
    - `POST /admin/coops/media/set-primary`
    - `GET /admin/coops/media/delete/{id}`

### 5. Antarmuka (Views)

#### [NEW] [admin/coop/media.php](file:///c:/xampp/htdocs/myportal/poultrysystem/app/views/admin/coop/media.php)
- Grid galeri yang menampilkan foto/video.
- Tombol "Ambil Foto/Video" untuk mengaktifkan kamera langsung dari browser (menggunakan MediaDevices API).
- UI Kamera: Preview langsung, tombol "Ambil Foto", dan tombol "Rekam Video".
- Tombol "Set Utama" dengan indikator visual (badge "Utama").
- Form upload file multiple menggunakan Drag & Drop atau input file standar yang cantik.

#### [MODIFY] [admin/coop/index.php](file:///c:/xampp/htdocs/myportal/poultrysystem/app/views/admin/coop/index.php)
- Tambahkan tombol "Galeri Produk/Media" di setiap baris tabel kandang.
- Tampilkan thumbnail kecil (primary media) di kolom nama kandang.

## Verification Plan

### Manual Verification
- Unggah 3 foto dan 1 video sekaligus. Pastikan semuanya muncul di galeri.
- Pilih video sebagai "Media Utama". Pastikan badge "Utama" berpindah ke video tersebut.
- Cek tabel Daftar Kandang, apakah thumbnail video tersebut muncul di sana.
- Hapus salah satu foto, pastikan file di folder `uploads` juga terhapus.
