import type { CompanyDbModel } from '../Pages/Companies/Components/CompaniesComponents.helper';
import type { UserModel } from '../Store/User/user-context.helper';

export const hasOwnerPermission = (
	company: CompanyDbModel | null | undefined,
	user: UserModel | null
) => {
	if (!company || !company.owner || !user || !user.cognito_username) return false;
	return company.owner?.cognito_username === user.cognito_username;
};

export const hasAdminPermission = (company: CompanyDbModel | null | undefined) => {
	console.log('cmpany in hasAdminPermission', company);
	if (!company || !company.permissions) return false;
	const permissions = ['admin', 'owner'];
	return permissions.includes(company?.permissions);
};

const hasEditPermission = (company: CompanyDbModel | null | undefined) => {
	if (!company || !company.permissions) return false;
	const permissions = ['editor', 'admin', 'owner'];
	return permissions.includes(company?.permissions);
};

export const getUserPermission = (
	company: CompanyDbModel | null | undefined,
	user: UserModel | null
) => {
	if (hasOwnerPermission(company, user)) {
		return 'Subscriber';
	}
	if (hasAdminPermission(company)) {
		return 'Admin';
	}
	if (hasEditPermission(company)) {
		return 'Editor';
	}
	return 'Read Only';
};

export const getInvitePermission = (activeInvitePermission: string) => {
	if (activeInvitePermission === 'owner') {
		return 'Subscriber';
	}
	if (activeInvitePermission === 'admin') {
		return 'Admin';
	}
	if (activeInvitePermission === 'editor') {
		return 'Editor';
	}
	return 'Read Only';
};

export default hasEditPermission;
