import {instance} from "./axios";
import {DuaActivateResponse} from "../models/DuaManagement/DuaActivate";

interface StepInfo {
    step: Step
    step_data: any
}

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

export async function getStepInfo(sig: string | null) {

    return instance.get<StepInfo>("api/activation/check-link", {
        params: {signature: sig},
    });
}

//validates the input the user gave for afm
export async function verifyAfm(sig: string | null, afm: string | null) {
    return instance.post<DuaActivateResponse<Step>>('api/activation/afm-verification', {
        signature: sig,
        afm: afm
    })
}

export async function updateUser(sig: string | null, body: any) {

    return instance.post<DuaActivateResponse<Step>>("api/activation/update/info", {
        signature: sig,
        ...body
    });
}

export async function newRequest(sig: string | null, body: any) {

    return instance.post<DuaActivateResponse<Step>>("api/activation/user/activation/request", {
        signature: sig,
        ...body
    });
}

export async function contractErrorCall(sig: string | null) {

    return instance.post<DuaActivateResponse<Step>>("api/activation/user/inform/wrong-contract", {
        signature: sig
    });
}

export async function refuseAfm(sig: string | null) {
    return instance.get<DuaActivateResponse<Step>>("api/activation/refuse", {
        params: {signature: sig},
    });
}

export async function duaUsersList(query: string | null) {
    return instance.get("api/users-list", {
        params: {search: query},
    });
}

export async function duaUsersListByUnit(unit_id: number) {
    return instance.get("api/users/byUnit", {
        params: {unit_id: unit_id},
    });
}


export async function duaUsersEmails(query: string = '') {
    return instance.get("api/users-email", {
        params: {search: query},
    });
}

export async function checkAfmForDua(afm: string) {
    return instance.post("api/find/contract", {
        afm: afm,
    });
}

export async function checkCreationLink(sig: string) {
    return instance.get("api/temp", {
        params: {signature: sig},
    });
}

export async function createDuaRequest(formData:any) {
    return instance.post("/api/create/account/request",{
        ...formData
    });
}

export async function createEmailRequest(formData:any) {
    return instance.post("api/create/emergency/form", formData);
}

export async function checkEmailCreationLink(sig:string) {
    return instance.get("api/tempEmergency", {
        params: {signature: sig},
    });
}

export async function getLookups() {
    return instance.get("/api/auto-activation/lookups");
}

