130 lines
4.2 KiB
TypeScript
130 lines
4.2 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,
|
|
}
|
|
}
|
|
}
|
|
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,
|
|
}
|
|
}
|
|
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,
|
|
group: {
|
|
id: runners[i].group.id,
|
|
name: runners[i].group.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; |