# Modul Admin

Modul ini menangani fitur-fitur khusus admin, termasuk melihat status absensi semua pengguna dan daftar pengguna yang tidak hadir.

## Daftar Isi
- [Endpoint API](#endpoint-api)
- [Mendapatkan Status Absensi Semua Pengguna](#mendapatkan-status-absensi-semua-pengguna)
- [Mendapatkan Daftar Pengguna Tidak Hadir](#mendapatkan-daftar-pengguna-tidak-hadir)
- [Integrasi Mobile](#integrasi-mobile)

## Endpoint API

| Method | Endpoint | Deskripsi |
|--------|----------|-----------|
| GET | `/api/admin/attendance/status` | Mendapatkan status absensi semua pengguna |
| GET | `/api/admin/attendance/missing` | Mendapatkan daftar pengguna tidak hadir |

## Mendapatkan Status Absensi Semua Pengguna

Endpoint ini digunakan untuk mendapatkan status absensi semua pengguna pada tanggal tertentu.

### Request
```http
GET /api/admin/attendance/status?date={date}
Authorization: Bearer {token}
```

### Response
```json
{
  "attendance_status": [
    {
      "user_id": "int",
      "name": "string",
      "status": "present|sick|leave|absent|permit",
      "check_in": "time|null",
      "check_out": "time|null",
      "activity_filled": "boolean"
    }
  ]
}
```

### Query Parameter
- `date`: Tanggal untuk melihat status absensi (format: YYYY-MM-DD)

### Deskripsi Field
- `user_id`: ID pengguna
- `name`: Nama pengguna
- `status`: Status kehadiran
- `check_in`: Waktu check-in
- `check_out`: Waktu check-out
- `activity_filled`: Status apakah aktivitas sudah diisi

## Mendapatkan Daftar Pengguna Tidak Hadir

Endpoint ini digunakan untuk mendapatkan daftar pengguna yang tidak hadir pada tanggal tertentu.

### Request
```http
GET /api/admin/attendance/missing?date={date}
Authorization: Bearer {token}
```

### Response
```json
{
  "missing_attendance": [
    {
      "user_id": "int",
      "name": "string",
      "status": "sick|leave|absent|permit"
    }
  ]
}
```

### Query Parameter
- `date`: Tanggal untuk melihat pengguna tidak hadir (format: YYYY-MM-DD)

### Deskripsi Field
- `user_id`: ID pengguna
- `name`: Nama pengguna
- `status`: Status ketidakhadiran

## Integrasi Mobile

### Validasi Role Admin
1. Aplikasi mobile harus memeriksa role pengguna saat login
2. Jika role adalah admin, tampilkan bottom navigation khusus admin
3. Jika bukan admin, sembunyikan fitur-fitur admin

### Tampilan Status Absensi
- Tampilkan daftar pengguna dengan status absensi masing-masing
- Gunakan warna atau ikon untuk membedakan status kehadiran
- Tampilkan informasi check-in dan check-out
- Tandai pengguna yang belum mengisi aktivitas

### Tampilan Pengguna Tidak Hadir
- Tampilkan daftar pengguna yang tidak hadir dengan statusnya
- Gunakan highlight untuk menarik perhatian
- Tampilkan alasan ketidakhadiran (sakit, izin, tanpa keterangan, cuti)

### Pemilihan Tanggal
- Tambahkan kontrol untuk memilih tanggal yang ingin dilihat
- Tampilkan data sesuai dengan tanggal yang dipilih
- Default tampilkan data untuk hari ini

### Filtering dan Sorting
- Tambahkan fitur filter berdasarkan status kehadiran
- Tambahkan fitur sorting berdasarkan nama atau status
- Tambahkan fitur pencarian untuk menemukan pengguna tertentu