/ src / api / gradebook-pdf.ts
gradebook-pdf.ts
 1  import { RequestFN } from "~/core/request-function";
 2  import { encodePeriod } from "~/encoders/period";
 3  import { type Period, type SessionHandle, TabLocation } from "~/models";
 4  import { apiProperties } from "./private/api-properties";
 5  
 6  /**
 7   * @param period - Period the grades report will be from.
 8   * @returns URL to download the PDF file.
 9   */
10  export const gradebookPDF = async (session: SessionHandle, period: Period): Promise<string> => {
11    const properties = apiProperties(session);
12  
13    const request = new RequestFN(session, "GenerationPDF", {
14      [properties.data]: {
15        avecCodeCompetences: false,
16        genreGenerationPDF: 2,
17  
18        options: { // defaults from PRONOTE
19          adapterHauteurService: false,
20          desEleves: false,
21          gererRectoVerso: false,
22          hauteurServiceMax: 15,
23          hauteurServiceMin: 10,
24          piedMonobloc: true,
25          portrait: true,
26          taillePolice: 6.5,
27          taillePoliceMin: 5,
28          taillePolicePied: 6.5,
29          taillePolicePiedMin: 5
30        },
31  
32        periode: encodePeriod(period)
33      },
34  
35      [properties.signature]: { onglet: TabLocation.Gradebook }
36    });
37  
38    const response = await request.send();
39    return session.information.url + "/" + encodeURI(response.data[properties.data].url.V);
40  };