package permissions

import (
	"context"

	"github.com/nexuscrm/shared/pkg/contract"
	"github.com/nexuscrm/shared/pkg/models"
)

// ContractFolderAccess exposes folder authorization through the neutral
// contract seam.
type ContractFolderAccess struct {
	service *FolderAccessService
}

func NewContractFolderAccess(service *FolderAccessService) *ContractFolderAccess {
	return &ContractFolderAccess{service: service}
}

func (a *ContractFolderAccess) CheckFolderAccess(ctx context.Context, user *models.UserSession, folderID string, required contract.FolderAccessLevel) bool {
	if a == nil || a.service == nil {
		return false
	}
	level := FolderAccessView
	if required == contract.FolderAccessManage {
		level = FolderAccessManage
	}
	return a.service.CheckAccess(ctx, user, folderID, level)
}
