Files
project-unisa-for-shop-mana…/it/unisa/info13d/Articoli/CeneInRistoranti.java

188 lines
5.3 KiB
Java

package it.unisa.info13d.Articoli;
import java.io.Serializable;
import java.util.GregorianCalendar;
/**
* Created with MONSTER.
* User: xgiovio
* Date: 16/12/13
* Time: 18.47
*/
/**
*
* Classe che rappresenta una cena all'interno del catalogo.
*
*/
public class CeneInRistoranti extends Utilizzabile implements Serializable{
/**
* Genera una nuova cena da inserire all'interno del catalogo.
*
* @param idCena l'id della cena.
* @param nomeRistorante il ristorante in cui usufruire dell'offerta .
* @param luogo Ubicazione del ristorante.
* @param descrizione_cena descrizione della cena (cosa viene offerto dal ristorante).
* @param costoPerPersona costo per singola persona.
* @param dataScadenzaOffertaCena scadenza dell'offerta.
* @param numCenedaVendere offerte disponibili per la cena.
*/
public CeneInRistoranti(int idCena, String nomeRistorante, String luogo, String descrizione_cena, double costoPerPersona, GregorianCalendar dataScadenzaOffertaCena, int numCenedaVendere){
this.idCena=idCena;
this.nomeRistorante=nomeRistorante;
this.luogo=luogo;
this.descrizione_cena=descrizione_cena;
this.costoPerPersona=costoPerPersona;
this.dataScadenzaOffertaCena=dataScadenzaOffertaCena;
this.numCenedaVendere=numCenedaVendere;
}
@Override
public boolean eAcquistabile() {
if((dataScadenzaOffertaCena.before(new GregorianCalendar())) && (numCenedaVendere>ceneVendute))
return false;
return true;
}
/**
* @return l'id della cena.
*/
public int getIdCena() {
return idCena;
}
/**
* @return il nome del ristorante.
*/
public String getNomeRistorante() {
return nomeRistorante;
}
/**
* @return l'ubicazione del ristorante.
*/
public String getLuogo() {
return luogo;
}
/**
* @return descrizione della cena.
*/
public String getDescrizione_cena() {
return descrizione_cena;
}
/**
* @return il costo per ogni singola persona.
*/
public double getCostoPerPersona() {
return costoPerPersona;
}
/**
* @return data di scadenza dell'offerta.
*/
public GregorianCalendar getDataScadenzaOffertaCena() {
return dataScadenzaOffertaCena;
}
/**
* @return il numero di cene ancora disponibili per la vendita.
*/
public int getNumCenedaVendere() {
return numCenedaVendere;
}
/**
* @return il numero di cene vendute .
*/
public int getCeneVendute() {
return ceneVendute;
}
/**
* @param nomeRistorante setta il nome del ristorante.
*/
public void setNomeRistorante(String nomeRistorante) {
this.nomeRistorante = nomeRistorante;
}
/**
* @param luogo setta il l'ubicazione del ristorante.
*/
public void setLuogo(String luogo) {
this.luogo = luogo;
}
/**
* @param descrizione_cena setta la descrizione della cena (Esempio: pizza margherita, patate e dolce).
*/
public void setDescrizione_cena(String descrizione_cena) {
this.descrizione_cena = descrizione_cena;
}
/**
* @param costoPerPersona setta il costo per singola persona.
*/
public void setCostoPerPersona(double costoPerPersona) {
this.costoPerPersona = costoPerPersona;
}
/**
* @param dataScadenzaOffertaCena setta la data di scadenza per l'offerta.
*/
public void setDataScadenzaOffertaCena(GregorianCalendar dataScadenzaOffertaCena) {
this.dataScadenzaOffertaCena = dataScadenzaOffertaCena;
}
/**
* @param numCenedaVendere setta il numero di cene da vendere.
*/
public void setNumCenedaVendere(int numCenedaVendere) {
this.numCenedaVendere = numCenedaVendere;
}
/**
* Questo metodo all'atto dell'acquisto da parte di un utente, decrementa le cene da vendere ed incrementa quelle vendute.
*/
public void setCeneVendute()
{
numCenedaVendere--;
ceneVendute++;
}
@Override
/**
* Questo metodo stabilisce se e possibile applicare o meno uno sconto alle cene.
* @return Restitisce il prezzo originale se la politica di socnto non e' applicabile, altrienti restituisce il prezzo scontato del 10%.
*/
public double get_prezzo_scontato() {
GregorianCalendar dataOdierna = new GregorianCalendar();
long milliseconds1 = dataOdierna.getTimeInMillis();
long milliseconds2 = dataScadenzaOffertaCena.getTimeInMillis();
long diff = milliseconds2 - milliseconds1;
long diffGiorni = diff / (24 * 60 * 60 * 1000); //differenza in giorni
if( diffGiorni<=7 )
{
if( ceneVendute > ( numCenedaVendere/2 ) )
return costoPerPersona - (costoPerPersona* ( Global.getSconto_ultima_settimana() )) - (costoPerPersona* ( Global.getSconto_cene_sup_50() )) ; //generico sconto ultima sett + se 50% vendute
else
return costoPerPersona - (costoPerPersona * ( Global.getSconto_ultima_settimana() )); //generico sconto ultima sett
}
else
return costoPerPersona;
}
private int idCena;
private String nomeRistorante;
private String luogo;
private String descrizione_cena;
private double costoPerPersona;
private GregorianCalendar dataScadenzaOffertaCena;
private int numCenedaVendere;
private int ceneVendute;
}