package ungp.sampleng.backend.resource;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.NotFoundException;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import ungp.sampleng.backend.entity.Infracao;
import ungp.sampleng.backend.repository.InfracaoRepository;
@Path("infracao")
@Component
public class InfracaoResource {
@Autowired
private InfracaoRepository infracaoRepository;
@GET
@Path("condutor/{cpf}")
@Produces("application/json")
public List<Infracao> findByCondutor(@PathParam("cpf") String cpf) {
//FIXME verificar se o CPF do condutor é referente ao do usuário logado ou,
//se condutor está relacionado com outros condutores que possui o cpf informado.
List<Infracao> infracoes = infracaoRepository.findByCondutorCpf(cpf);
if( infracoes.isEmpty() ) {
throw new NotFoundException("Nenhuma infração registrada.");
}
return infracoes;
}
@GET
@Path("{id}")
@Produces("application/json")
public Infracao findById(@PathParam("id") String id) {
Infracao infracao = infracaoRepository.findOne(id);
if( infracao == null ) {
throw new NotFoundException("Infração não encontrada.");
}
return infracao;
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public void insert(Infracao infracao) {
infracaoRepository.save(infracao);
}
}