import {Dayjs} from "dayjs";

export interface UserData {
    informed: boolean;
    afm: string,
    email: string
    firstname: string
    lastname: string
    father_name: string
    firstname_en: string
    lastname_en: string
    father_name_en?: string
    mobile_phone?: string
    amka: string
    work_relation_id: number,
    staff_category_id: number,
    education_category_id: number,
    unit_id: number,
    unit_category_id: number,
    department_id: number | null
    research_group_id: number | null
    building_id: number
    rank_id: number | null
    project_code?: string
    contract_end?: Dayjs | string
    contract_start?: Dayjs | string
    wrong_contract?: boolean

}


export type Step = "afm"
    | "afm_verified"
    | "afm_denied"
    | "afm_failed"
    | "dua_enabled"
    | "expired"
    | "dua_activation_pending"

type StepData<T> =
    T extends "afm" ? AfmData
        : T extends "afm_verified" ? AfmVerifiedData
            : T extends "afm_denied" ? AfmDeniedData :
                null

export interface AfmVerifiedData {
    firstname: string;
    lastname: string;
    father_name: string;
    firstname_en: string;
    lastname_en: string;
    father_name_en?: string;
    afm: string;
    email: string;
    work_relation_id: number
    unit_id: number
    unit_category_id: number
    department_id: number
    research_group_id: number
    education_category_id: number
    staff_category_id: number
    building_id?: number
    rank_id: number
    select_options: any
    project_code?: string
    contract_end?: string
    contract_start?: string
    wrong_contract?: boolean
    amka?: string
    mobile_phone?: string
}

export interface AfmData {
    partial_afm: string
    tries_remaining: 0 | 1 | 2 | 3
}

export interface AfmDeniedData {
    work_relation_id: number
    email: string
    select_options: any
}

export interface DuaActivateResponse<T extends Step> {
    step: T,
    step_data: StepData<T>
}
