/ src / api / grades-overview.ts
grades-overview.ts
 1  import { RequestFN } from "~/core/request-function";
 2  import { decodeGradesOverview } from "~/decoders/grades-overview";
 3  import { encodePeriod } from "~/encoders/period";
 4  import { type Period, type GradesOverview, type SessionHandle, TabLocation } from "~/models";
 5  import { apiProperties } from "./private/api-properties";
 6  
 7  /**
 8   * Get grades overview for a specific period.
 9   * Including student's grades with averages and the global averages
10   */
11  export const gradesOverview = async (session: SessionHandle, period: Period): Promise<GradesOverview> => {
12    const properties = apiProperties(session);
13  
14    const request = new RequestFN(session, "DernieresNotes", {
15      [properties.signature]: { onglet: TabLocation.Grades },
16  
17      [properties.data]: {
18        Periode: encodePeriod(period)
19      }
20    });
21  
22    const response = await request.send();
23    return decodeGradesOverview(response.data[properties.data], session);
24  };