diff --git a/src/main/java/api/MongoGradeDB.java b/src/main/java/api/MongoGradeDB.java index 7c6ff3a..588be5e 100644 --- a/src/main/java/api/MongoGradeDB.java +++ b/src/main/java/api/MongoGradeDB.java @@ -190,6 +190,36 @@ public void leaveTeam() throws JSONException { // Hint: Read apiDocuments/getMyTeam.md and refer to the above // methods to help you write this code (copy-and-paste + edit as needed). public Team getMyTeam() { - return null; + OkHttpClient client = new OkHttpClient().newBuilder() + .build(); + Request request = new Request.Builder() + .url("https://grade-logging-api.chenpan.ca/team") + .addHeader("Authorization", API_TOKEN) + .addHeader("Content-Type", "application/json") + .build(); + + try { + Response response = client.newCall(request).execute(); + System.out.println(response); + JSONObject responseBody = new JSONObject(response.body().string()); + + if (responseBody.getInt("status_code") == 200) { + JSONObject team = responseBody.getJSONObject("team"); + JSONArray membersArray = team.getJSONArray("members"); + String[] members = new String[membersArray.length()]; + for (int i = 0; i < membersArray.length(); i++) { + members[i] = membersArray.getString(i); + } + + return Team.builder() + .name(team.getString("name")) + .members(members) + .build(); + } else { + throw new RuntimeException(responseBody.getString("message")); + } + } catch (IOException | JSONException e) { + throw new RuntimeException(e); + } } } diff --git a/src/main/java/use_case/GetAverageGradeUseCase.java b/src/main/java/use_case/GetAverageGradeUseCase.java index 8d3ed47..2c4deba 100644 --- a/src/main/java/use_case/GetAverageGradeUseCase.java +++ b/src/main/java/use_case/GetAverageGradeUseCase.java @@ -1,6 +1,5 @@ package use_case; import api.GradeDB; -import entity.Grade; import entity.Team; public final class GetAverageGradeUseCase { @@ -11,7 +10,13 @@ public GetAverageGradeUseCase(GradeDB gradeDB) { } public float getAverageGrade(String course) { - // TODO: Get average grade for all students in your team. - return 0.0f; + Team currTeam = this.gradeDB.getMyTeam(); + String[] teamMembers = currTeam.getMembers(); + float summy = 0; + for (String teamMember : teamMembers) { + int currGrade = this.gradeDB.getGrade(teamMember, course).getGrade(); + summy += currGrade; + } + return summy / teamMembers.length; } } diff --git a/src/main/java/use_case/MaxGradeUseCase.java b/src/main/java/use_case/MaxGradeUseCase.java new file mode 100644 index 0000000..25d5e52 --- /dev/null +++ b/src/main/java/use_case/MaxGradeUseCase.java @@ -0,0 +1,25 @@ +package use_case; + +import api.GradeDB; +import entity.Team; + +public class MaxGradeUseCase { + private final GradeDB gradeDB; + + public MaxGradeUseCase(GradeDB gradeDB) { + this.gradeDB = gradeDB; + } + + public float getHighestGrade(String course) { + Team currTeam = this.gradeDB.getMyTeam(); + String[] teamMembers = currTeam.getMembers(); + int highest = this.gradeDB.getGrade(teamMembers[0], course).getGrade(); + for (String teamMember : teamMembers) { + int currGrade = this.gradeDB.getGrade(teamMember, course).getGrade(); + if (currGrade > highest) { + highest = currGrade; + } + } + return highest; + } +}