import {PermissionType} from "@/interfaces/permissions";
import {User, Type, userTypes} from "@/interfaces/user";
import axios from "axios";

export function checkAccess(user: User, types: Type[], permissions?: PermissionType[], permission?: PermissionType) {
	if (!user) {
		return false;
	}

	// if(user.type === '') {
	if (!user.type) {
		return false;
	}

	if (types.length === 0) {
		return false;
	}

	if (!types.includes(user.type)) {
		return false;
	}

	// we may not want a permission check as most screens dont even havr a specific permission
	if (permission) {
		// this works more like a blacklist
		// therefore if we don't find the permission here, he can't do it
		if (!(permissions || []).includes(permission)) {
			return false;
		}
	}

	return true;
}

export function getTypesOfUser(types: Type[]) {
	// basicly generate a list of all types except the excluded ones
	return userTypes.filter((userType) => {
		return !types.includes(userType);
	});
}
