import uuid
from app.models.unit import Unit
from sqlalchemy.orm import Session

from app.models.status import Status
from app.models.keterangan import Keterangan


def seed_pengajuan_master(db: Session):
    # === UNITS ===
    UNITS = [
        ("TATA USAHA & SDM", "tu"),
        ("Administrator", "admin"),
        ("KEGAWATDARURATAN", "igd"),
        ("KEPERAWATAN & RAWAT JALAN", "rajal"),
        ("PENUNJANG MEDIS", "medis"),
        ("MFK & UMUM", "mfk"),
        ("KEUANGAN", "keuangan"),
        ("OPERASIONAL", "operasional"),
    ]

    for name, slug in UNITS:
        exists = db.query(Unit).filter(Unit.slug == slug).first()
        if exists:
            continue

        db.add(Unit(name=name, slug=slug))

    # === STATUS ===
    statuses = [
        ("Diajukan", "diajukan", 1),
        ("Disetujui Pengganti", "disetujui_pengganti", 2),
        ("Disetujui Atasan", "disetujui_atasan", 3),
        ("Diketahui Manager", "disetujui_manager", 4),
        ("Diketahui Kepala TU", "disetujui_tu", 5),
        ("Diketahui Kepala Keuangan", "disetujui_keuangan", 5),
        ("Ditolak Pengganti", "ditolak_pengganti", 6),
        ("Ditolak Atasan", "ditolak_atasan", 7),
        ("Ditolak Manager Operasional", "ditolak_manager", 8),
        ("Ditolak Kepala TU", "ditolak_tu", 9),
        ("Ditolak Kepala Keuangan", "ditolak_keuangan", 9),
        ("Pengajuan Dibatalkan", "dibatalkan", 10),
    ]

    for name, slug, level in statuses:
        exists = db.query(Status).filter(Status.slug == slug).first()
        if exists:
            continue

        db.add(Status(name=name, slug=slug, level=level))

    # === KETERANGAN ===
    keterangans = [
        "Dinas Luar",
        "Sakit",
        "Pulang Kerja Lebih Awal",
        "Keperluan Lain di Jam Kerja",
        "Sebab Lainnya",
    ]

    for name in keterangans:
        exists = db.query(Keterangan).filter(Keterangan.name == name).first()
        if exists:
            continue

        db.add(
            Keterangan(
                id=str(uuid.uuid4()),
                name=name,
            )
        )

    db.commit()
