
package bbuvajava;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Observable;

public class Caja extends Observable {
    private float saldo;
    private int id;
    private ArrayList<Arqueo> mArqueo;
    private Empleado e;

    public Caja () {
        mArqueo=new ArrayList();
    }

    public int getId () {
        return id;
    }

    public String getParteD() {
        String dev=new String();
        dev=" ";
         
        Iterator iterador = this.mArqueo.listIterator();
        while( iterador.hasNext() ) {
            Arqueo a = (Arqueo) iterador.next();
            if (a.getOp()==1){
                dev+="Empleado : ";
                dev+=a.getC().getE().getDni();
                dev+="    ";
                dev+=" Saldo anterior: ";
                dev+=String.valueOf(a.getSaldoparte());
                dev+="    ";
                dev+=" Saldo nuevo : ";
                dev+=String.valueOf(a.getSaldofin());
                dev+="    ";
                dev+="\n";
            }
        }
        return dev;
    }

    public void setId (int val) {
        this.id = val;
    }

    public ArrayList<Arqueo> getArqueo () {
        return mArqueo;
    }

    public void incrementar_saldo(float importe){
        this.saldo+=importe;
        this.setChanged();
        this.notifyObservers();
    }

    public void decrementar_saldo(float importe){
        this.saldo-=importe;
        this.setChanged();
        this.notifyObservers();
    }

    public void setArqueo (ArrayList<Arqueo> val) {
        this.mArqueo = val;
    }

    public float getSaldo () {
        return saldo;

    }

    public void setSaldo (float val) {
        this.saldo = val;
        this.setChanged();
        this.notifyObservers();
    }

    public void RealizarArqueo(){
        Arqueo ultimoarqueo;
        int aux=mArqueo.size();
        if(aux>0){
            ultimoarqueo=mArqueo.get(aux-1);
            String uArqueo=ultimoarqueo.getNarqueo();
            Arqueo a = null;
            a=new Arqueo();
            a.setC(this);
            a.setNarqueo(uArqueo);
            a.setSaldoini(saldo);
            a.setNarqueo(String.valueOf(aux+1));
            a.setEmpleado(getE());
            mArqueo.add(a);
       }
       else{
            Arqueo a = null;
            a=new Arqueo();
            a.setC(this);
            a.setSaldoini(saldo);
            a.setNarqueo(String.valueOf(aux+1));
            mArqueo.add(a);
       }
    }

     public Arqueo get_Arqueo(){
         if(mArqueo.size()>0){
             Arqueo a;
             int aux2=mArqueo.size();
             a =mArqueo.get(aux2-1);
             return a;
         }
         else{
             System.out.println("no hay arquero");
             return null;
         }
     }

     public String get_TodosArqueos(){
         String dev="";
         if(mArqueo.size()==0){
              dev+="no hay arqueos de ese empleado";
         }
         else{
             Iterator iterador = this.mArqueo.listIterator();

             while( iterador.hasNext() ) {
                 Arqueo a = (Arqueo) iterador.next();
                 dev+="Empleado : ";
                 dev+=e.getDni();
                 dev+="    ";
                 dev+=" Saldo anterior: ";
                 dev+=String.valueOf(a.getSaldoini());
                 dev+="    ";
                 dev+=" Saldo nuevo : ";
                 dev+=String.valueOf(a.getSaldofin());
                 dev+="    ";
                 dev+=" Por tanto, ¿hubo Parte? : ";
                 if (a.getOp()==1)
                      dev+="si claro";
                 else{
                       dev+="no porque el saldo es el mismo";
                 }
                 dev+="\n";
             }

         }
         return dev;
     }

    public Empleado getE() {
        return e;
    }

    
    public void setE(Empleado e) {
        this.e = e;
    }
}