# US Marshal Daily Report & Paycheck System - Project Plan

## 📌 Deskripsi Projek

Aplikasi web untuk manajemen faksi US Marshal (GTA Roleplay). Fokus utama adalah pendataan tersangka (Suspect Database), inventaris anggota, dan pelaporan insiden terintegrasi untuk kalkulasi bonus aktivitas secara otomatis dan transparan.

## 🎯 Goals

- Sentralisasi data tersangka dan riwayat kasus (Criminal Record).
- Mempermudah klaim bonus aktivitas bagi banyak officer dalam satu insiden sekaligus.
- Automasi rekapitulasi gaji/bonus berdasarkan kategori aktivitas insiden.
- Mendata kepemilikan senjata dan kendaraan setiap anggota.
- Mengelola status kehadiran/cuti anggota secara rapi.
- Notifikasi real-time ke Discord setiap ada laporan insiden baru.
- Efisiensi penyimpanan dengan FiveManage CDN untuk semua aset gambar.

## 🛠️ Tech Stack

- **Framework:** Laravel 10
- **Authentication:** Laravel Breeze
- **Database:** MySQL
- **Integrasi:** Discord Bot API

## ✨ Fitur Utama

### 1. Database Tersangka (Suspect Management)

- **Criminal Record:** Menyimpan NIK, Nama, Foto, Telepon, dan riwayat pasal (`cases`) dalam format JSON.
- **Evidence Digital:** Setiap laporan insiden dapat melampirkan banyak barang bukti (foto/dokumen) yang tersimpan di CDN.

### 2. Multi-Officer Incident Reporting (Sistem Terkoneksi)

- **Kategori Aktivitas:** Setiap laporan insiden wajib memilih satu jenis aktivitas (Escorting, Full Trial, dll) yang menentukan besaran bonus.
- **Main Report:** Mencatat judul, jenis aktivitas, Incident Commander, dan detail kejadian.
- **Sub-Report (User Reports):** Menghubungkan banyak officer dan tersangka ke dalam satu ID laporan insiden yang sama.
- **Auto-Calculation:** Sistem menghitung bonus officer dengan cara menjumlahkan aktivitas dari laporan-laporan yang mereka ikuti.
- **Incident Header:** Judul, aktivitas, commander, briefing, dan galeri barang bukti.

### 3. Manajemen Personalia & Inventaris

- **Weapon Registry:** Pencatatan nomor seri senjata pegangan anggota.
- **Vehicle Registry:** Pencatatan plat nomor kendaraan anggota.
- **Leave/Absence System:** Sistem pencatatan izin/cuti anggota dengan alasan In-Character (IC) maupun Out-of-Character (OOC).

## 🗄️ Rancangan Database Final

### A. Tabel Master & User

1. **`users`**
    - `id`, `name`, `email`, `password`, `ic_name`, `badge_number`,`signature_image`(CDN URL),`profile_image`(CDN URL), `phone_number` (optional), `status` (pending/active/suspended/banned - default: pending), `last_login` (timestamp).
2. **`activities`**
    - `id`, `name` (misal: Full Trial), `bonus_amount` (nominal $ yang diatur Admin).

### B. Tabel Inventaris & Personalia

3. **`weapons`**
    - `id`
    - `user_id` (FK -> `users.id`)
    - `name` (Nama senjata, misal: Glock 17)
    - `serial_number` (Nomor seri unik senjata)
4. **`vehicles`**
    - `id`
    - `user_id` (FK -> `users.id`)
    - `name` (Nama kendaraan, misal: Police Cruiser / Kuruma)
    - `plate_number` (Plat nomor)
5. **`absences` (Absen Form)**
    - `id`
    - `user_id` (FK -> `users.id`)
    - `start_date` (Tanggal mulai izin/cuti)
    - `end_date` (Tanggal selesai izin/cuti)
    - `reason_ic` (Text - Alasan di dalam game)
    - `reason_ooc` (Text - Alasan di dunia nyata)

### C. Tabel SuspecT

6. **`suspects`**: `id`, `nik`, `nama`, `foto_suspect` (CDN URL), `cases` (JSON), `phone`, `notes`.

### D. Tabel Reporting (Relasi Utama)

7. **`reports` (Incident Header)**
    - `id`
    - `activity_id` (Foreign Key -> `activities.id`)
    - `title` (Judul laporan)
    - `incident_commander_id` (FK -> `users.id`)
    - `briefing_activity` (Rangkuman kejadian)
    - `date` (Waktu kejadian)
    - `officers_involved` (Text/JSON - List nama officer yang hadir)
    - `evidence` (Text/JSON -upload ke FiveManage)
8. **`user_reports` (Individual Contribution)**
    - `id`
    - `report_id` (Foreign Key -> `reports.id`)
    - `user_id` (Foreign Key -> `users.id` - Officer yang memproses)
    - `suspect_id` (Foreign Key -> `suspects.id` - Tersangka yang diproses)
    - `penal_code` (JSON - Array pasal yang dikenakan)

---
