refactor(templates): Dynamic template loading
This commit is contained in:
		@@ -6,7 +6,6 @@ import (
 | 
			
		||||
 | 
			
		||||
	"git.odit.services/lfk/document-server/models"
 | 
			
		||||
	"git.odit.services/lfk/document-server/services"
 | 
			
		||||
	"git.odit.services/lfk/document-server/templates"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -32,7 +31,7 @@ func GenerateCard(c *fiber.Ctx) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	generator := services.DefaultTemplater{}
 | 
			
		||||
	templateString, err := templates.GetTemplate(cardRequest.Locale, "card")
 | 
			
		||||
	templateString, err := services.GetTemplate(cardRequest.Locale, "card")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Println(err)
 | 
			
		||||
		return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,6 @@ import (
 | 
			
		||||
 | 
			
		||||
	"git.odit.services/lfk/document-server/models"
 | 
			
		||||
	"git.odit.services/lfk/document-server/services"
 | 
			
		||||
	"git.odit.services/lfk/document-server/templates"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -32,7 +31,7 @@ func GenerateCertificate(c *fiber.Ctx) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	generator := services.DefaultTemplater{}
 | 
			
		||||
	templateString, err := templates.GetTemplate(certificateRequest.Locale, "certificate")
 | 
			
		||||
	templateString, err := services.GetTemplate(certificateRequest.Locale, "certificate")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Println(err)
 | 
			
		||||
		return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,6 @@ import (
 | 
			
		||||
 | 
			
		||||
	"git.odit.services/lfk/document-server/models"
 | 
			
		||||
	"git.odit.services/lfk/document-server/services"
 | 
			
		||||
	"git.odit.services/lfk/document-server/templates"
 | 
			
		||||
	"github.com/gofiber/fiber/v2"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -34,7 +33,7 @@ func GenerateContract(c *fiber.Ctx) error {
 | 
			
		||||
	contract.Runners = repeatRunnerArrayItems(contract.Runners, 2)
 | 
			
		||||
 | 
			
		||||
	generator := services.DefaultTemplater{}
 | 
			
		||||
	templateString, err := templates.GetTemplate(contract.Locale, "contract")
 | 
			
		||||
	templateString, err := services.GetTemplate(contract.Locale, "contract")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Println(err)
 | 
			
		||||
		return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
 | 
			
		||||
@@ -48,13 +47,15 @@ func GenerateContract(c *fiber.Ctx) error {
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	sponsoringHeader := services.GetImage("sponsoringheader")
 | 
			
		||||
 | 
			
		||||
	genConfig := &models.ContractTemplateOptions{
 | 
			
		||||
		Runners:              contract.Runners,
 | 
			
		||||
		CurrencySymbol:       "€",
 | 
			
		||||
		Disclaimer:           "This is a disclaimer",
 | 
			
		||||
		ReceiptMinimumAmount: 10,
 | 
			
		||||
		EventName:            "Event name",
 | 
			
		||||
		SponsoringHeader:     templates.ImageSponsoringHeaderBase64,
 | 
			
		||||
		SponsoringHeader:     sponsoringHeader,
 | 
			
		||||
		BarcodeFormat:        "ean13",
 | 
			
		||||
		BarcodePrefix:        "1",
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,7 +9,6 @@ import (
 | 
			
		||||
	"image/png"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"git.odit.services/lfk/document-server/templates"
 | 
			
		||||
	"github.com/boombuler/barcode"
 | 
			
		||||
	"github.com/boombuler/barcode/code128"
 | 
			
		||||
	"github.com/boombuler/barcode/ean"
 | 
			
		||||
@@ -88,7 +87,7 @@ func (t *DefaultTemplater) SelectSponsorImage(id int) (string, error) {
 | 
			
		||||
		"odit",
 | 
			
		||||
		"sparkasse",
 | 
			
		||||
	}
 | 
			
		||||
	return templates.GetImage(sponsors[id%len(sponsors)]), nil
 | 
			
		||||
	return GetImage(sponsors[id%len(sponsors)]), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func FormatUnit(unit string, locale string, amount int) (string, error) {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								services/templates.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								services/templates.go
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 19 KiB  | 
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 225 KiB  | 
@@ -1,68 +0,0 @@
 | 
			
		||||
package templates
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	_ "embed"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"log"
 | 
			
		||||
	"os"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//go:embed card/en.html
 | 
			
		||||
var CardTemplateEn string
 | 
			
		||||
 | 
			
		||||
//go:embed card/de.html
 | 
			
		||||
var CardTemplateDe string
 | 
			
		||||
 | 
			
		||||
//go:embed contract/en.html
 | 
			
		||||
var ContractTemplateEn string
 | 
			
		||||
 | 
			
		||||
//go:embed contract/de.html
 | 
			
		||||
var ContractTemplateDe string
 | 
			
		||||
 | 
			
		||||
//go:embed certificate/de.html
 | 
			
		||||
var CertificateTemplateDe string
 | 
			
		||||
 | 
			
		||||
//go:embed certificate/en.html
 | 
			
		||||
var CertificateTemplateEn string
 | 
			
		||||
 | 
			
		||||
//go:embed images/sponsoringheader.base64
 | 
			
		||||
var ImageSponsoringHeaderBase64 string
 | 
			
		||||
 | 
			
		||||
//go:embed images/error.base64
 | 
			
		||||
var ImageErrorBase64 string
 | 
			
		||||
 | 
			
		||||
func GetTemplate(locale, templateName string) (string, error) {
 | 
			
		||||
	switch templateName {
 | 
			
		||||
	case "card":
 | 
			
		||||
		switch locale {
 | 
			
		||||
		case "en":
 | 
			
		||||
			return CardTemplateEn, nil
 | 
			
		||||
		case "de":
 | 
			
		||||
			return CardTemplateDe, nil
 | 
			
		||||
		}
 | 
			
		||||
	case "contract":
 | 
			
		||||
		switch locale {
 | 
			
		||||
		case "en":
 | 
			
		||||
			return ContractTemplateEn, nil
 | 
			
		||||
		case "de":
 | 
			
		||||
			return ContractTemplateDe, nil
 | 
			
		||||
		}
 | 
			
		||||
	case "certificate":
 | 
			
		||||
		switch locale {
 | 
			
		||||
		case "en":
 | 
			
		||||
			return CertificateTemplateEn, nil
 | 
			
		||||
		case "de":
 | 
			
		||||
			return CertificateTemplateDe, nil
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return "", fmt.Errorf("template not found with name %s and locale %s", templateName, locale)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetImage(imageName string) string {
 | 
			
		||||
	content, err := os.ReadFile("static/images/" + imageName + ".base64")
 | 
			
		||||
	if content == nil || err != nil {
 | 
			
		||||
		log.Printf("error reading image %s: %v", imageName, err)
 | 
			
		||||
		return ImageErrorBase64
 | 
			
		||||
	}
 | 
			
		||||
	return string(content)
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user