package controllers;
import actions.User;
import com.avaje.ebean.Ebean;
import com.google.common.base.Predicate;
import models.Player;
import models.Score;
import play.Logger;
import play.data.Form;
import play.mvc.Controller;
import play.mvc.Http;
import play.mvc.Result;
import views.html.admin;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import static com.google.common.collect.Collections2.filter;
import static java.util.Collections.sort;
public class AdminController extends Controller {
public static Result index() {
List<Player> players = Ebean.createQuery(Player.class).findList();
sort(players, new Comparator<Player>() {
@Override
public int compare(Player player, Player player2) {
return player.name.compareToIgnoreCase(player2.name);
}
});
List<Player> toClean = new ArrayList<Player>(filter(players, new Predicate<Player>() {
@Override
public boolean apply(@Nullable Player player) {
return player.shmupUserId == null;
}
}));
return ok(admin.render(toClean, players));
}
public static Result save() {
if (!User.current().isAuthenticated() && !User.current().isAdministrator()) {
return unauthorized();
}
Http.Request request = request();
Map<String, String[]> form = request.body().asFormUrlEncoded();
Player from = Player.finder.byId(Long.parseLong(form.get("from")[0]));
Player to = Player.finder.byId(Long.parseLong(form.get("to")[0]));
for (Score score : from.scores) {
score.player = to;
score.update();
}
from.delete();
return index();
}
}