/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Controladores;
import GestorJugadores.Jugador;
import GestorPago.Pago;
import GestorPago.PagoBD;
import GestorCuota.Cuota;
import GestorCuota.CuotaBD;
import Interfaz.InterfazPagoCuota;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author frpp
*/
public class ControladorPago {
/*
IMPORTANTE EN LA LINEA 136 +-
*/
private static ControladorPago Instancia=null;// = new JugadorBD();
public List<Jugador> jugadores = new ArrayList<Jugador>();
private List<Pago> pagos = new ArrayList<Pago>();
private Jugador jugador;
public int jugadorActivo;
private int pagoActivo = -1;
/**
* Constructor por defecto. Al ser un singleton el contructor es privado
* @param void
* @return void
*/
private ControladorPago(){
jugadores=null;
pagoActivo=-1;
jugadorActivo=-1;
jugador=null;
}
/**
* Método que devuelve la única instancia de la clase
* @param void
* @return Instancia
*/
public static ControladorPago getInstancia() {
if (Instancia==null){
Instancia = new ControladorPago();
}
return Instancia;
}
@Override
/**
* Sobrecarga del método clone para impedir que se duplique la instancia
* (Exigencias del patrón Singleton)
* @param void
* @return Object
*/
public Object clone() throws CloneNotSupportedException {
throw new CloneNotSupportedException();
}
/**
* Método que inicializa el estado de la instancia
* @param void
* @return void
*/
public void inicializar(){
jugador=null;
jugadores=null;
pagoActivo=-1;
jugadorActivo=-1;
}
/**
*
* @return Boolean True| cuota eliminada False| cuota eliminada.
*/
/*
public boolean deleteCuota(){
Boolean salida= false;
if(PagoBD.getInstancia().deletePago(pagos[pagoActivo])) {
InterfazJugador.getInstancia().mostrarMensaje("Cuota eliminada con éxito", "", 1);
salida = true;
}else{
InterfazJugador.getInstancia().mostrarMensaje("Cuota no eliminada", "ERROR", 0);
}
return salida;
}
*/
//Hay que almacenar el nombre y los apellidos del jugador.
public void AnotarPago(String temporada, String mes) {
if(VerificarDatosCorrectosPago(mes)){//Si el me es correcto
Date aux = jugadores.get(jugadorActivo).getNacimiento();
SimpleDateFormat formateador = new SimpleDateFormat("yyyy"); //le aplico el formato dia-mes-año
String fecha_consulta = formateador.format(aux);
int fecha = Integer.parseInt(fecha_consulta);
ArrayList<Cuota> cuota = CuotaBD.getInstancia().getCuota(temporada, fecha);
if(cuota == null){
InterfazPagoCuota.getInstancia().mostrarMensaje("Error en la cuota ", "Error", 0);
}else{
Pago p = new Pago(cuota.get(0),jugadores.get(jugadorActivo),mes);
if(PagoBD.getInstancia().addPago(p) != null){
InterfazPagoCuota.getInstancia().mostrarMensaje("Éxito al añadir el pago ", "Éxito", 1);
pagos.add(p);
pagoActivo =0;
}else{
InterfazPagoCuota.getInstancia().mostrarMensaje("Error al añadir el pago ", "Error", 0);
}
}
}else{
InterfazPagoCuota.getInstancia().mostrarMensaje("Error en los datos ", "Error", 0);
}
}
public void updatePago(String temporada, String mes, String newmes){
if(VerificarDatosCorrectosPago(mes)){//Si el mes es correcto
if(PagoBD.getInstancia().updatePago(jugadores.get(jugadorActivo), temporada, mes, newmes) == false){
InterfazPagoCuota.getInstancia().mostrarMensaje("Error al actualizar el pago", "Error", 0);
}else{
InterfazPagoCuota.getInstancia().mostrarMensaje("Ëxito en la búsqueda", "Éxito", 1);
}
//Si hace el update
}else{
InterfazPagoCuota.getInstancia().mostrarMensaje("Error en los datos ", "Error", 0);
}
}
/* Método que obtiene una lista de nombre / apellidos de aquellos
* jugadores que han pagado el mes correspondiente.
*
* @param String mes
* @return []Integer lista jugadores
*
*/
public void GenerarListadoPago(String temporada, String mes){
ArrayList<Jugador> jug_ip = PagoBD.getInstancia().GenerarListadoPago(temporada, mes);
if(!jug_ip.isEmpty()){// Si la consulta tiene datos...
InterfazPagoCuota.getInstancia().mostrarTablaPagos(jug_ip);
}else{
InterfazPagoCuota.getInstancia().mostrarMensaje( "No hay pagos ", "Error", 0);
}
}
/* Método que obtiene una lista de nombre / apellidos de aquellos
* jugadores que no han pagado el mes correspondiente.
*
* @param String mes
* @return []Integer lista jugadores
*
*/
public void GenerarListadoImpago(String temporada, String mes){
//ArrayList<Jugador> jug_imp = new ArrayList<Jugador>();
ArrayList<Jugador> jug_imp = PagoBD.getInstancia().GenerarListadoImpago(temporada, mes);
if(!jug_imp.isEmpty()){// Si la consulta tiene datos...
InterfazPagoCuota.getInstancia().mostrarTablaImpagos(jug_imp);
}else{
InterfazPagoCuota.getInstancia().mostrarMensaje( "No hay impagos ", "Error", 0);
}
}
public void GenerarListadoPagoJugador(String temporada){
int idJug = jugadores.get(jugadorActivo).getIdJugador();
int ano = jugadores.get(jugadorActivo).getNacimiento().getYear();
ArrayList<Pago> pag = PagoBD.getInstancia().GenerarListadoPagoJugador(idJug, ano, temporada);
if(!pag.isEmpty()){// Si la consulta tiene datos...
InterfazPagoCuota.getInstancia().mostrarTablaPagosJugador(pag);
}else{
InterfazPagoCuota.getInstancia().mostrarMensaje( "No hay pagos ", "Error", 0);
}
}
/**
* Método que recibe los datos de una Cuota como un vector de String
* valida la corrección de los datos y, en caso de que sean correctos,
* crea un objeto Cuota y lo devuelve. Si los datos no son válidos
* muestra información en la interfaz acerca de cuales son incorrectos.
* @param Datos Vector de String
* @return Un objeto Jugador y los datos son correctos o null si no.
*/
public Boolean VerificarDatosCorrectosPago(String datos){
// Si algo incorrecto avisar a la interfaz y mostrar mensaje
if ((datos == "Enero")||(datos == "Febrero")||(datos == "Marzo")||(datos == "Abril")||
(datos == "Mayo")||(datos == "Junio")||(datos == "Julio")||(datos == "Agosto")||
(datos == "Septiembre")||(datos == "Octubre")||(datos == "Noviembre")||(datos == "Diciembre")) {
return true;
}
return false;
}
}