1
1
import { LocalAccount } from "@/stores/account/types" ;
2
- import { Grade } from "pawnote" ;
3
- import { AverageOverview } from "../shared/Grade" ;
2
+ import {
3
+ type AverageOverview ,
4
+ type Grade
5
+ } from "@/services/shared/Grade" ;
4
6
import uuid from "@/utils/uuid-v4" ;
5
7
6
- export const saveIUTLanGrades = async ( account : LocalAccount ) => {
8
+ export const saveIUTLanGrades = async ( account : LocalAccount ) : Promise < {
9
+ grades : Grade [ ] ;
10
+ averages : AverageOverview ;
11
+ } > => {
7
12
try {
13
+ // Il faudrait peut-être penser à typer cette partie, tous les types sont any :(
8
14
const scodocData = account . identityProvider . rawData ;
9
- const matieres = scodocData [ "relevé" ] . ressources ;
15
+ const matieres = ( scodocData [ "relevé" ] as any ) . ressources ;
10
16
11
17
const gradesList : Grade [ ] = [ ] ;
12
18
const averages : AverageOverview = {
@@ -30,8 +36,8 @@ export const saveIUTLanGrades = async (account: LocalAccount) => {
30
36
name : subjectName ,
31
37
} ;
32
38
33
- const grades : Grade [ ] = matiere . evaluations . map ( ( note ) => {
34
- const grade = {
39
+ const grades : Grade [ ] = matiere . evaluations . map ( ( note : any ) => {
40
+ const grade : Grade = {
35
41
student : {
36
42
value : parseInt ( note . note . value ) ,
37
43
disabled : isNaN ( parseInt ( note . note . value ) ) ,
@@ -54,16 +60,11 @@ export const saveIUTLanGrades = async (account: LocalAccount) => {
54
60
value : 20 ,
55
61
disabled : false ,
56
62
} ,
57
- defaultOutOf : 20 ,
58
63
description : note . description ,
59
64
timestamp : new Date ( note . date ) . getTime ( ) ,
60
- subject : subject ,
61
65
coefficient : parseInt ( note . coef ) ,
62
- isOutOf20 : true ,
63
-
64
66
isBonus : false ,
65
67
isOptional : false ,
66
-
67
68
subjectName : subject . name ,
68
69
} ;
69
70
@@ -72,10 +73,10 @@ export const saveIUTLanGrades = async (account: LocalAccount) => {
72
73
return grade ;
73
74
} ) ;
74
75
75
- const average = grades . reduce ( ( acc , grade ) => acc + grade . student . value , 0 ) / grades . length ;
76
- const min = grades . reduce ( ( acc , grade ) => Math . min ( acc , grade . min . value ) , 20 ) ;
77
- const max = grades . reduce ( ( acc , grade ) => Math . max ( acc , grade . max . value ) , 0 ) ;
78
- const classAverage = grades . reduce ( ( acc , grade ) => acc + grade . average . value , 0 ) / grades . length ;
76
+ const average = grades . filter ( grade => grade . student . value != null ) . reduce ( ( acc , grade ) => acc + ( grade . student . value as number ) , 0 ) / grades . length ;
77
+ const min = grades . filter ( grade => grade . min . value != null ) . reduce ( ( acc , grade ) => Math . min ( acc , ( grade . min . value as number ) ) , 20 ) ;
78
+ const max = grades . filter ( grade => grade . max . value != null ) . reduce ( ( acc , grade ) => Math . max ( acc , ( grade . max . value as number ) ) , 0 ) ;
79
+ const classAverage = grades . filter ( grade => grade . average . value != null ) . reduce ( ( acc , grade ) => acc + ( grade . average . value as number ) , 0 ) / grades . length ;
79
80
80
81
81
82
if ( grades . length === 0 ) {
@@ -112,5 +113,19 @@ export const saveIUTLanGrades = async (account: LocalAccount) => {
112
113
}
113
114
catch ( e ) {
114
115
console . error ( e ) ;
116
+ return {
117
+ grades : [ ] ,
118
+ averages : {
119
+ classOverall : {
120
+ value : null ,
121
+ disabled : true ,
122
+ } ,
123
+ overall : {
124
+ value : null ,
125
+ disabled : true ,
126
+ } ,
127
+ subjects : [ ]
128
+ }
129
+ } ;
115
130
}
116
- } ;
131
+ } ;
0 commit comments