/ src / api / gradebook.ts
gradebook.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  import { decodeGradeBook } from "~/decoders/gradebook";
 7  import { GradeBook } from "~/models/gradebook";
 8  
 9  export const gradebook = async (session: SessionHandle, period: Period): Promise<GradeBook> => {
10    const properties = apiProperties(session);
11  
12    period = {...period, kind: 2};
13  
14    const request = new RequestFN(session, "PageBulletins", {
15      [properties.data]: {
16        classe: {},
17        eleve: {},
18        periode: encodePeriod(period)
19      },
20      [properties.signature]: { onglet: TabLocation.Gradebook }
21    });
22  
23    const response = await request.send();
24    return await decodeGradeBook(session, period, response.data[properties.data]);
25  };