152 lines
4.0 KiB
TypeScript
152 lines
4.0 KiB
TypeScript
class DocumentServer {
|
|
baseUrl: string;
|
|
apiKey: string;
|
|
|
|
constructor(baseUrl: string, apiKey: string) {
|
|
this.baseUrl = baseUrl;
|
|
this.apiKey = apiKey;
|
|
}
|
|
|
|
async generateCards(cards: any[], locale: string) {
|
|
const generateCards = new Array<any>();
|
|
|
|
for (let i = 0; i < cards.length; i++) {
|
|
const card = {
|
|
id: cards[i].id,
|
|
enabled: cards[i].enabled,
|
|
code: cards[i].code,
|
|
runner: {
|
|
id: cards[i]?.runner?.id,
|
|
first_name: cards[i]?.runner?.firstname,
|
|
middle_name: cards[i]?.runner?.middlename,
|
|
last_name: cards[i]?.runner?.lastname,
|
|
group: {
|
|
id: cards[i]?.runner?.group.id,
|
|
name: cards[i]?.runner?.group.name,
|
|
parent_group: {
|
|
id: cards[i]?.runner?.group?.parentGroup?.id,
|
|
name: cards[i]?.runner?.group?.parentGroup?.name,
|
|
},
|
|
},
|
|
},
|
|
};
|
|
generateCards.push(card);
|
|
}
|
|
|
|
const response = await fetch(
|
|
`${this.baseUrl}/v1/pdfs/cards?key=${this.apiKey}`,
|
|
{
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify({
|
|
locale,
|
|
cards: generateCards,
|
|
}),
|
|
},
|
|
);
|
|
|
|
const blob = await response.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,
|
|
parent_group: {
|
|
id: runners[i]?.group?.parentGroup?.id,
|
|
name: runners[i]?.group?.parentGroup?.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;
|
|
}
|
|
|
|
async generateCertificates(runners: any[], locale: string) {
|
|
const generateRunners = new Array<any>();
|
|
|
|
for (let i = 0; i < runners.length; i++) {
|
|
const certificate = {
|
|
id: runners[i].id,
|
|
first_name: runners[i].firstname,
|
|
middle_name: runners[i].middlename,
|
|
last_name: runners[i].lastname,
|
|
self_service_link: runners[i].selfserviceLink,
|
|
group: {
|
|
id: runners[i].group.id,
|
|
name: runners[i].group.name,
|
|
parent_group: {
|
|
id: runners[i]?.group?.parentGroup?.id,
|
|
name: runners[i]?.group?.parentGroup?.name,
|
|
},
|
|
},
|
|
distance: runners[i].distance,
|
|
distance_donations: runners[i].distanceDonations.map(
|
|
(distanceDonation: any) => {
|
|
return {
|
|
id: distanceDonation.id,
|
|
amount: distanceDonation.amount,
|
|
amount_per_distance: distanceDonation.amountPerDistance,
|
|
donor: {
|
|
id: distanceDonation.donor.id,
|
|
first_name: distanceDonation.donor.firstname,
|
|
middle_name: distanceDonation.donor.middlename,
|
|
last_name: distanceDonation.donor.lastname,
|
|
},
|
|
};
|
|
},
|
|
),
|
|
};
|
|
generateRunners.push(certificate);
|
|
}
|
|
|
|
const response = await fetch(
|
|
`${this.baseUrl}/v1/pdfs/certificates?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;
|