diff --git a/src/main/java/api/MongoGradeDB.java b/src/main/java/api/MongoGradeDB.java index 7c6ff3a..83d5169 100644 --- a/src/main/java/api/MongoGradeDB.java +++ b/src/main/java/api/MongoGradeDB.java @@ -8,7 +8,9 @@ import org.json.JSONObject; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; public class MongoGradeDB implements GradeDB { private static final String API_URL = "https://grade-logging-api.chenpan.ca/api/grade"; @@ -190,6 +192,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 jmembers = team.getJSONArray("members"); + List members = new ArrayList(); + for (int i = 0; i < jmembers.length(); i++) { + members.add(jmembers.getString(i)); + } + int size = members.size(); + String[] stringArray = members.toArray(new String[size]); + return Team.builder() + .name(team.getString("name")) + .members(stringArray) + .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..4d59ee5 100644 --- a/src/main/java/use_case/GetAverageGradeUseCase.java +++ b/src/main/java/use_case/GetAverageGradeUseCase.java @@ -12,6 +12,11 @@ public GetAverageGradeUseCase(GradeDB gradeDB) { public float getAverageGrade(String course) { // TODO: Get average grade for all students in your team. - return 0.0f; + Team myteam = gradeDB.getMyTeam(); + float total = 0.0f; + for (String member: myteam.getMembers()){ + total += gradeDB.getGrade(member, course).getGrade(); + } + return total / myteam.getMembers().length; } }