import { Department } from "./department";
import { RefLokasi } from "./ref-lokasi";
import { RefShiftKode } from "./ref-shift";
import { RefSKPDKode } from "./ref-skpd";

export interface User {
    id: number;
    name: string;
    username: string;
    email: string;
    avatar?: string;
    avatar_url?: string;
    department_id: number;
    department?: Department;
    phone_number: string;
    email_verified_at: string | null;
    two_factor_enabled?: boolean;
    created_at: string;
    updated_at: string;
    roles?: UserRole[];
    permissions?: string[];
    shift?: RefShiftKode;
    lokasi?: RefLokasi;
    skpdKode?: RefSKPDKode;
    [key: string]: unknown;
}

export interface UserRole {
    id: number;
    name: string;
    guard_name: string;
    permissions?: UserPermission[];
    created_at: string;
    updated_at: string;
}

export interface UserPermission {
    id: number;
    name: string;
    guard_name: string;
    roles?: UserRole[];
    created_at: string;
    updated_at: string;
}

export interface UserProps {
    title: string;
    resource: {
        data: User[];
        meta: MetaPagination;
    };
}

export type UserForm = {
    skpd_id: number | null;
    name: string;
    username: string;
    email: string;
    nip: string;
    telp: string;
    gender: string;
    address: string;
    ref_lokasi_id: number | null;
    ref_shift_kode_id: number | null;
    role: string;
    status: string;
};
