feat(handlers): Implemented contracts generation

This commit is contained in:
2024-12-03 16:25:59 +01:00
parent e5f9eff54f
commit e9c28efd47
3 changed files with 78 additions and 34 deletions

View File

@@ -2,8 +2,11 @@ package handlers
import (
"log"
"slices"
"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"
)
@@ -22,6 +25,51 @@ func GenerateContract(c *fiber.Ctx) error {
"error": err.Error(),
})
}
log.Println(contract.Runners[0].Group.ParentGroup)
return c.SendString("Contract generated")
if !slices.Contains([]string{"en", "de"}, contract.Locale) {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"error": "Invalid locale",
})
}
var duplicates int = 2
var duplicatedRunners []models.Runner
for _, runner := range contract.Runners {
for i := 0; i < duplicates; i++ {
duplicatedRunners = append(duplicatedRunners, runner)
}
}
contract.Runners = duplicatedRunners
generator := services.DefaultTemplater{}
template, err := templates.GetTemplate(contract.Locale, "contract")
if err != nil {
log.Println(err)
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"error": "Template not found",
})
}
result, err := generator.Execute(template, &services.ContractTemplateOptions{
Runners: contract.Runners,
CurrencySymbol: "€",
Disclaimer: "This is a disclaimer",
ReceiptMinimumAmount: 10,
EventName: "Event name",
SponsoringHeader: templates.ImageSponsoringHeaderBase64,
})
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": err.Error(),
})
}
converter := services.GotenbergConverter{BaseUrl: "http://localhost:3001"}
pdf, err := converter.ToPdf(result, "a5", true)
if err != nil {
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"error": err.Error(),
})
}
c.Set(fiber.HeaderContentType, "application/pdf")
return c.Send(pdf)
}