/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package puntocassa.utils;

import java.sql.*;
import javax.swing.JOptionPane;
import puntocassa.PuntoCassa;

/**
 *
 * @author Francesco DS
 */
public class Utils {
    
    public static boolean isNumeric(String s) {
        return s.matches("[-+]?\\d*\\.?\\d+");
    }
    
    
    public static String mySelect(String query, String campo, PuntoCassa puntoCassa) {
        String res = "";
        try {
            Connection dbConnection = DriverManager.getConnection(puntoCassa.dbStringa, puntoCassa.dbUsername, puntoCassa.dbPassword);
            Statement st = dbConnection.createStatement();
            ResultSet rs = st.executeQuery(query);
            while (rs.next()) {

                res = rs.getString(campo);
            }
            rs.close();
            st.close();
            dbConnection.close();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(puntoCassa, "Errore MySelect ['" + e.getMessage() + " " + query + "']");

        }
        if (res == null) {
            res = "";
        }
        return res;
    }
    
    public static Boolean myInsert(String query, PuntoCassa puntoCassa) {
        //System.out.println(query);
        Boolean res = false;
        try {
            Connection dbConnection = DriverManager.getConnection(puntoCassa.dbStringa, puntoCassa.dbUsername, puntoCassa.dbPassword);
            Statement st = dbConnection.createStatement();
            ResultSet rs = st.executeQuery(query);
            rs.close();
            st.close();
            dbConnection.close();
            res = true;
        } catch (Exception e) {
            JOptionPane.showMessageDialog(puntoCassa, "Errore MySelect ['" + e.getMessage() + " " + query + "']");

        }
        return res;
    }
    
    public static Long mySelectInteger(String query, String campo, PuntoCassa puntoCassa) {
        System.out.println(query);
        Long res = 0L;
        try {
            Connection dbConnection = DriverManager.getConnection(puntoCassa.dbStringa, puntoCassa.dbUsername, puntoCassa.dbPassword);
            Statement st = dbConnection.createStatement();
            ResultSet rs = st.executeQuery(query);
            while (rs.next()) {

                res = rs.getLong(campo);
            }
            rs.close();
            st.close();
            dbConnection.close();
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(puntoCassa, "Errore MySelectInteger ['" + e.getMessage() + " " + query + "']");

        }

        return res;
    }
    
    
    public static String spaziBianchi(String testo, Integer Num, Boolean suffisso) {
        String res = testo;
        StringBuilder suff = new StringBuilder();
        if (testo.length() < Num) {
            Integer delta = Num - testo.length();
            for (Integer i = 0; i < delta; i++) {
                suff.append(" ");
            }
            if (suffisso == false) {
                res = suff.toString() + testo;
            } else {
                res = testo + suff.toString();
            }

        }
        return res;
    }
    
    public static String trovaScadenza(String testo) {
        String scadenza = "";
        String tag = "#";
        Integer pi = testo.lastIndexOf(tag);
        if (pi > 0) {
            scadenza = testo.substring(pi - 9, pi - 1);
        }

        return scadenza;
    }
    
    public static String luhn(String dati) {

        Integer s = 0;
        for (Integer i = 0; i < dati.length(); i++) {
            Integer d = Integer.valueOf(dati.substring(i, i + 1));
            if (i % 2 == 0) {
                Integer doppio = d * 2;
                if (doppio >= 10) {
                    doppio = 1 + (doppio % 10);
                }
                s = s + doppio;
            } else {
                s = s + d;
            }
        }
        Integer resto = s % 10;
        if (resto == 0) {
            return "0";
        } else {
            Integer ris = 10 - resto;
            return "" + ris;
        }

    }
}
