package br.usp.ime.academicdevoir.componete;
import br.com.caelum.vraptor.ioc.Component;
import br.usp.ime.academicdevoir.dao.ListaGeradaDao;
import br.usp.ime.academicdevoir.dao.ListaQuestaoDao;
import br.usp.ime.academicdevoir.dao.QuestaoDao;
import br.usp.ime.academicdevoir.entidade.Aluno;
import br.usp.ime.academicdevoir.entidade.ListaDeExercicios;
import br.usp.ime.academicdevoir.entidade.ListaGerada;
import br.usp.ime.academicdevoir.entidade.ListaQuestao;
import br.usp.ime.academicdevoir.entidade.Questao;
@Component
public class Lista {
private final ListaGeradaDao listaGeradaDao;
private final QuestaoDao questaoDao;
private final ListaQuestaoDao listaQuestaoDao;
public Lista(ListaGeradaDao listaGeradaDao, QuestaoDao questaoDao, ListaQuestaoDao listaQuestaoDao) {
this.listaGeradaDao = listaGeradaDao;
this.questaoDao = questaoDao;
this.listaQuestaoDao = listaQuestaoDao;
}
public ListaGerada gerar(ListaDeExercicios lista, Aluno aluno) {
ListaGerada listaGerada = listaGeradaDao.buscar(lista, aluno);
if (listaGerada == null) {
listaGerada = new ListaGerada(lista, aluno);
listaGeradaDao.salvar(listaGerada);
for (Questao questao : questaoDao.listaFiltradas()) {
ListaQuestao listaQuestao = new ListaQuestao(listaGerada, questao);
listaQuestaoDao.salvar(listaQuestao);
}
}
return listaGerada;
}
}