📐 Class Diagram — IT Helpdesk System

RSUD Dr. R. Sosodoro Djatikoesoemo | Native PHP Application

classDiagram
    direction LR

    class Users {
        +int user_id PK
        +varchar username UNIQUE
        +varchar password
        +varchar nama
        +enum role
        +varchar unit_kerja
        +timestamp created_at
        +timestamp updated_at
        ──────────────────
        +login()
        +logout()
        +buatTiket()
        +konfirmasiTiket()
        +ubahProfil()
        +ubahPassword()
    }

    class Categories {
        +int kategori_id PK
        +varchar nama_kategori
        ──────────────────
        +tambah()
        +ubah()
        +hapus()
    }

    class Tickets {
        +int tiket_id PK
        +int user_id FK
        +int kategori_id FK
        +int teknisi_id FK
        +int admin_id FK
        +varchar judul
        +text deskripsi
        +varchar lokasi
        +varchar foto_bukti
        +text catatan_teknisi
        +text penjelasan_kerusakan
        +varchar foto_penyelesaian
        +enum status
        +text alasan_tolak
        +datetime tanggal_buat
        +datetime tanggal_selesai
        +datetime tanggal_update
        ──────────────────
        +simpanTiket()
        +ubahStatus()
        +assignTeknisi()
        +ambilTiket()
        +konfirmasiTiket()
    }

    class Ticket_logs {
        +int log_id PK
        +int tiket_id FK
        +int user_id FK
        +varchar aksi
        +varchar status_lama
        +varchar status_baru
        +text keterangan
        +timestamp created_at
        ──────────────────
        +simpanLog()
    }

    Users "1" --> "*" Tickets : pelapor\n(user_id)
    Users "1" --> "*" Tickets : teknisi\n(teknisi_id)
    Users "1" --> "*" Tickets : admin\n(admin_id)
    Categories "1" --> "*" Tickets : kategori\n(kategori_id)
    Tickets "1" --> "*" Ticket_logs : riwayat\n(tiket_id)
    Users "1" --> "*" Ticket_logs : aktor\n(user_id)
        

Keterangan

PK = Primary Key
FK = Foreign Key
1 → * = One to Many
ENUM role = admin | teknisi | user
ENUM status = Baru | Terverifikasi | Diproses | Menunggu Konfirmasi | Selesai | Ditolak