refactor(pdfgeneration): Switched contract generation over to new document-server
All checks were successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
Nicolai Ort 2024-12-17 17:19:20 +01:00
parent e23098410c
commit f99b7f4bb8
Signed by: niggl
GPG Key ID: 13AFA55AF62F269F
2 changed files with 62 additions and 123 deletions

View File

@ -7,7 +7,7 @@ class DocumentServer {
this.apiKey = apiKey; this.apiKey = apiKey;
} }
async generateCards(cards: any[], locale: string, filename: string) { async generateCards(cards: any[], locale: string) {
const generateCards = new Array<any>(); const generateCards = new Array<any>();
for (let i = 0; i < cards.length; i++) { for (let i = 0; i < cards.length; i++) {
@ -44,6 +44,40 @@ class DocumentServer {
const blob = await response.blob(); const blob = await response.blob();
return blob; return blob;
} }
async generateContracts(runners: any[], locale: string) {
const generateRunners = new Array<any>();
for (let i = 0; i < runners.length; i++) {
console.log(runners[i])
const card = {
id: runners[i].id,
first_name: runners[i].firstname,
middle_name: runners[i].middlename,
last_name: runners[i].lastname,
group: {
id: runners[i].group.id,
name: runners[i].group.name,
}
}
generateRunners.push(card)
}
const response = await fetch(`${this.baseUrl}/v1/pdfs/contracts?key=${this.apiKey}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
locale,
runners: generateRunners,
}),
});
const blob = await response.blob();
return blob;
}
} }
export default DocumentServer; export default DocumentServer;

View File

@ -4,10 +4,12 @@
RunnerOrganizationService, RunnerOrganizationService,
RunnerTeamService, RunnerTeamService,
} from "@odit/lfk-client-js"; } from "@odit/lfk-client-js";
import DocumentServer from "./DocumentServer";
import { init } from "@paralleldrive/cuid2"; import { init } from "@paralleldrive/cuid2";
import toast from "svelte-french-toast"; import toast from "svelte-french-toast";
const createId = init({ length: 10, fingerprint: "lfk-frontend" }); const createId = init({ length: 10, fingerprint: "lfk-frontend" });
const documentServer = new DocumentServer(config.baseurl_documentserver,config.documentserver_key);
export let sponsoring_contracts_show = false; export let sponsoring_contracts_show = false;
export let generate_runners = []; export let generate_runners = [];
@ -34,6 +36,17 @@
generateRunnerContracts(locale); generateRunnerContracts(locale);
} }
} }
function download (blob, fileName){
const url = window.URL.createObjectURL(blob);
let a = document.createElement("a");
a.href = url;
a.download = fileName;
document.body.appendChild(a);
a.click();
a.remove();
toast.dismiss();
toast($_("pdf-successfully-generated"));
}
async function generateTeamContracts(locale) { async function generateTeamContracts(locale) {
toast.loading($_("generating-pdfs")); toast.loading($_("generating-pdfs"));
@ -43,38 +56,11 @@
const runners = await RunnerTeamService.runnerTeamControllerGetRunners( const runners = await RunnerTeamService.runnerTeamControllerGetRunners(
t.id t.id
); );
fetch( documentServer.generateContracts(runners, locale)
`${config.baseurl_documentserver}/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(runners),
}
)
.then((response) => {
if (response.status != "200") {
toast.dismiss();
toast.error($_("pdf-generation-failed"));
} else {
return response.blob();
}
})
.then((blob) => { .then((blob) => {
const url = window.URL.createObjectURL(blob); download(blob, `${$_("sponsorings")}_${
let a = document.createElement("a");
a.href = url;
a.download = `${$_("sponsorings")}_${
t.name t.name
}-${locale}-${createId()}.pdf`; }-${locale}-${createId()}.pdf`)
document.body.appendChild(a);
a.click();
a.remove();
if (count === generate_teams.length) {
toast.dismiss();
toast.success($_("pdfs-successfully-generated"));
}
}) })
.catch((err) => {}); .catch((err) => {});
} }
@ -91,38 +77,11 @@
o.id, o.id,
true true
); );
await fetch( await documentServer.generateContracts(runners, locale)
`${config.baseurl_documentserver}/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(runners),
}
)
.then((response) => {
if (response.status != "200") {
toast.dismiss();
toast.error($_("pdf-generation-failed"));
} else {
return response.blob();
}
})
.then((blob) => { .then((blob) => {
const url = window.URL.createObjectURL(blob); download(blob, `${$_("sponsorings")}_${
let a = document.createElement("a");
a.href = url;
a.download = `${$_("sponsorings")}_${
o.name o.name
}_direct-${locale}-${createId()}.pdf`; }_direct-${locale}-${createId()}.pdf`)
document.body.appendChild(a);
a.click();
a.remove();
if (count === o.teams.length && count_orgs === generate_orgs.length) {
toast.dismiss();
toast.success($_("pdfs-successfully-generated"));
}
}) })
.catch((err) => {}); .catch((err) => {});
for (const t of o.teams) { for (const t of o.teams) {
@ -130,41 +89,11 @@
let runners = await RunnerTeamService.runnerTeamControllerGetRunners( let runners = await RunnerTeamService.runnerTeamControllerGetRunners(
t.id t.id
); );
await fetch( await documentServer.generateContracts(runners, locale)
`${config.baseurl_documentserver}/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(runners),
}
)
.then((response) => {
if (response.status != "200") {
toast.dismiss();
toast.error($_("pdf-generation-failed"));
} else {
return response.blob();
}
})
.then((blob) => { .then((blob) => {
const url = window.URL.createObjectURL(blob); download(blob, `${$_("sponsorings")}_${o.name}_${
let a = document.createElement("a");
a.href = url;
a.download = `${$_("sponsorings")}_${o.name}_${
t.name t.name
}-${locale}-${createId()}.pdf`; }-${locale}-${createId()}.pdf`)
document.body.appendChild(a);
a.click();
a.remove();
if (
count === o.teams.length &&
count_orgs === generate_orgs.length
) {
toast.dismiss();
toast($_("pdfs-successfully-generated"));
}
}) })
.catch((err) => {}); .catch((err) => {});
} }
@ -173,39 +102,15 @@
function generateRunnerContracts(locale) { function generateRunnerContracts(locale) {
toast.loading($_("generating-pdf")); toast.loading($_("generating-pdf"));
fetch( documentServer.generateContracts(generate_runners, locale)
`${config.baseurl_documentserver}/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(generate_runners),
}
)
.then((response) => {
if (response.status != "200") {
toast.dismiss();
toast.error($_("pdf-generation-failed"));
} else {
return response.blob();
}
})
.then((blob) => { .then((blob) => {
const url = window.URL.createObjectURL(blob); let fileName = `${$_("sponsorings")}-${locale}-${createId()}.pdf`
let a = document.createElement("a");
a.href = url;
if (generate_runners.length == 1) { if (generate_runners.length == 1) {
a.download = `${$_("sponsorings")}_${generate_runners[0].firstname}_${ fileName= `${$_("sponsorings")}_${generate_runners[0].firstname}_${
generate_runners[0].lastname generate_runners[0].lastname
}-${locale}-${createId()}.pdf`; }-${locale}-${createId()}.pdf`;
} }
a.download = `${$_("sponsorings")}-${locale}-${createId()}.pdf`; download(blob, fileName);
document.body.appendChild(a);
a.click();
a.remove();
toast.dismiss();
toast($_("pdf-successfully-generated"));
}) })
.catch((err) => { .catch((err) => {
console.error(err); console.error(err);