diff --git a/src/main/java/api/MongoGradeDataBase.java b/src/main/java/api/MongoGradeDataBase.java index 77e76548..042daac1 100644 --- a/src/main/java/api/MongoGradeDataBase.java +++ b/src/main/java/api/MongoGradeDataBase.java @@ -247,10 +247,6 @@ public void leaveTeam() throws JSONException { } @Override - // TODO Task 3b: Implement this method - // Hint: Read the Grade API documentation for getMyTeam (link below) and refer to the above similar - // methods to help you write this code (copy-and-paste + edit as needed). - // https://www.postman.com/cloudy-astronaut-813156/csc207-grade-apis-demo/folder/isr2ymn/get-my-team public Team getMyTeam() { final OkHttpClient client = new OkHttpClient().newBuilder() .build(); @@ -261,13 +257,24 @@ public Team getMyTeam() { .addHeader(CONTENT_TYPE, APPLICATION_JSON) .build(); - final Response response; - final JSONObject responseBody; + try { + final Response response = client.newCall(request).execute(); + final JSONObject responseBody = new JSONObject(response.body().string()); - // TODO Task 3b: Implement the logic to get the team information - // HINT 1: Look at the formTeam method to get an idea on how to parse the response - // HINT 2: You may find it useful to just initially print the contents of the JSON - // then work on the details of how to parse it. - return null; + if (responseBody.getInt(STATUS_CODE) == SUCCESS_CODE) { + final JSONObject team = responseBody.getJSONObject("team"); + final JSONArray membersArray = team.getJSONArray("members"); + final 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(); + } + return null; + } + catch (IOException | JSONException event) { + throw new RuntimeException(event); + } } } diff --git a/src/main/java/usecase/GetAverageGradeUseCase.java b/src/main/java/usecase/GetAverageGradeUseCase.java index 25140b18..9acba27d 100644 --- a/src/main/java/usecase/GetAverageGradeUseCase.java +++ b/src/main/java/usecase/GetAverageGradeUseCase.java @@ -23,11 +23,14 @@ public float getAverageGrade(String course) { // Call the API to get usernames of all your team members float sum = 0; int count = 0; - // TODO Task 3b: Go to the MongoGradeDataBase class and implement getMyTeam. + final Team team = gradeDataBase.getMyTeam(); // Call the API to get all the grades for the course for all your team members - // TODO Task 3a: Complete the logic of calculating the average course grade for - // your team members. Hint: the getGrades method might be useful. + + for (String member: team.getMembers()) { + sum += gradeDataBase.getGrade(member, course).getGrade(); + count++; + } if (count == 0) { return 0;