package javacgc;



import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;

// <editor-fold defaultstate="collapsed" desc=" UML Marker ">
// #[regen=yes,id=DCE.D926ECF1-01B9-A5B6-F0E5-7E61B540EA75]
// </editor-fold>
public class Producto {
    
    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.F06E4616-2377-ED2E-29F1-0B59ADA38A4A]
    // </editor-fold>
    private String numeroProducto;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.DF3004FE-5511-B3A4-5A77-E8718F00E093]
    // </editor-fold>
    private String nombreTitular;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.CCC0AD5D-E74C-105B-C875-49DF8E8DFCC7]
    // </editor-fold>
    private ArrayList<Movimiento> mMovimiento;

    private ArrayList<Cliente> mTitulares;

    private ArrayList<Domiciliacion> mDomic;


    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.91EC4ABB-C03D-6431-1841-B0C15B4032B5]
    // </editor-fold>
    public Producto () {
        mMovimiento=new ArrayList<Movimiento>();
        mTitulares= new ArrayList<Cliente>();
        mDomic=new ArrayList<Domiciliacion>();
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.BFFD872C-E137-57E8-55B7-B42F8A6136B9]
    // </editor-fold>
    public ArrayList<Movimiento> getMovimiento () {
        return mMovimiento;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.CA11E211-D9E3-A11A-AA7A-25740556767C]
    // </editor-fold>
    public void setMovimiento (ArrayList<Movimiento> val) {
        this.mMovimiento = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.79D260A3-AF20-5A39-B573-650F0A8682BD]
    // </editor-fold>
    public String getNombreTitular () {
        return nombreTitular;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.5B419EDF-96E4-BA8B-3122-CA6C69F80214]
    // </editor-fold>
    public void setNombreTitular (String val) {
        this.nombreTitular = val;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.6164BD68-2774-0AFA-7369-9388CEFF2F3F]
    // </editor-fold>
    public String getNumeroProducto () {
        return numeroProducto;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.68A4EF5B-F725-1E05-8054-388DDE3E2BE5]
    // </editor-fold>
    public void setNumeroProducto (String val) {
        this.numeroProducto = val;
    }
    public double getSaldo(){
        double total=0;
        for(int i=0; i<mMovimiento.size(); i++)
            total= total + mMovimiento.get(i).getImporte();
        return total;

                                 }
    public void insertaMovimientoenCuenta(Movimiento mov){//es igual a addopremesas
        mMovimiento.add(mov);
    }
    public void addOpBasica (OpBasica op) {
        mMovimiento.add(op);
    }
    public void ingresoReintegro(Double imp){
           if((this.getSaldo()+imp) >= 0){
           Date fecha= new Date();
           OpBasica op= new OpBasica();  
           op.setId(Movimiento.idsc++);
           op.setImporte(imp);
           if(imp<0)
           op.setConceptobreve("Reintegro");
           else
           op.setConceptobreve("Ingreso");
           op.setFechaOperacion(fecha);
           this.addOpBasica(op);}
                                    
                                           }
      public ArrayList<Cliente> getMTitulares() {
        return mTitulares;
    }

    /**
     * @param mTitulares the mTitulares to set
     */
    public void setMTitulares(ArrayList<Cliente> mTitulares) {
        this.mTitulares = mTitulares;
    }
    public void insertaTitularenProducto(Cliente c){
        this.mTitulares.add(c);
    }

    public ArrayList<Domiciliacion> getDomiciliacion () {
        return mDomic;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,regenBody=yes,id=DCE.CA11E211-D9E3-A11A-AA7A-25740556767C]
    // </editor-fold>
    public void setDomiciliacion (ArrayList<Domiciliacion> val) {
        this.mDomic = val;
    }

    public String mostrar_domiciliaciones() {
        String aux="";
        int i=0;
        Iterator iterador = this.getDomiciliacion().listIterator();
        if(getDomiciliacion().size()!=0){
            while( iterador.hasNext() ) {
                Domiciliacion d = (Domiciliacion) iterador.next();
                i++;
                aux+="\n\t Dom"+i+":  Ordenante: "+d.getEmpresaOrdenante().getNombreCliente();
            }
        }
        else{
            aux="\n\tEsta cuenta no tiene domicializaciones.";
        }
        return aux;
     }

public void addOpTransferencia (OpTransferencia op) {
        mMovimiento.add(op);
    }
public void insertardomic(Domiciliacion d){
      getDomiciliacion().add(d);
}

public ArrayList<Movimiento> buscarMovs(){
    
ArrayList<Movimiento> movis=new ArrayList<Movimiento>();
    int nelem=this.mMovimiento.size();
    if(nelem<=5)
        nelem=0;//muestra todos los elementos de la lista
    else nelem= nelem-5;

    Iterator iterador = this.mMovimiento.listIterator(nelem);
         while( iterador.hasNext() ) {
             Movimiento m= (Movimiento) iterador.next();
             movis.add(m);
            }
            if(movis.size()==0){return null;}
            else{return movis;} 
}

public Movimiento buscarMov(int i){
    Iterator it = this.mMovimiento.listIterator();
        while (it.hasNext()) {
            Movimiento m = (Movimiento)it.next();
            if (m.getId() == i) {
                return m;
            }
        }
        return null;
}
}


