package bootstrap

import (
	_ "embed"
	"encoding/json"
	"fmt"
	"strings"

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

//go:embed standard_layouts.json
var standardLayoutsJSON []byte

// LoadStandardPageLayouts returns the platform-authored standard page-layout
// baselines shipped in the binary.
func LoadStandardPageLayouts() ([]models.PageLayout, error) {
	var layouts []models.PageLayout
	if err := json.Unmarshal(standardLayoutsJSON, &layouts); err != nil {
		return nil, fmt.Errorf("parse standard_layouts.json: %w", err)
	}
	return layouts, nil
}

// LoadStandardPageLayoutByObject returns the shipped baseline layout for one
// object when the platform authors one explicitly in standard_layouts.json.
func LoadStandardPageLayoutByObject(objectAPIName string) (*models.PageLayout, error) {
	layouts, err := LoadStandardPageLayouts()
	if err != nil {
		return nil, err
	}
	for i := range layouts {
		if strings.EqualFold(layouts[i].ObjectAPIName, objectAPIName) {
			layout := layouts[i]
			return &layout, nil
		}
	}
	return nil, nil
}
