package factura40;

import com.arrebol.taxiservicios.beans.TaxiGenericBean;
import com.arrebol.taxiservicios.model.admin.Taxi;
//import com.solucionfactible.cfdi.ws.timbrado.xsd.CFDICancelacion;
//import com.solucionfactible.cfdi.ws.timbrado.xsd.CFDICertificacion;
//import com.solucionfactible.cfdi.ws.timbrado.xsd.CFDIResultadoCancelacion;
//import com.solucionfactible.cfdi.ws.timbrado.xsd.CFDIResultadoCertificacion;
//import com.solucionfactible.ws.timbrado.client.Timbrado;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JOptionPane;
import javax.xml.rpc.ServiceException;

public class ObtenerDatos extends TaxiGenericBean{
    
    ArrayList<String> respuestas = new ArrayList<>();
    String uuid,fecha,sellosat,sellocfdi, qrCodeB64,xml="";

    

    public void conexionWS(File nombreDoc) throws IOException, ServiceException {
       /* // TIMBRADO
        ArrayList<String> datosTimbrado = new ArrayList<>();
        String error ="";
        
        //Factura timbrado real
        
        //String user = "oscarvarcar@gmail.com";
        //String pass = "VACO910415RR3";
        //boolean produccion = true;
        String user = getBundlePropertyFile().getString("factura.user.test");
        String pass = getBundlePropertyFile().getString("factura.pass.test");
        boolean produccion =(Boolean.parseBoolean(getBundlePropertyFile().getString("factura.pass.test")));
        Timbrado timbrado = new Timbrado();
        CFDICertificacion cert = timbrado.timbrar(user, pass, nombreDoc.getName(), produccion);
        
        System.out.println("WS Producción: " + (produccion ? "Si" : "No"));
        System.out.println("Status:  " + cert.getStatus());
        System.out.println("Mensaje: " + cert.getMensaje());
        CFDIResultadoCertificacion[] resultados = cert.getResultados();
        String msg;
        if (resultados != null) {
            for (CFDIResultadoCertificacion r : resultados) {
                if (r != null) {
                    msg = String.format("[%d] %s", r.getStatus(), r.getMensaje());
                    int rStatus = r.getStatus();
                    System.out.println(String.format("[%d] %s", rStatus, r.getMensaje()));
                    //Operación creada exitosamente o previamente ya creado
                    if (rStatus == 200) {
                        System.out.println(r.getCadenaOriginal());
                        String [] valoresCadena = (r.getCadenaOriginal().split("\\|", 9));
                        //El CFDI con el TimbreFiscalDigital ya incluido
                        xml = new String(r.getCfdiTimbrado());
                        //Se usa la libreria de apache commons codec.   
                        System.out.println(Arrays.toString(r.getQrCode()));
                        qrCodeB64 = new String(org.apache.commons.codec.binary.Base64.encodeBase64(r.getQrCode()));
                        /*
                        byte [] decodeqrCode = org.apache.commons.codec.binary.Base64.decodeBase64(qrCodeB64.getBytes());
                        ByteArrayInputStream bis = new ByteArrayInputStream(decodeqrCode);
                        BufferedImage bImage2 = ImageIO.read(bis);
                        ImageIO.write(bImage2, "jpg", new File("output.jpg") );
                        File imagen = new File ("output.jpg");
                        imagen.getAbsolutePath();
                        System.out.println(ObtenerDatos.class.getResource("output.jpg")); 
                        System.out.println("image created");
                        Utilerias util = new Utilerias();
                        //util.eliminarArchivoRuta("output.jpg");
        
                        
                        
                        
                        uuid = r.getUuid();
                        Calendar cal = r.getFechaTimbrado();
                        Date date = cal.getTime();
                        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        fecha = format1.format(date);
                        sellosat = r.getSelloSAT();
                        //Version (0)
                        datosTimbrado.add(valoresCadena[2]);
                        //UUID (1)
                        datosTimbrado.add(uuid);
                        //SelloSat (2)
                        datosTimbrado.add(sellosat);
                        //FechaEmision (3)
                        datosTimbrado.add(valoresCadena[4]);
                        //RFCEmisor (4)
                        datosTimbrado.add(valoresCadena[5]); 
                        //Num Cerfitifcado (5)
                        datosTimbrado.add(valoresCadena[7]);
                        //QR (6)
                        datosTimbrado.add(qrCodeB64);
                        //CadenaOriginal (7)
                        datosTimbrado.add(r.getCadenaOriginal());
                        /*
                       

                    } else {
                        error="El timbre: "+nombreDoc.getName()+" no pudo timbrarse. "+msg;
                        datosTimbrado.add(error);
                        return datosTimbrado;
                    }
                }
            }
        }
*/
    }
  
}