package servlets;

import java.io.IOException;
import java.util.ArrayList;

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

import business.Mensalidade;
import dao.FacadeDAO;

public class MensalidadeServlet extends javax.servlet.http.HttpServlet
		implements javax.servlet.Servlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	// Métodos
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		String comando = request.getParameter("comando");

		if (comando != null) {
			if (comando.equals("inserir")) {
				comandoInserir(request, response);
			} else if (comando.equals("remover")) {
				comandoRemover(request, response);
			} else if (comando.equals("listar")) {
				comandoListar(request, response);
			}
		}

	}

	public void comandoInserir(HttpServletRequest request,
			HttpServletResponse response) throws IOException, ServletException {
		// Recupera os Parâmetros

		String data_parcela = request.getParameter("data_parcela");
		String data_pagto = request.getParameter("data_pagto");

		float valor = Float.parseFloat(request.getParameter("valor"));

		// Cria um Mensalidade com os Parâmetros
		Mensalidade mens = new Mensalidade();
		mens.setData_parcela(data_parcela);
		mens.setData_pagto(data_pagto);
		mens.setValor(valor);

		// Insere o Mensalidade no Banco
		FacadeDAO.getInstance(this).getMensalidadeDAO().inserir(mens);

		// Avisa o Usuário
		response
				.sendRedirect("registrarMensalidadeAluno.jsp?msg=Mensalidade Registrada.");
	}

	public void comandoRemover(HttpServletRequest request,
			HttpServletResponse response) throws IOException, ServletException {
		// Recupera os parâmetros
		String id = request.getParameter("id");
		String origem = request.getParameter("origem");

		// Remove o mensalidade
		if (FacadeDAO.getInstance(this).getMensalidadeDAO().removerPorId(id)) {
			// Testa pela origem
			if (origem.equals("formulario"))
				response
						.sendRedirect("mensalidadeRemover.jsp?msg=Mensalidade Removida.");
			else if (origem.equals("lista"))
				comandoListar(request, response);
		} else
			response
					.sendRedirect("mensalidadeRemover.jsp?msg=Mensalidade Inexistente.");
	}

	public void comandoListar(HttpServletRequest request,
			HttpServletResponse response) throws IOException, ServletException {
		// Pede as mensalidades para o DAO
		ArrayList<Mensalidade> lista = FacadeDAO.getInstance(this)
				.getMensalidadeDAO().listar();

		// Guarda como atributo de requisição
		request.setAttribute("lista", lista);

		// Redireciona a requisição internamente para a página
		RequestDispatcher rd = request
				.getRequestDispatcher("mensalidadeListar.jsp");
		rd.forward(request, response);
	}
}