package tpl
import (
	"html/template"
	"net/http"
	systemv1 "management/internal/erpserver/biz/v1/system"
	"management/internal/pkg/session"
)
type Renderer interface {
	HTML(w http.ResponseWriter, req *http.Request, name string, data map[string]any)
	JSON(w http.ResponseWriter, data any)
	JSONF(w http.ResponseWriter, success bool, message string)
	JSONOK(w http.ResponseWriter, message string)
	JSONERR(w http.ResponseWriter, message string)
}
type render struct {
	session   session.ISession
	config    *TemplateConfig
	templates map[string]*template.Template
	menuBiz systemv1.MenuBiz
}
func New(session session.ISession, menuBiz systemv1.MenuBiz) (Renderer, error) {
	render := &render{
		session: session,
		menuBiz: menuBiz,
		config: &TemplateConfig{
			Root:      ".",
			Extension: ".tmpl",
			Layout:    "base",
			Partial:   "partial",
		},
	}
	templates, err := render.createTemplateCache()
	if err != nil {
		return nil, err
	}
	render.templates = templates
	return render, nil
}