/* eslint-disable @typescript-eslint/no-unused-vars */
import {EgovUser, Microservice} from "../models/EgovUser";
import Groups from "../models/Groups";
import Unit from '../models/Unit'
import Institute from "../models/Institute";
import {EmergencyPassword} from "../models/Settings/EmergencyPassword";
import {instance} from "./axios";

interface LoginData {
	message: string;
	user: EgovUser;
	translations: any;
	settings:{
		disable_login:{
			message:string
			status: 0 |1
		}
	}
}

interface LoginCredentials {
	email: string;
	password: string;
}

interface Ldapemail {
	email: string;
}

export function CSRFToken() {
	return instance.get("sanctum/csrf-cookie",{
		withCache: false
	});
}

export async function login(credentials: LoginCredentials) {
	return instance.post<LoginData>("api/login", credentials);
}

export function logout() {
	return instance.post<any>("api/logout");
}

export function ldapexist(credentials: Ldapemail) {
	return instance.post("api/exists-in-catalog", credentials);
}

export function checkAuth() {
	return instance.get("api/session",{
		withCache: false
	});
}

export function updateQuickAccess(newQuickAccess: string[]) {
	return instance.post("api/save-quick-access",{
		'quickAccess': newQuickAccess
	});
}

export function updatePersonalNote(text: string) {
	return instance.post("api/personal-note/save",{
		'text': text
	});
}

export function getPersonalNote(){
	return instance.get("api/personal-note", {
		withCache: false
	});
}

export function getSettings(){
	return instance.get("api/settings", );
}

export function getNotifications(){
	return instance.get("api/unread-notifications");
}

export function getUnits(){
	return instance.get<Unit[]>("api/user-unit-list");
}

export function getGroups(){
	return instance.get<Groups>('api/user-research-group-list')
}

export function getInstitutes(){

	return instance.get<Institute[]>('api/user-institute-list')
}

export function getEvaluations(){
	return instance.get('api/riview/v1/evaluation-period?type=all')
}

export function uploadImage(formData:any){
	return instance.post('api/upload/profile/picture', formData, {
		headers: {
			"Content-Type": "multipart/form-data",
		},
	})
}

export function getProfilePicture(){
	return instance.get('api/show/profile/picture',{responseType: 'blob'})
}

export async function getSecondaryCode(body: EmergencyPassword) {
    return instance.post("api/set/secondary/password", {...body});
}

export function getModuleRules(role: string, module:string){
	return instance.get('api/module/rules',{
		params:{
			role: role,
			module: module
		}
	})
}

export function getOnBehalf(ms:Microservice){
	return instance.get(`api/on-behalf/${ms}`)
}



