/**
 * Permisos de pedimentos — códigos `pedimentos_mgmt.*` (seed / API).
 *
 * - **Ver listado:** `userHasPermission` (incluye comodín de rol Keycloak `admin` como en otras pantallas).
 * - **Crear / editar / borrar (mutaciones):** solo códigos en `user.permissions` (tras `syncCompanyPermissions`).
 *
 * **Alta de pedimento (`Nuevo` / `/edit/new`):** requiere `pedimentos_mgmt.create`.
 */
import type { User } from '$lib/auth';
import { userHasPermission } from '$lib/auth';

function hasAssignedCode(user: User | null, code: string): boolean {
	if (!user) return false;
	return user.permissions.includes(code);
}

export function canViewPedimentosList(user: User | null): boolean {
	return userHasPermission(user, 'pedimentos_mgmt.view');
}

/** Permiso de API/rol para crear pedimento. */
export function canCreatePedimento(user: User | null): boolean {
	return hasAssignedCode(user, 'pedimentos_mgmt.create');
}

export function canEditPedimento(user: User | null): boolean {
	return hasAssignedCode(user, 'pedimentos_mgmt.edit');
}

export function canDeletePedimento(user: User | null): boolean {
	return hasAssignedCode(user, 'pedimentos_mgmt.delete');
}

/** Botón "Nuevo Pedimento" y navegación a `/edit/new` — requiere permiso create. */
export function canOpenNuevoPedimentoForm(user: User | null): boolean {
	return canCreatePedimento(user);
}

/** Pantalla de alta (`/edit/new`) o edición. */
export function canAccessPedimentoEditorPage(user: User | null, isCreate: boolean): boolean {
	return isCreate ? canCreatePedimento(user) : canEditPedimento(user);
}
