diff --git a/src/components/pdf_generation/DocumentServer.ts b/src/components/pdf_generation/DocumentServer.ts index 71b56458..72a2cc90 100644 --- a/src/components/pdf_generation/DocumentServer.ts +++ b/src/components/pdf_generation/DocumentServer.ts @@ -7,7 +7,7 @@ class DocumentServer { this.apiKey = apiKey; } - async generateCards(cards: any[], locale: string, filename: string) { + async generateCards(cards: any[], locale: string) { const generateCards = new Array(); for (let i = 0; i < cards.length; i++) { @@ -44,6 +44,40 @@ class DocumentServer { const blob = await response.blob(); return blob; } + + async generateContracts(runners: any[], locale: string) { + const generateRunners = new Array(); + + 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; \ No newline at end of file diff --git a/src/components/pdf_generation/GenerateSponsoringContracts.svelte b/src/components/pdf_generation/GenerateSponsoringContracts.svelte index 33aeb425..683d4ee6 100644 --- a/src/components/pdf_generation/GenerateSponsoringContracts.svelte +++ b/src/components/pdf_generation/GenerateSponsoringContracts.svelte @@ -4,10 +4,12 @@ RunnerOrganizationService, RunnerTeamService, } from "@odit/lfk-client-js"; - + import DocumentServer from "./DocumentServer"; import { init } from "@paralleldrive/cuid2"; import toast from "svelte-french-toast"; 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 generate_runners = []; @@ -34,6 +36,17 @@ 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) { toast.loading($_("generating-pdfs")); @@ -43,38 +56,11 @@ const runners = await RunnerTeamService.runnerTeamControllerGetRunners( t.id ); - fetch( - `${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(); - } - }) + documentServer.generateContracts(runners, locale) .then((blob) => { - const url = window.URL.createObjectURL(blob); - let a = document.createElement("a"); - a.href = url; - a.download = `${$_("sponsorings")}_${ + download(blob, `${$_("sponsorings")}_${ t.name - }-${locale}-${createId()}.pdf`; - document.body.appendChild(a); - a.click(); - a.remove(); - if (count === generate_teams.length) { - toast.dismiss(); - toast.success($_("pdfs-successfully-generated")); - } + }-${locale}-${createId()}.pdf`) }) .catch((err) => {}); } @@ -91,38 +77,11 @@ o.id, true ); - await fetch( - `${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(); - } - }) + await documentServer.generateContracts(runners, locale) .then((blob) => { - const url = window.URL.createObjectURL(blob); - let a = document.createElement("a"); - a.href = url; - a.download = `${$_("sponsorings")}_${ + download(blob, `${$_("sponsorings")}_${ o.name - }_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")); - } + }_direct-${locale}-${createId()}.pdf`) }) .catch((err) => {}); for (const t of o.teams) { @@ -130,41 +89,11 @@ let runners = await RunnerTeamService.runnerTeamControllerGetRunners( t.id ); - await fetch( - `${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(); - } - }) + await documentServer.generateContracts(runners, locale) .then((blob) => { - const url = window.URL.createObjectURL(blob); - let a = document.createElement("a"); - a.href = url; - a.download = `${$_("sponsorings")}_${o.name}_${ + download(blob, `${$_("sponsorings")}_${o.name}_${ t.name - }-${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")); - } + }-${locale}-${createId()}.pdf`) }) .catch((err) => {}); } @@ -173,39 +102,15 @@ function generateRunnerContracts(locale) { toast.loading($_("generating-pdf")); - fetch( - `${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(); - } - }) + documentServer.generateContracts(generate_runners, locale) .then((blob) => { - const url = window.URL.createObjectURL(blob); - let a = document.createElement("a"); - a.href = url; + let fileName = `${$_("sponsorings")}-${locale}-${createId()}.pdf` if (generate_runners.length == 1) { - a.download = `${$_("sponsorings")}_${generate_runners[0].firstname}_${ + fileName= `${$_("sponsorings")}_${generate_runners[0].firstname}_${ generate_runners[0].lastname }-${locale}-${createId()}.pdf`; } - a.download = `${$_("sponsorings")}-${locale}-${createId()}.pdf`; - document.body.appendChild(a); - a.click(); - a.remove(); - toast.dismiss(); - toast($_("pdf-successfully-generated")); + download(blob, fileName); }) .catch((err) => { console.error(err);