package Models.Caisse;

import Controllers.Traitement.contro;
import Models.connexion;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @author Maher
 */
public class CarteBancaireCltDB {
    
    connexion cnx = new connexion();
    
    contro clt = new contro();
    
    public CarteBancaireClt SetCarteBancaire(CarteBancaireClt CarteBancaire)
    {
        
        String NumeroCarte = "NULL";
        if(!clt.isStringNull(CarteBancaire.getNumeroCarte())){
            NumeroCarte = "'"+CarteBancaire.getNumeroCarte()+"'";
        }
        
        String NomComplet = "NULL";
        if(!clt.isStringNull(CarteBancaire.getNomComplet())){
            NomComplet = "'"+CarteBancaire.getNomComplet()+"'";
        }
        
        
        String NomBanque = "NULL";
        if(!clt.isStringNull(CarteBancaire.getNomBanque())){
            NomBanque = "'"+CarteBancaire.getNomBanque()+"'";
        }
        
        String IdFactureClt = "NULL";
        if(!clt.isStringNull(CarteBancaire.getIdFactureClt())){
            IdFactureClt = "'"+CarteBancaire.getIdFactureClt()+"'";
        }
        
        String Query = "INSERT INTO `carte_bancaire_clt` (`num_transation`, `nom_banque`, `num_carte`, `nom_complet`, `date_transation`, `montant`, `id_factureclt`, `local_nom`, `id_profile`) VALUES ('"+CarteBancaire.getNumeroTransation()+"', "+NomBanque+", "+NumeroCarte+", "+NomComplet+", now(), '"+CarteBancaire.getMontant()+"', "+IdFactureClt+" ,'"+CarteBancaire.getLocalNom()+"', '"+CarteBancaire.getIdProfile()+"')";
        
        CarteBancaire.setIdCarteBancaire(cnx.InsertGetLastId(Query));
        
        
        return CarteBancaire;
    }
    
    public CarteBancaireClt getCarteBancaireClt(String IdCarteBancaire){
        
        CarteBancaireClt CarteBancaire = new CarteBancaireClt();
        
        String Query = "SELECT *, DATE_FORMAT(date_transation, '%d/%m/%Y %H:%i:%s') as date_time_transation FROM `carte_bancaire_clt` WHERE `id_carte_bancaire` = "+IdCarteBancaire+";";
       
        if(cnx.ouverture()){
            try{
               ResultSet resultat = cnx.excutionquery(Query);
                //on place le curseur sur le dernier tuple
                resultat.last();
                //on récupère le numéro de la ligne
                int nombreLignes = resultat.getRow();
                if(nombreLignes>0){
                    
                    CarteBancaire.setIdCarteBancaire(resultat.getString("id_carte_bancaire"));
                    CarteBancaire.setDateTransation(resultat.getString("date_time_transation"));
                    
                    CarteBancaire.setMontant(resultat.getString("montant"));
                    CarteBancaire.setFMontant(resultat.getFloat("montant"));
                    
                    CarteBancaire.setNomBanque(resultat.getString("nom_banque"));
                    CarteBancaire.setNumeroCarte(resultat.getString("num_carte"));
                    CarteBancaire.setNumeroTransation(resultat.getString("num_transation"));
                    
                    CarteBancaire.setIdProfile(resultat.getInt("id_profile"));
                    CarteBancaire.setLocalNom(resultat.getString("local_nom"));
                }
            }catch(SQLException ex){
                System.err.println("Erreur SQL ! \n"+ex.getMessage());
                System.out.println(Query);
            }
        }
        return CarteBancaire;
    }
    
    public CarteBancaireClt getCarteBancaireByFactureClt(String IdFactureClt){
        
        CarteBancaireClt CarteBancaire = new CarteBancaireClt();
        
        String Query = "SELECT *, DATE_FORMAT(date_transation, '%d/%m/%Y %H:%i:%s') as date_time_transation FROM `carte_bancaire_clt` WHERE `id_factureclt` = "+IdFactureClt+";";
       
        if(cnx.ouverture()){
            try{
               ResultSet resultat = cnx.excutionquery(Query);
                //on place le curseur sur le dernier tuple
                resultat.last();
                //on récupère le numéro de la ligne
                int nombreLignes = resultat.getRow();
                if(nombreLignes>0){
                    
                    CarteBancaire.setIdCarteBancaire(resultat.getString("id_carte_bancaire"));
                    CarteBancaire.setDateTransation(resultat.getString("date_time_transation"));
                    
                    CarteBancaire.setMontant(resultat.getString("montant"));
                    CarteBancaire.setFMontant(resultat.getFloat("montant"));
                    
                    CarteBancaire.setNomBanque(resultat.getString("nom_banque"));
                    CarteBancaire.setNumeroCarte(resultat.getString("num_carte"));
                    CarteBancaire.setNumeroTransation(resultat.getString("num_transation"));
                    
                    CarteBancaire.setNomComplet(resultat.getString("nom_complet"));
                    CarteBancaire.setIdFactureClt(resultat.getString("id_factureclt"));
                    
                    CarteBancaire.setIdProfile(resultat.getInt("id_profile"));
                    CarteBancaire.setLocalNom(resultat.getString("local_nom"));
                }
            }catch(SQLException ex){
                System.err.println("Erreur SQL ! \n"+ex.getMessage());
                System.out.println(Query);
            }
        }
        return CarteBancaire;
    }
}
