From 290a21687d1ba6f7e1f907f3f786be5edcf266d1 Mon Sep 17 00:00:00 2001 From: Shubhkarman Pruthi Date: Mon, 25 Sep 2023 16:23:00 -0400 Subject: [PATCH 1/3] created unique method: returns highest grade in team for given course --- src/main/java/use_case/MaxGradeUseCase.java | 25 +++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/main/java/use_case/MaxGradeUseCase.java 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; + } +} From 58a057c76f481441887479ed84b376980c3c4bec Mon Sep 17 00:00:00 2001 From: Shubhkarman Pruthi Date: Mon, 25 Sep 2023 16:29:43 -0400 Subject: [PATCH 2/3] finished average grade use case --- src/main/java/use_case/GetAverageGradeUseCase.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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; } } From 90dc5fce4ef41e3561198a7607d2d31b8d0ee332 Mon Sep 17 00:00:00 2001 From: Shubhkarman Pruthi Date: Mon, 25 Sep 2023 16:46:35 -0400 Subject: [PATCH 3/3] fixed getMyTeam method --- src/main/java/api/MongoGradeDB.java | 32 ++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) 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); + } } }