package BBUVAJAVA;


import java.io.BufferedReader;
//import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;

// <editor-fold defaultstate="collapsed" desc=" UML Marker ">
// #[regen=yes,id=DCE.CDA65C67-3A8B-573F-94D7-EFC88D0988E9]
// </editor-fold>
public class Sucursal {

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.A0A0080B-A1DF-7D26-380D-22D5681F53B8]
    // </editor-fold>
    private ArrayList<Producto> mProducto;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.D95E2CC3-24F2-34F6-21CC-855CCD6DD6D2]
    // </editor-fold>
    private ArrayList<Remesa> mRemesa;
    private ArrayList<Cliente> mCliente;
    private ArrayList<Caja> mCaja;
    private ArrayList<Empleado> mEmpleado;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.D3C8995D-13CC-4AFE-426F-29E4EB618653]
    // </editor-fold>
    public Sucursal () {
        mProducto=new ArrayList();
        mRemesa=new ArrayList();
        mCliente=new ArrayList();
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.E09A812D-CF73-1709-D767-9B151F626C8E]
    // </editor-fold>
    public ArrayList<Producto> getProducto () {
        return mProducto;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.30DC03D2-12C8-9794-267B-0F3862CC5DFE]
    // </editor-fold>
    public void setProducto (ArrayList<Producto> val) {
        this.mProducto = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.218C1D65-7D8D-33BA-80B9-B63AE1BC0066]
    // </editor-fold>
    public ArrayList<Remesa> getRemesa () {
        return mRemesa;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.66B8F3CD-FC2D-54F2-B2DB-ECC0CBF98DA1]
    // </editor-fold>
    public void setRemesa (ArrayList<Remesa> val) {
        this.mRemesa = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.BC8EDA36-0F58-7881-B699-0E86DE577EA3]
    // </editor-fold>
    public String verRemesa (String path) {
        String resumenRemesa="";
        try {
            FileReader fr = null;
            fr = new FileReader(path);
            BufferedReader bf = new BufferedReader(fr);
            String linea, buffer;

            while ((linea = bf.readLine()) != null) {
                buffer=linea.substring(0,4);
                if(buffer.compareTo("5180")==0){
                    //Registro cabecera presentador
                    resumenRemesa=linea.substring(28,69);
                }else if(buffer.compareTo("5680")==0){
                    //Registro individual obligatorio
                    resumenRemesa += "\n"+linea.substring(28,68);
                    resumenRemesa += "\t"+linea.substring(88,98);
                 }else if(buffer.compareTo("5980")==0){
                     //Registro total final
                    resumenRemesa += "\nTotal Remesa: "+linea.substring(88,98);
                 }
            }
        } catch (IOException ex) {
            Logger.getLogger(Sucursal.class.getName()).log(Level.SEVERE, null, ex);
        }
        return resumenRemesa;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.F68A8278-4F50-7C25-5F67-3AD08FB3712A]
    // </editor-fold>
    public void incorporarRemesa (String path) throws ParseException {
        try {
            FileReader fr = null;
            fr = new FileReader(path);
            BufferedReader bf = new BufferedReader(fr);
            String linea;
            String fechaRemesa="";
            String numCta="";
            Remesa r=new Remesa();
            while ((linea = bf.readLine()) != null) {
                String buffer;
                buffer = linea.substring(0, 4);

                if(buffer.compareTo("5180")==0){
                    //registro cabecera presentador

                    r.setNombreOrdenante(linea.substring(28,68));
                }else if(buffer.compareTo("5380")==0){
                    fechaRemesa=linea.substring(22, 28);
                }else if(buffer.compareTo("5680")==0){
                    OpRemesa op=new OpRemesa();
                    DecimalFormat df1=new DecimalFormat("#######,##");
                    Number n=df1.parse(linea.substring(88, 98));
                    op.setImporte(n.floatValue());
                    op.setConcepto(r.getNombreOrdenante());
                    SimpleDateFormat df2=new SimpleDateFormat("ddMMyy");
                    op.setFechaOperacion(df2.parse(fechaRemesa));
                    r.insertaOpRemesa(op);
                    //leo el numcta
                    numCta=linea.substring(68,88);
                    //devuelveproducto(numcta)
                    Producto auxCta=this.devuelveProducto(numCta);
                    //insertarmovimientoensuproducto
                    auxCta.insertaMovimientoenCuenta(op);
                }

            }
            this.insertaRemesaenSucursal(r);
        } catch (IOException ex) {
            Logger.getLogger(Sucursal.class.getName()).log(Level.SEVERE, null, ex);
        }

}
    public void insertaRemesaenSucursal(Remesa r){
        this.mRemesa.add(r);
    }
    public Producto devuelveProducto(String numcta){

        Iterator iterador = this.mProducto.listIterator();

        while( iterador.hasNext() ) {
            Producto p = (Producto) iterador.next();
            if (p.getNumeroProducto().compareTo(numcta)==0){
                return p;
            }

        }
        return null;

}
     public ArrayList<Cliente> getMCliente() {
        return mCliente;
    }

    /**
     * @param mCliente the mCliente to set
     */
    public void setMCliente(ArrayList<Cliente> mCliente) {
        this.mCliente = mCliente;
    }

    public ArrayList<Producto> busquedaProductosCliente(String datosClte){
        //ArrayList<Producto> AP=new ArrayList();

        //ArrayList<Cliente> c=this.getMCliente();

        Iterator iterador = this.mCliente.listIterator();

        while( iterador.hasNext() ) {
            Cliente c = (Cliente) iterador.next();
             if (c.getNombreCliente().compareToIgnoreCase(datosClte)==0){
                 return c.getMProducto();
            }
        }
        return null;


    }

    void añadirMas(String text, String text0, String text1) {
        Cliente c = new Cliente(); //creamos al nuevo cliente
        Producto pr = new Producto();
        c.setDocumentacion(text0);
        c.setNombreCliente(text);
        mCliente.add(c);  //añadimos al nuevo cliente
        pr = this.devuelveProducto(text); //buscamos le producto que es
        pr.insertaTitularenProducto(c);  //insertamos el nuevo titular
    }

    void crearLibreta(String text, String text0, String text1) {
            Producto p1=new LibretaAhorro();  //creamos el nuevo producto
            p1.setNumeroProducto(text);
            p1.setNombreCliente(text0);
            p1.setSaldo(0);
            this.mProducto.add(p1); //añadimos el producto
    }

    void nuevoCliente(String text, String text0) {
        Cliente c = new Cliente(); //creamos un nuevo cliente
        c.setDocumentacion(text0);
        c.setNombreCliente(text);
        mCliente.add(c); //añadimos el nuevo cliente
    }
    public Cliente devuelveCliente(String nombre){

        Iterator iterador = this.mCliente.listIterator();

        while( iterador.hasNext() ) {
            Cliente c = (Cliente) iterador.next();
            if (c.getNombreCliente().compareTo(nombre)==0){
                return c;
            }

        }
        return null;

}

    /**
     * @return the mCaja
     */
    public ArrayList<Caja> getMCaja() {
        return mCaja;
    }

    /**
     * @param mCaja the mCaja to set
     */
    public void setMCaja(ArrayList<Caja> mCaja) {
        this.mCaja = mCaja;
    }

    /**
     * @return the mEmpleado
     */
    public ArrayList<Empleado> getMEmpleado() {
        return mEmpleado;
    }

    /**
     * @param mEmpleado the mEmpleado to set
     */
    public void setMEmpleado(ArrayList<Empleado> mEmpleado) {
        this.mEmpleado = mEmpleado;
    }

     public Caja getmCaja(int I){
        Caja aux=null;
        ArrayList<Caja> a=mCaja;
        if(a!=null){
       Iterator iterador = a.listIterator();
       while( iterador.hasNext() ) {
          aux = (Caja) iterador.next();
          if(aux.getIdcaja()==I)
             return aux;
       }
     }

        return aux;
    }


}

