package sfcrmappservice

import (
	_ "embed"
	"encoding/json"
	"errors"

	semantic "github.com/pingcap-inc/nexuscrm-contract/pkg/runtime/applicationnavigationv1"
	common "github.com/pingcap-inc/nexuscrm-contract/pkg/runtime/commonv1"
)

// Generated from the L1 frontend's registered page declarations. This is a
// release-owned serving projection, never an authoring or permission authority.
//
//go:embed navigation_pages.json
var navigationPagesJSON []byte

func registeredNavigationPages() (map[string]string, error) {
	var pages map[string]string
	if err := json.Unmarshal(navigationPagesJSON, &pages); err != nil {
		return nil, errors.New("invalid registered navigation pages")
	}
	return pages, nil
}

func validateApplicationNavigationTargets(items []semantic.Item) error {
	for _, item := range items {
		if resource := item.Target.Resource; resource != nil {
			if resource.ResourceID != "" && resource.ResourceType != "Dashboard" {
				return &common.Failure{Category: common.FailureInvalidRequest}
			}
		}
	}
	return nil
}
