GestorMatriculacion.java

package negocio.controllers;

import java.sql.SQLException;
import java.util.Date;

import negocio.controllers.MatriculaException.*;
import negocio.entities.*;

public class GestorMatriculacion {
	
	public void realizarMatriculacion(CursoPropio curso, Estudiante estudiante) throws SQLException, MatriculaNoCreadaException, MatriculaErroneaException {
		Date fecha = new Date();
		Matricula matricula = new Matricula(fecha, false, 0, null, curso, estudiante);
		comprobarSiTieneTituloEstudiante(matricula);
		if (matricula.matriculaDAO.crearNuevaMatricula(matricula) == 0) {
			throw new MatriculaNoCreadaException("Matrícula no creada");
		}
	}

	public void realizarPagoMatricula(CursoPropio curso, Estudiante estudiante) throws SQLException, MatriculaNoEditadaException, MatriculaNoExisteException, MatriculaErroneaException {
		Matricula matricula = new Matricula(estudiante, curso);
		comprobarSiTieneTituloEstudiante(matricula);
		matricula.matriculaDAO.seleccionarMatricula(matricula);
		matricula.setPagado(true);
		if (matricula.matriculaDAO.editarMatricula(matricula) == 0) {
			throw new MatriculaNoEditadaException("No se ha podido actualizar el estado del pago");
		}
	}

	public void realizarPagoTarjeta(CursoPropio curso, Estudiante estudiante) throws SQLException, MatriculaNoEditadaException, MatriculaNoExisteException, MatriculaErroneaException {
		Matricula matricula = new Matricula(estudiante, curso);
		comprobarSiTieneTituloEstudiante(matricula);
		matricula.matriculaDAO.seleccionarMatricula(matricula);
		matricula.tipoPago = ModoPago.TARJETA_CREDITO;
		if (matricula.matriculaDAO.editarMatricula(matricula) == 0) {
			throw new MatriculaNoEditadaException("No se ha podido actualizar el modo de pago");
		}
	}

	public void realizarPagoTransferencia(CursoPropio curso, Estudiante estudiante) throws SQLException, MatriculaNoEditadaException, MatriculaNoExisteException, MatriculaErroneaException {
		Matricula matricula = new Matricula(estudiante, curso);
		comprobarSiTieneTituloEstudiante(matricula);
		matricula.matriculaDAO.seleccionarMatricula(matricula);
		matricula.tipoPago = ModoPago.TRANSFERENCIA;
		if (matricula.matriculaDAO.editarMatricula(matricula) == 0) {
			throw new MatriculaNoEditadaException("No se ha podido actualizar el modo de pago");
		}
	}
	
	private void comprobarSiTieneTituloEstudiante(Matricula matricula) throws MatriculaErroneaException {
		boolean tituloMatriculaError = false;
		boolean estudianteMatriculaError = false;
		
		if (matricula.titulo==null || matricula.titulo.getId().equals("") || matricula.titulo.getId() == null || matricula.titulo.getEdicion()<=0) {
			tituloMatriculaError = true;
		}
		if (matricula.estudiante == null || matricula.estudiante.getDni().equals("") || matricula.estudiante.getDni()==null) {
			estudianteMatriculaError = true;
		}
		
		if(!tituloMatriculaError && !estudianteMatriculaError) {
			return;
		} else if (tituloMatriculaError && estudianteMatriculaError) {
			throw new MatriculaErroneaException("Matricula no tiene título ni estudiante");
		} else {
			if (tituloMatriculaError) throw new MatriculaErroneaException("Matricula no tiene título");
			if (estudianteMatriculaError) throw new MatriculaErroneaException("Matricula no tiene estudiante");
		}
	}


}