package controllers;
import com.avaje.ebean.Ebean;
import com.google.common.base.Predicate;
import models.Player;
import models.Score;
import play.mvc.Controller;
import play.mvc.Result;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import static com.google.common.collect.Collections2.filter;
import static views.html.players.render;
public class PlayersController extends Controller {
public static Result index() {
List<Player> players = Ebean.createQuery(Player.class).fetch("scores").findList();
players = new ArrayList<Player>(filter(players, new Predicate<Player>() {
@Override
public boolean apply(@Nullable Player player) {
return !player.scores.isEmpty();
}
}));
for (Player player : players) {
int oneCreditCount = 0;
int firstRankCount = 0;
int secondRankCount = 0;
int thirdRankCount = 0;
List<Score> scores = player.scores;
for (Score score : scores) {
if (score.onecc) {
oneCreditCount++;
}
Integer rank = score.rank;
if (rank == 1) {
firstRankCount++;
} else if (score.rank == 2) {
secondRankCount++;
} else if (score.rank == 3) {
thirdRankCount++;
}
}
Counts playerCounts = new Counts(firstRankCount, secondRankCount, thirdRankCount, oneCreditCount);
player.setCounts(playerCounts);
}
return ok(render(players));
}
public static class Counts {
public Integer firstRankCount;
public Integer secondRankCount;
public Integer thirdRankCount;
public Integer oneCreditCount;
public Counts(int firstRankCount, int secondRankCount, int thirdRankCount, int oneCreditCount) {
this.firstRankCount = firstRankCount;
this.secondRankCount = secondRankCount;
this.thirdRankCount = thirdRankCount;
this.oneCreditCount = oneCreditCount;
}
}
}