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(); 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(); 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(); 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;