package commands;

import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

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

import business.Turma;
import dao.FacadeDAO;

public class TurmaAlterar extends AbstractCommand {

	@Override
	public void processarComando(HttpServletRequest request,
			HttpServletResponse response, HttpServlet servlet)
			throws IOException, ServletException {
		// TODO Auto-generated method stub
		// Recupera os Parâmetros
		String id = request.getParameter("id");
		String codigo = request.getParameter("codigo");
		String nome = request.getParameter("nome");
		String cargaHoraria = request.getParameter("cargaHoraria");

		String msg = null;

		// Valida entrada
		if ("".equals(codigo)) {
			msg = "Código deve ser preenchido!";
		} else if ("".equals(nome)) {
			msg = "Nome deve ser preenchido!";
		}
		if (msg != null) {
			request.setAttribute("mensagem", msg);
			request.getRequestDispatcher("turmaAlterar.jsp").forward(request,
					response);
			return;
		}

		// Cria um Prof com os Parâmetros
		Turma turma = new Turma();
		turma.setId(Long.parseLong(id));
		turma.setCodigo(codigo);
		turma.setNome(nome);
		if (!"".equals(cargaHoraria)) {
			Pattern p = Pattern.compile("\\d*");
			Matcher m = p.matcher(cargaHoraria);
			if (m.matches()) {
				turma.setCargaHoraria(Integer.parseInt(cargaHoraria));
			} else {
				msg = "Carga Horária deve conter apenas dígitos!";
				request.setAttribute("mensagem", msg);
				request.getRequestDispatcher("turmaAlterar.jsp").forward(
						request, response);
				return;
			}
		}

		// Insere o Prof no Banco
		msg = FacadeDAO.getInstance(servlet).getTurmaDAO().atualizaTurma(turma);

		// Avisa o Usuário
		request.setAttribute("mensagem", msg);
		request.setAttribute("turma", turma);
		request.getRequestDispatcher("turmaAlterar.jsp").forward(request,
				response);

	}

}
