package br.edu.uniritter.liquid.democracy.controller;
import static br.edu.uniritter.liquid.democracy.validator.CustomMatchers.notNull;
import static org.hamcrest.Matchers.is;
import java.util.List;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.Validations;
import br.edu.uniritter.liquid.democracy.annotation.Public;
import br.edu.uniritter.liquid.democracy.model.Vote;
import br.edu.uniritter.liquid.democracy.service.VoteService;
@Resource
public class VoteController {
private Result result;
private VoteService service;
private final Validator validator;
public VoteController(Result result, VoteService service, Validator validator) {
this.result = result;
this.service = service;
this.validator = validator;
}
@Public
@Get("/vote")
public void votes() {
List<Vote> votes = service.findAll();
result.include("votes", votes);
}
@Public
@Get("/vote/new")
public void add() {
}
@Public
@Post("/vote/new")
public void add(Vote vote) {
validate(vote);
service.create(vote);
}
private void validate(final Vote vote) {
validator.checking(new Validations() {
{
that(vote, is(notNull()), "erro", "Erro ao validar voto.");
}
});
validator.onErrorUsePageOf(VoteController.class).add();
}
}