diff --git a/src/main/java/api/MongoGradeDB.java b/src/main/java/api/MongoGradeDB.java index 7c6ff3a..b5202f1 100644 --- a/src/main/java/api/MongoGradeDB.java +++ b/src/main/java/api/MongoGradeDB.java @@ -8,7 +8,6 @@ import org.json.JSONObject; import java.io.IOException; -import java.util.Arrays; public class MongoGradeDB implements GradeDB { private static final String API_URL = "https://grade-logging-api.chenpan.ca/api/grade"; @@ -190,6 +189,33 @@ 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 members = team.getJSONArray("members"); + + String[] membersString = new String[members.length()]; + for (int i = 0; i < members.length(); ++i) { + membersString[i] = members.getString(i); + } + + return Team.builder().members(membersString).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..4f98f68 100644 --- a/src/main/java/use_case/GetAverageGradeUseCase.java +++ b/src/main/java/use_case/GetAverageGradeUseCase.java @@ -12,6 +12,16 @@ public GetAverageGradeUseCase(GradeDB gradeDB) { public float getAverageGrade(String course) { // TODO: Get average grade for all students in your team. - return 0.0f; + + Team team = this.gradeDB.getMyTeam(); + String[] members = team.getMembers(); + + float sum = 0; + for (String member: members) { + Grade grade = this.gradeDB.getGrade(member, course); + sum += grade.getGrade(); + } + + return sum / members.length; } }