package elinps

import (
	"html/template"
	"log/slog"
	"net/http"

	"e-li.nps/internal/contratos"
)

type TemplateRenderer struct {
	t *template.Template
}

func NewTemplateRenderer(t *template.Template) *TemplateRenderer { return &TemplateRenderer{t: t} }

func (r *TemplateRenderer) Render(w http.ResponseWriter, name string, data any) {
	if err := r.t.ExecuteTemplate(w, name, data); err != nil {
		// Não expomos detalhes do erro para o usuário (pode conter paths/etc).
		// Mas registramos para depuração.
		slog.Error("erro ao renderizar template", "template", name, "err", err)
		w.WriteHeader(http.StatusInternalServerError)
		w.Write([]byte("erro ao renderizar"))
		return
	}
}

// Alias para manter as chamadas concisas dentro do pacote elinps.
type FormPageData = contratos.FormPageData
