Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 31 additions & 1 deletion src/main/java/api/MongoGradeDB.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
}
11 changes: 8 additions & 3 deletions src/main/java/use_case/GetAverageGradeUseCase.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package use_case;
import api.GradeDB;
import entity.Grade;
import entity.Team;

public final class GetAverageGradeUseCase {
Expand All @@ -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;
}
}
25 changes: 25 additions & 0 deletions src/main/java/use_case/MaxGradeUseCase.java
Original file line number Diff line number Diff line change
@@ -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;
}
}