# Rencana Implementasi: CRUD Manajemen Pekerja & SDM

Tujuan rencana ini adalah untuk mengganti tampilan "Read-Only" pada modul SDM menjadi modul manajemen fungsional penuh, lengkap dengan pengaturan Role (Jabatan) untuk setiap user.

## User Review Required

> [!IMPORTANT]
> **Keamanan Password**: Default password saat tambah user baru akan diset manual oleh admin. Admin juga bisa memperbarui password user saat proses Edit.
> 
> **Role Tunggal**: Sesuai kebijakan sebelumnya, satu user akan memiliki satu role utama yang dipilih melalui dropdown.

## Proposed Changes

### 1. Backend & Data (Models)

#### [MODIFY] [User.php](file:///c:/xampp/htdocs/myportal/poultrysystem/app/models/User.php)
- Tambahkan method `create($data)`: Menyimpan ke tabel `users` dan melink-kan ke `user_roles`.
- Tambahkan method `update($id, $data)`: Memperbarui profil, email, dan role.
- Tambahkan method `find($id)`: Mengambil data user spesifik beserta ID rolenya.
- Tambahkan method `delete($id)`: Menghapus user dari sistem (dan link rolenya).

### 2. Logika Program (Controllers)

#### [MODIFY] [UserController.php](file:///c:/xampp/htdocs/myportal/poultrysystem/app/controllers/web/UserController.php)
- Implementasikan `create()`: Validasi input, hashing password (`password_hash`), dan simpan.
- Implementasikan `update()`: Logika update profil. Jika password kosong, jangan diupdate.
- Implementasikan `getJson($id)`: Mengembalikan data JSON untuk autofill modal Edit.

### 3. Registrasi Route (URL)

#### [MODIFY] [index.php](file:///c:/xampp/htdocs/myportal/poultrysystem/public/index.php)
- Daftarkan:
    - `POST /admin/users/create`
    - `POST /admin/users/update`
    - `GET /admin/users/delete/{id}`
    - `GET /admin/users/json/{id}`

### 4. Antarmuka (Views)

#### [MODIFY] [admin/user/index.php](file:///c:/xampp/htdocs/myportal/poultrysystem/app/views/admin/user/index.php)
- **Modal Tambah**: Form input Nama, Username, Email, Password, dan Dropdown Role.
- **Modal Edit**: Form serupa yang terisi otomatis via AJAX saat klik tombol Edit.
- **Aksi Tabel**: Aktifkan tombol Edit dan Tambahkan tombol Hapus (dengan konfirmasi).

## Verification Plan

### Manual Verification
- Coba tambah user baru dengan role "Staf Kandang". Berhasil login dengan user tersebut?
- Coba edit nama lengkap dan ganti role user tersebut menjadi "Manager". Pastikan izin aksesnya berubah sesuai role baru.
- Hapus user testing dan pastikan data benar-benar hilang dari tabel dan sidebar.
