package examenes.examen20250221.ejercicio03;

import java.util.Calendar;
import java.util.Date;

public class Prestamo {
    private static final int DIAS_LIBRO_NORMAL = 15;
    private static final int DIAS_LIBRO_ALTA_DEMANDA = 7;

    private Date fechaComienzo;
    private Date fechaEntrega;

    private int codUser;
    private int isbnLibro;

    private boolean altaDemanda;

    public Prestamo(Date fechaComienzo, int codUser, int isbnLibro, boolean altaDemanda) {
        this.fechaComienzo = fechaComienzo;
        this.codUser = codUser;
        this.isbnLibro = isbnLibro;
        this.altaDemanda = altaDemanda;

        long fechaEntrega;

        if (altaDemanda) {
            fechaEntrega = fechaComienzo.getTime() + (DIAS_LIBRO_ALTA_DEMANDA * 24 * 60 * 60 * 1000);
        } else {
            fechaEntrega = fechaComienzo.getTime() + (DIAS_LIBRO_NORMAL * 24 * 60 * 60 * 1000);
        }

        Calendar calendarEntrega = Calendar.getInstance();
        calendarEntrega.setTimeInMillis(fechaEntrega);

        if (calendarEntrega.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
            fechaEntrega += (24 * 60 * 60 * 1000);
        } else if (calendarEntrega.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
            fechaEntrega += (2 * 24 * 60 * 60 * 1000);
        }

        this.fechaEntrega = new Date(fechaEntrega);

    }

    public Date getFechaComienzo() {
        return fechaComienzo;
    }

    public void setFechaComienzo(Date fechaComienzo) {
        this.fechaComienzo = fechaComienzo;
    }

    public Date getFechaEntrega() {
        return fechaEntrega;
    }

    public void setFechaEntrega(Date fechaEntrega) {
        this.fechaEntrega = fechaEntrega;
    }

    public int getCodUser() {
        return codUser;
    }

    public void setCodUser(int codUser) {
        this.codUser = codUser;
    }

    public int getIsbnLibro() {
        return isbnLibro;
    }

    public void setIsbnLibro(int isbnLibro) {
        this.isbnLibro = isbnLibro;
    }

    public boolean isAltaDemanda() {
        return altaDemanda;
    }

    public void setAltaDemanda(boolean altaDemanda) {
        this.altaDemanda = altaDemanda;
    }

    @Override
    public String toString() {
        return "Prestamo{" +
                "fechaComienzo=" + fechaComienzo +
                ", fechaEntrega=" + fechaEntrega +
                ", codUser=" + codUser +
                ", isbnLibro=" + isbnLibro +
                ", altaDemanda=" + altaDemanda +
                '}';
    }
}
