/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package GestorPago;
import ConexionBD.ConexionBD;
import GestorCuota.Cuota;
import GestorCuota.CuotaBD;
import GestorJugadores.Jugador;
import GestorJugadores.JugadorBD;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
/**
*
* @author frpp
*/
public class PagoBD {
private static PagoBD Instancia=null;
public void PagoBD(){}
static public PagoBD getInstancia(){
if (Instancia == null){
Instancia = new PagoBD();
}
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();
}
/**
*
* @param Pago
*/
public Pago addPago(Pago pag){
String consulta="INSERT INTO Pago(IdCuota, IdJugador, Mes) " +
" VALUES('" + pag.getCuota().getIdCuota() +
"','" + pag.getJugador().getIdJugador() +
"','" + pag.getMes() +
"');";
System.out.println(consulta);
try {
ConexionBD.getInstancia().conectar();
ResultSet salidaBD = ConexionBD.getInstancia().actualizar(consulta);
salidaBD.first();
// Establece el valor de IdJornada generado por la BD en el objeto jornada
pag.setIdPago(salidaBD.getInt(1)); // establece el valor de IdEquipo generado por la BD en el objeto e
ConexionBD.getInstancia().desconectar();
} catch (SQLException ex) {
ex.printStackTrace();
return null;
}
return pag;
}
/**
*
* @param Pago
*/
public boolean deletePago(Pago pag){
String consulta;
Boolean salida = true;
consulta = "DELETE FROM Pago WHERE IdPago=" + pag.getIdPago().toString() +
";";
try {
ConexionBD.getInstancia().conectar();
ResultSet salidaBD = ConexionBD.getInstancia().actualizar(consulta);
ConexionBD.getInstancia().desconectar();
} catch (SQLException ex) {
ex.printStackTrace();
salida= false;
}
return salida;
}
/*
*
* @param String temporada
* @return ArrayList<Pago>
*
* Método que obtiene una lista pagos de un jugador en una temporada
*
*/
public ArrayList<Pago> GenerarListadoPagoJugador( int idJug, int ano, String temporada){
String consulta;
consulta="SELECT pag.IdPago , pag.IdCuota, pag.IdJugador, pag.Mes FROM Pago pag, Cuota cuot WHERE " +
// " cout.AnioNacimiento = '" + ano +"'"+
" cuot.Temporada = '" + temporada +"'"+
" AND pag.IdCuota = cuot.IdCuota" +
" AND pag.IdJugador = " + idJug +
";";
Pago part;
ArrayList<Pago> APart = new ArrayList<Pago>();
try {
ConexionBD.getInstancia().conectar();
ResultSet tabla = ConexionBD.getInstancia().consultar(consulta);
Cuota cuot=null;
Jugador jug=null;
while (tabla.next()) { // Si devuelve false es que la búsqueda es vacía,
cuot = CuotaBD.getInstancia().getCuota(tabla.getInt("IdCuota")) ;
jug = JugadorBD.getInstancia().getJugador(idJug);
part = new Pago(cuot,
jug,
tabla.getString("Mes"));
part.setIdPago(tabla.getInt("IdPago"));
APart.add(part);
}
ConexionBD.getInstancia().desconectar();
} catch (SQLException ex) {
ex.printStackTrace();
return null;
}
return APart;
}
/*
*
* @param String temporada
* @param String mes
* @return ArrayList<Jugador>
*
* Método que obtiene una lista de nombre / apellidos de aquellos
* jugadores que han pagado el mes correspondiente.
*
*/
public ArrayList<Jugador> GenerarListadoPago(String temporada , String mes){
String consulta;
consulta = "select jug.IdJugador, jug.Nombre, jug.Apellidos, jug.Sexo, "
+ " jug.Nacimiento , jug.Talla, jug.Tutor, jug.Correo, jug.NumCuenta ,"
+ " jug.Telefono, jug.Observaciones, jug.FormaPago from Jugador jug "
+" where jug.FormaPago = 'M' "
+" and jug.IdJugador in ("
+" select pag.Idjugador from Pago pag"
+" inner join Cuota cuot"
+" on pag.IdCuota = cuot.IdCuota"
+" where cuot.Temporada = '" + temporada + "'"
+" AND pag.Mes = '" +mes + "' "
+" );";
//System.out.println(consulta);
Jugador part;
ArrayList<Jugador> APart = new ArrayList<Jugador>();
try {
ConexionBD.getInstancia().conectar();
ResultSet tabla = ConexionBD.getInstancia().consultar(consulta);
while (tabla.next()) { // Si devuelve false es que la búsqueda es vacía,
part = new Jugador(tabla.getString("Nombre"), tabla.getString("Apellidos"),
tabla.getString("Sexo").charAt(0), tabla.getDate("Nacimiento"),
tabla.getString("Talla"), tabla.getString("Tutor"), tabla.getString("Correo"),
tabla.getString("NumCuenta"), tabla.getInt("Telefono"),
tabla.getString("Observaciones"),
tabla.getString("FormaPago").charAt(0),
null);
part.setIdJugador(tabla.getInt("IdJugador"));
APart.add( (part) );
}
ConexionBD.getInstancia().desconectar();
} catch (SQLException ex) {
ex.printStackTrace();
return null;
}
return APart;
}
/*
*
* @param String temporada
* @param String mes
* @return ArrayList<Jugador>
*
* Método que obtiene una lista de nombre / apellidos de aquellos
* jugadores que no han pagado el mes correspondiente.
*
*/
public ArrayList<Jugador> GenerarListadoImpago(String temporada, String mes){
String consulta; // Obtenemos la lista de idJugadores que tiene pagos en ese mes.
consulta = "select jug.IdJugador, jug.Nombre, jug.Apellidos, jug.Sexo, "
+ " jug.Nacimiento , jug.Talla, jug.Tutor, jug.Correo, jug.NumCuenta ,"
+ " jug.Telefono, jug.Observaciones, jug.FormaPago from Jugador jug "
+" where jug.FormaPago = 'M' "
+" and jug.IdJugador not in ("
+" select pag.Idjugador from Pago pag"
+" inner join Cuota cuot"
+" on pag.IdCuota = cuot.IdCuota"
+" where cuot.Temporada = '" + temporada + "'"
+" AND pag.Mes = '" +mes + "' "
+" );";
//hay que crear los objetos jugador
Jugador part;
ArrayList<Jugador> APart = new ArrayList<Jugador>();
try {
ConexionBD.getInstancia().conectar();
ResultSet tabla = ConexionBD.getInstancia().consultar(consulta);
while (tabla.next()) { // Si devuelve false es que la búsqueda es vacía,
part = new Jugador(tabla.getString("Nombre"), tabla.getString("Apellidos"),
tabla.getString("Sexo").charAt(0), tabla.getDate("Nacimiento"),
tabla.getString("Talla"), tabla.getString("Tutor"), tabla.getString("Correo"),
tabla.getString("NumCuenta"), tabla.getInt("Telefono"),
tabla.getString("Observaciones"),
tabla.getString("FormaPago").charAt(0),
null);
part.setIdJugador(tabla.getInt("IdJugador"));
APart.add( (part) );
}
ConexionBD.getInstancia().desconectar();
} catch (SQLException ex) {
ex.printStackTrace();
return null;
}
return APart;
}
/**
*
* @param Pago
*/
public boolean updatePago(Jugador jugador, String temporada, String mes, String newmes){
Boolean salida = true;
Date aux = jugador.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);
String consulta="UPDATE Pago pag, Cuota cuot SET " +
" pag.Mes='" + newmes + "'"+
" WHERE cuot.AnioNacimiento = '" + cuota.get(0).getAnioNacimiento()+"'" +
" AND cuot.Temporada = '" + cuota.get(0).getTemporada() +"'" +
" AND pag.IdJugador = " + jugador.getIdJugador() +
" AND pag.Mes = '" + mes +"'"+
";";
System.out.println(consulta);
try {
ConexionBD.getInstancia().conectar();
ConexionBD.getInstancia().actualizar(consulta);
ConexionBD.getInstancia().desconectar();
} catch (SQLException ex) {
System.out.println(ex);
salida = false;
}
return salida;
}
}