package commands;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import business.Aluno;
import business.Curso;
import dao.FacadeDAO;

/**
 * 
 * @author Carine
 */
public class CursoAssociarAluno extends AbstractCommand {

	/**
	 * Método que processa o comando de associação de um curso cadastrado com um
	 * aluno cadastrado
	 */
	public void processarComando(HttpServletRequest request,
			HttpServletResponse response, HttpServlet servlet) {
		// verifica se existe filtro
		String msg = null;
		String filtroAluno = request.getParameter("filtroAluno");
		String filtroCurso = request.getParameter("filtroCurso");
		List<Aluno> alunos = null;
		List<Curso> cursos = null;

		if (filtroAluno == null || filtroAluno.equals("")) {
			alunos = FacadeDAO.getInstance(servlet).getAlunoDAO().listarAlunos();
			if (alunos.size() == 0) {
				msg = " Nao Existe Aluno Cadastrado ";
			}

		} else {
			alunos = FacadeDAO.getInstance(servlet).getAlunoDAO().listarAlunosPorNome(filtroAluno);
			if (alunos.size() == 0) {
				msg = " Nao Existe Aluno com o Filtro Aplicado ";
			}
		}

		request.setAttribute("alunos", alunos);

		if (filtroCurso == null || filtroCurso.equals("")) {
			cursos = FacadeDAO.getInstance(servlet).getCursoDAO().listarCursos();
			if (cursos.size() == 0) {
				msg = " Nao Existe Professor Cadastrado ";
			}
		} else {
			cursos = FacadeDAO.getInstance(servlet).getCursoDAO().listarCursosPorNome(filtroCurso);
			if (cursos.size() == 0) {
				msg = " Nao Existe Curso com o Filtro Aplicado ";
			}
		}

		request.setAttribute("cursos", cursos);

		if (msg != null) {
			request.setAttribute("mensagem", msg);
		}

		RequestDispatcher rd = request
				.getRequestDispatcher("cursoAssociarAluno.jsp?msg=" + msg);
		try {
			rd.forward(request, response);
		} catch (ServletException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
