package api import ( "encoding/json" "errors" "srs.epita.fr/fic-server/libfic" "github.com/julienschmidt/httprouter" ) func init() { router.GET("/api/qa_exercices.json", apiHandler(getExerciceTested)) router.GET("/api/qa_mywork.json", apiHandler(getQAWork)) router.GET("/api/qa_myexercices.json", apiHandler(getQAView)) router.POST("/api/qa_my_exercices.json", apiHandler(addQAView)) router.GET("/api/qa_work.json", apiHandler(getQATodo)) router.POST("/api/qa_work.json", apiHandler(createQATodo)) } type exerciceTested map[int64]string func getExerciceTested(u QAUser, ps httprouter.Params, body []byte) (interface{}, error) { if team, err := fic.GetTeam(u.TeamId); err != nil { return nil, err } else if exercices, err := fic.GetExercices(); err != nil { return nil, err } else { ret := exerciceTested{} for _, exercice := range exercices { if team.HasAccess(exercice) { if ok, _ := team.HasSolved(exercice); ok { ret[exercice.Id] = "solved" } else if cnt, _ := team.CountTries(exercice); cnt > 0 { ret[exercice.Id] = "tried" } else { ret[exercice.Id] = "access" } } } return ret, nil } } func getQAView(u QAUser, ps httprouter.Params, body []byte) (interface{}, error) { if team, err := fic.GetTeam(u.TeamId); err != nil { return nil, err } else { return team.GetQAView() } } func getQAWork(u QAUser, ps httprouter.Params, body []byte) (interface{}, error) { if team, err := fic.GetTeam(u.TeamId); err != nil { return nil, err } else { return team.GetQAQueries() } } func getQATodo(u QAUser, ps httprouter.Params, body []byte) (interface{}, error) { if team, err := fic.GetTeam(u.TeamId); err != nil { return nil, err } else { return team.GetQATodo() } } func createQATodo(u QAUser, ps httprouter.Params, body []byte) (interface{}, error) { if u.User != "nemunaire" { return nil, errors.New("Restricted") } var ut fic.QATodo if err := json.Unmarshal(body, &ut); err != nil { return nil, err } if team, err := fic.GetTeam(ut.IdTeam); err != nil { return nil, err } else { return team.NewQATodo(ut.IdExercice) } } func addQAView(u QAUser, ps httprouter.Params, body []byte) (interface{}, error) { if u.User != "nemunaire" { return nil, errors.New("Restricted") } var ut fic.QATodo if err := json.Unmarshal(body, &ut); err != nil { return nil, err } if team, err := fic.GetTeam(ut.IdTeam); err != nil { return nil, err } else { return team.NewQAView(ut.IdExercice) } }