From 9f73adac6521e1a7253d46abd1c57ca9efbb4d53 Mon Sep 17 00:00:00 2001 From: Simone Argenziano Date: Wed, 18 Dec 2013 17:09:37 +0100 Subject: [PATCH] Completati tutti i metodi per il Cliente e l'admin. -Resta da implementare esclusivvaemnte l'ordinamento per datascadenza e id, e la condizione delle cene nella zona dell'utente. --- it/unisa/info13d/Articoli/BeniDiConsumo.java | 5 + .../info13d/Articoli/CeneInRistoranti.java | 10 +- it/unisa/info13d/Articoli/Vacanze.java | 9 +- .../info13d/GestioneCatalogo/Catalogo.java | 210 +++++++++++++++--- .../GestioneCatalogo/ClientSession.java | 16 +- it/unisa/info13d/Login/Access.java | 18 -- it/unisa/info13d/Login/Entry.java | 5 +- it/unisa/info13d/Main.java | 2 +- 8 files changed, 220 insertions(+), 55 deletions(-) diff --git a/it/unisa/info13d/Articoli/BeniDiConsumo.java b/it/unisa/info13d/Articoli/BeniDiConsumo.java index 3e12171..0f9bf54 100644 --- a/it/unisa/info13d/Articoli/BeniDiConsumo.java +++ b/it/unisa/info13d/Articoli/BeniDiConsumo.java @@ -64,6 +64,11 @@ public class BeniDiConsumo implements Utilizzabile, Serializable{ public void setBeniInStock(int beniInStock) { this.beniInStock = beniInStock; } + + public void setBeniVenduti() { + beniInStock--; + beniVenduti++; + } private int idBene; private String descrizioneBene; diff --git a/it/unisa/info13d/Articoli/CeneInRistoranti.java b/it/unisa/info13d/Articoli/CeneInRistoranti.java index 50a3a87..83c9f32 100644 --- a/it/unisa/info13d/Articoli/CeneInRistoranti.java +++ b/it/unisa/info13d/Articoli/CeneInRistoranti.java @@ -35,8 +35,8 @@ public class CeneInRistoranti implements Utilizzabile, Serializable{ @Override public boolean eAcquistabile() { if((dataScadenzaOffertaCena.before(new GregorianCalendar())) && (numCenedaVendere>ceneVendute)) - return true; - return false; + return false; + return true; } public int getIdCena() { @@ -94,6 +94,12 @@ public class CeneInRistoranti implements Utilizzabile, Serializable{ public void setNumCenedaVendere(int numCenedaVendere) { this.numCenedaVendere = numCenedaVendere; } + + public void setCeneVendute() + { + numCenedaVendere--; + ceneVendute++; + } private int idCena; private String nomeRistorante; diff --git a/it/unisa/info13d/Articoli/Vacanze.java b/it/unisa/info13d/Articoli/Vacanze.java index 6e35afd..0585db7 100644 --- a/it/unisa/info13d/Articoli/Vacanze.java +++ b/it/unisa/info13d/Articoli/Vacanze.java @@ -32,8 +32,8 @@ public class Vacanze implements Utilizzabile, Serializable{ @Override public boolean eAcquistabile() { if(scadenzaOfferta.before(new GregorianCalendar())) //L'offerta della vacanza scade se la data sua scadenza e successiva a quella della data odierna - return true; - return false; + return false; + return true; } public int getIdViaggio() { @@ -75,6 +75,11 @@ public class Vacanze implements Utilizzabile, Serializable{ public void setPrezzoPSingola(double prezzoPSingola) { this.prezzoPSingola = prezzoPSingola; } + + public void setViaggiVenduti() + { + viaggiVenduti++; + } private int idViaggio; private String localitaViaggio; diff --git a/it/unisa/info13d/GestioneCatalogo/Catalogo.java b/it/unisa/info13d/GestioneCatalogo/Catalogo.java index 8a9dc75..ec41005 100644 --- a/it/unisa/info13d/GestioneCatalogo/Catalogo.java +++ b/it/unisa/info13d/GestioneCatalogo/Catalogo.java @@ -5,7 +5,13 @@ import it.unisa.info13d.Articoli.CeneInRistoranti; import it.unisa.info13d.Articoli.Global; import it.unisa.info13d.Articoli.Utilizzabile; import it.unisa.info13d.Articoli.Vacanze; +import it.unisa.info13d.Login.Access; +import it.unisa.info13d.Login.Entry; import it.unisa.info13d.Utility.ReShow; +import it.unisa.info13d.Login.Access; +import it.unisa.info13d.Login.LoggedUser; +import it.unisa.info13d.Login.LoginData; +import it.unisa.info13d.Login.StoricoItem; import java.io.File; import java.io.FileInputStream; @@ -59,12 +65,12 @@ public class Catalogo{ * @throws ClassNotFoundException * @throws FileNotFoundException */ - public void showMenu(String userType,ReShow r) throws FileNotFoundException, ClassNotFoundException, ParseException, IOException + public void showMenu(String userType,String username, ReShow r) throws FileNotFoundException, ClassNotFoundException, ParseException, IOException { if(userType.equals("Admin")) AdminSession.showAdminMenu(this,r); else - ClientSession.showClientMenu(this,r); + ClientSession.showClientMenu(this,r, username); } /** * Questo metodo permette l'inserimento di un nuovo deal all'interno del catalogo @@ -98,23 +104,33 @@ public class Catalogo{ String localita = inputData.nextLine(); System.out.println("Data Partenza (GG/MM/AAAA): "); - DateFormat format = new SimpleDateFormat( "dd/MM/yyyy" ); + String data = inputData.nextLine(); + String temp[]; + String marcatore="/"; + temp = data.split(marcatore); + GregorianCalendar dataPartenza = new GregorianCalendar((Integer.parseInt(temp[2])),(Integer.parseInt(temp[1]))-1,(Integer.parseInt(temp[0]))); + /*DateFormat format = new SimpleDateFormat( "dd/MM/yyyy" ); Date date = format.parse(inputData.nextLine()); GregorianCalendar dataPartenza = new GregorianCalendar(); - dataPartenza.setTime(date); + dataPartenza.setTime(date);*/ System.out.println("Data Scadenza offerta (GG/MM/AAAA): "); - date = format.parse(inputData.nextLine()); + String data2 = inputData.nextLine(); + String temp2[]; + temp2 = data2.split(marcatore); + GregorianCalendar dataScad = new GregorianCalendar((Integer.parseInt(temp2[2])),(Integer.parseInt(temp2[1]))-1,(Integer.parseInt(temp2[0]))); + + /*date = format.parse(inputData.nextLine()); GregorianCalendar dataScadVacanza = new GregorianCalendar(); - dataScadVacanza.setTime(date); + dataScadVacanza.setTime(date);*/ System.out.println("Prezzo singola persona: "); String prezzo = inputData.nextLine(); double prezzoPSing = Double.parseDouble(prezzo); - int idViaggio=Global.get_next_id(); - catalogoOfferte.add(new Vacanze(idViaggio, localita, dataPartenza, dataScadVacanza, prezzoPSing)); + + catalogoOfferte.add(new Vacanze(Global.get_next_id(), localita, dataPartenza, dataScad, prezzoPSing)); store_data(); break; case "2": @@ -132,18 +148,22 @@ public class Catalogo{ double prezzoPSingCena = Double.parseDouble(prezzoCena); System.out.println("Data Scadenza offerta (GG/MM/AAAA): "); - DateFormat format2 = new SimpleDateFormat( "dd/MM/yyyy" ); + String data3 = inputData.nextLine(); + String temp3[]; + String marcatore2="/"; + temp3 = data3.split(marcatore2); + GregorianCalendar dataScadCena = new GregorianCalendar((Integer.parseInt(temp3[2])),(Integer.parseInt(temp3[1])),(Integer.parseInt(temp3[0]))); + /*DateFormat format2 = new SimpleDateFormat( "dd/MM/yyyy" ); date = format2.parse(inputData.nextLine()); GregorianCalendar dataScadCena = new GregorianCalendar(); - dataScadCena.setTime(date); + dataScadCena.setTime(date);*/ System.out.println("Cene da Vendere: "); String nCene = inputData.nextLine(); int ceneDaVendere = Integer.parseInt(nCene); - int idCena=Global.get_next_id(); - - catalogoOfferte.add(new CeneInRistoranti(idCena, ristorante, localitaCena, descrizioneCena, prezzoPSingCena, dataScadCena, ceneDaVendere)); + + catalogoOfferte.add(new CeneInRistoranti(Global.get_next_id(), ristorante, localitaCena, descrizioneCena, prezzoPSingCena, dataScadCena, ceneDaVendere)); store_data(); break; case "3": @@ -157,10 +177,8 @@ public class Catalogo{ System.out.println("Quantita in magazzino: "); String qntMag = inputData.nextLine(); int qnt_mag = Integer.parseInt(prezzoBene); - - int idBene=Global.get_next_id(); - - catalogoOfferte.add(new BeniDiConsumo(idBene, descrizioneBene, prezzo_bene, qnt_mag)); + + catalogoOfferte.add(new BeniDiConsumo(Global.get_next_id(), descrizioneBene, prezzo_bene, qnt_mag)); store_data(); break; } @@ -187,30 +205,39 @@ public class Catalogo{ CeneInRistoranti dealCena = (CeneInRistoranti)deal; visualizzaCena(dealCena); } - - store_data(); } + System.out.print("Elimina prodotto [Inserisci id]: "); Scanner inputData = new Scanner(System.in); String id = inputData.nextLine(); int idDel = Integer.parseInt(id); + System.out.println(idDel); for(Utilizzabile deal: catalogoOfferte) { if(deal instanceof Vacanze && ((Vacanze)deal).getIdViaggio()==idDel) { catalogoOfferte.remove(deal); + store_data(); + break; } if(deal instanceof BeniDiConsumo && ((BeniDiConsumo) deal).getIdBene()==idDel) { catalogoOfferte.remove(deal); + store_data(); + break; } if(deal instanceof CeneInRistoranti && ((CeneInRistoranti) deal).getIdCena()==idDel) { catalogoOfferte.remove(deal); + store_data(); + break; } } } + /** + * Questo metodo visualizza le offerte attive del catalogo + */ public void offerteAttive() { for(Utilizzabile deal: catalogoOfferte) @@ -245,6 +272,9 @@ public class Catalogo{ } } + /** + * Questo metodo visualizza le offerte scadute del catalogo + */ public void offerteScadute() { System.out.println("------ Offerte Scadute -----"); @@ -268,9 +298,132 @@ public class Catalogo{ } } + /** + * Questa metodo aggiunge credito al conto dell'utente + * @param user + * @throws FileNotFoundException + * @throws ClassNotFoundException + * @throws IOException + */ + public void aggiungiCredito(String user) throws FileNotFoundException, ClassNotFoundException, IOException + { + Entry loggedUser = Access.get_user_data(user); + System.out.println("----- Acquisto Credito -----"); + System.out.println("Saldo Attuale:"+ loggedUser.getBalance()); + System.out.println("Aggiungi importo da ricaricare:"); + Scanner inputData = new Scanner(System.in); + String euro = inputData.nextLine(); + loggedUser.setBalance(Double.parseDouble(euro)); + Access.replace_data(user, loggedUser); + System.out.println("Saldo attuale: "+loggedUser.getBalance()); + } + + /** + * Questo metodo permette all'utente di effettuare un acquisto + * + * @param user + * @throws FileNotFoundException + * @throws ClassNotFoundException + * @throws IOException + */ + public void acquistaProdotto(String user) throws FileNotFoundException, ClassNotFoundException, IOException + { + Entry loggedUser = Access.get_user_data(user); + System.out.println("----- Shop ----"); + System.out.println("### Prodotti ###"); + + offerteAttive(); + + System.out.println("Offerta da acquistare[inserisci id]: "); + Scanner inputData = new Scanner(System.in); + String idProd = inputData.nextLine(); + int idDel = Integer.parseInt(idProd); + + Entry userLogged = Access.get_user_data(user); + boolean trovato=false; + ArrayList storico = userLogged.getStorico(); + + for(Utilizzabile dealsc: catalogoOfferte) + { + if((dealsc instanceof Vacanze) && ((Vacanze)dealsc).getIdViaggio()==idDel) + { + Vacanze dealVacanza = (Vacanze)dealsc; + if(dealVacanza.eAcquistabile()) + { + trovato=true; + storico.add(new StoricoItem("Viaggio: "+dealVacanza.getLocalitaViaggio(), new GregorianCalendar() ,dealVacanza.getPrezzoPSingola())); + dealVacanza.setViaggiVenduti(); + loggedUser.setBalance((dealVacanza.getPrezzoPSingola()*(-1))); + store_data(); + Access.replace_data(user, loggedUser); + } + else + { + System.out.println("Il prodotto non e' acquistabile"); + break; + } + } + if((dealsc instanceof BeniDiConsumo) && ((BeniDiConsumo) dealsc).getIdBene()==idDel) + { + BeniDiConsumo dealBene = (BeniDiConsumo)dealsc; + if(dealBene.eAcquistabile()) + { + trovato=true; + storico.add(new StoricoItem("Prodotto: "+dealBene.getDescrizioneBene(), new GregorianCalendar() ,dealBene.getPrezzoBene())); + dealBene.setBeniVenduti(); + loggedUser.setBalance((dealBene.getPrezzoBene()*(-1))); + Access.replace_data(user, loggedUser); + store_data(); + } + else + { + System.out.println("Il prodotto non e' acquistabile"); + break; + } + + } + if( (dealsc instanceof CeneInRistoranti) && ((CeneInRistoranti) dealsc).getIdCena()==idDel) + { + CeneInRistoranti dealCena = (CeneInRistoranti)dealsc; + if(dealCena.eAcquistabile()) + { + trovato=true; + storico.add(new StoricoItem("Cena ristorante "+dealCena.getNomeRistorante()+" "+dealCena.getDescrizione_cena(), new GregorianCalendar() ,dealCena.getCostoPerPersona())); + dealCena.setCeneVendute(); + loggedUser.setBalance((dealCena.getCostoPerPersona()*(-1))); + Access.replace_data(user, loggedUser); + store_data(); + } + else + { + System.out.println("Il prodotto non e' acquistabile"); + break; + } + } + } + if(!trovato) System.out.println("### Prodotto non presente nel catalogo"); + } + + /** + * Questo metodo visualizza lo storico degli ordini effettuati dall'utente + * + * @param user + * @throws FileNotFoundException + * @throws ClassNotFoundException + * @throws IOException + */ + + public void visualizzaStorico(String user) throws FileNotFoundException, ClassNotFoundException, IOException + { + Entry userLogged = Access.get_user_data(user); + System.out.println("########### STORICO ###########"); + ArrayList storico = userLogged.getStorico(); + for(StoricoItem record: storico) + { + System.out.println("| deal: "+record.getDescription()+"| data:"+new SimpleDateFormat("dd/MM/yyyy").format(record.getData_acquisto()+"| Prezzo: "+record.getPrezzo())); + } + } - public void aggiungiCredito() - {} public void visualizzaVacanza(Vacanze dealVacanza) { @@ -283,12 +436,12 @@ public class Catalogo{ int meseS = scadenza.get(Calendar.MONTH); int annoS = scadenza.get(Calendar.YEAR); - System.out.println("#Vacanza-"+dealVacanza.getIdViaggio()+"# Scadenza: "+giornoS+"/"+meseS+"/"+annoS+"| Localita: "+dealVacanza.getLocalitaViaggio()+"| Partenza: "+giornoP+"/"+meseP+"/"+annoP+"| Prezzo Pers. Singola: "+dealVacanza.getPrezzoPSingola()); + System.out.println("#Vacanza-"+dealVacanza.getIdViaggio()+"# Scadenza: "+giornoS+"/"+(meseS+1)+"/"+annoS+"| Localita: "+dealVacanza.getLocalitaViaggio()+"| Partenza: "+giornoP+"/"+(meseP+1)+"/"+annoP+"| Prezzo Pers. Singola: "+dealVacanza.getPrezzoPSingola()+"\n--"); } public void visualizzaBene(BeniDiConsumo dealBene) { - System.out.println("#Articolo-"+dealBene.getIdBene()+"# Descrizione: "+dealBene.getDescrizioneBene()+" Prezzo: "+dealBene.getPrezzoBene()+"| Quantita in magazzino: "+dealBene.getBeniInStock()); + System.out.println("#Articolo-"+dealBene.getIdBene()+"# Descrizione: "+dealBene.getDescrizioneBene()+" Prezzo: "+dealBene.getPrezzoBene()+"| Quantita in magazzino: "+dealBene.getBeniInStock()+"\n--"); } public void visualizzaCena(CeneInRistoranti dealCena) @@ -297,11 +450,18 @@ public class Catalogo{ int giornoSC = scadenzaCena.get(Calendar.DAY_OF_MONTH); int meseSC = scadenzaCena.get(Calendar.MONTH); int annoSC = scadenzaCena.get(Calendar.YEAR); - System.out.println("#Cena-"+dealCena.getIdCena()+"# Scadenza:"+giornoSC+"/"+meseSC+"/"+annoSC+"| Ristorante: "+dealCena.getNomeRistorante()+"| Indirizzo: "+dealCena.getLuogo()+"| Descrizione: "+dealCena.getDescrizione_cena()+"| Costo: "+dealCena.getCostoPerPersona()); + System.out.println("#Cena-"+dealCena.getIdCena()+"# Scadenza:"+giornoSC+"/"+(meseSC+1)+"/"+annoSC+"| Ristorante: "+dealCena.getNomeRistorante()+"| Indirizzo: "+dealCena.getLuogo()+"| Descrizione: "+dealCena.getDescrizione_cena()+"| Costo: "+dealCena.getCostoPerPersona()+"\n--"); } - public ArrayList getCatalogo() { + + public ArrayList getCatalogo() { return catalogoOfferte; } + + public boolean testInputData() + { + + return true; + } private ArrayList catalogoOfferte; diff --git a/it/unisa/info13d/GestioneCatalogo/ClientSession.java b/it/unisa/info13d/GestioneCatalogo/ClientSession.java index 3b85c1c..c233204 100644 --- a/it/unisa/info13d/GestioneCatalogo/ClientSession.java +++ b/it/unisa/info13d/GestioneCatalogo/ClientSession.java @@ -1,8 +1,11 @@ package it.unisa.info13d.GestioneCatalogo; import it.unisa.info13d.Articoli.Utilizzabile; +import it.unisa.info13d.Login.Access; import it.unisa.info13d.Utility.ReShow; +import java.io.FileNotFoundException; +import java.io.IOException; import java.util.ArrayList; import java.util.Scanner; /** @@ -14,8 +17,11 @@ import java.util.Scanner; public class ClientSession { /** * Questo metodo visualizza il menu per i Clienti + * @throws IOException + * @throws ClassNotFoundException + * @throws FileNotFoundException */ - public static void showClientMenu(Catalogo catalogo, ReShow r) { + public static void showClientMenu(Catalogo catalogo, ReShow r, String username) throws FileNotFoundException, ClassNotFoundException, IOException { System.out.println("------------ Menu operazioni ------------"); System.out.println("1 --> Acquista Credito"); //Si acquista credito per l'acquisto dei prodotti System.out.println("2 --> Visualizza Offerte"); //Visualizza le offerte acquistabili @@ -37,16 +43,16 @@ public class ClientSession { switch(sceltaMenu) { case "1": - + catalogo.aggiungiCredito(username); break; case "2": - + catalogo.offerteAttive(); break; case "3": - + catalogo.acquistaProdotto(username); break; case "4": - + catalogo.visualizzaStorico(username); break; case "5": r.reshow = false; diff --git a/it/unisa/info13d/Login/Access.java b/it/unisa/info13d/Login/Access.java index a566a1a..b1607d1 100644 --- a/it/unisa/info13d/Login/Access.java +++ b/it/unisa/info13d/Login/Access.java @@ -251,22 +251,4 @@ public class Access { writer.close(); } - - - - - - - - - - - - - - - - - - } diff --git a/it/unisa/info13d/Login/Entry.java b/it/unisa/info13d/Login/Entry.java index 28b1f84..e502a2d 100644 --- a/it/unisa/info13d/Login/Entry.java +++ b/it/unisa/info13d/Login/Entry.java @@ -42,7 +42,8 @@ public class Entry implements Serializable{ } public void setBalance(double balance) { - this.balance = balance; + this.balance += balance; + } public ArrayList getStorico() { @@ -52,7 +53,7 @@ public class Entry implements Serializable{ private String user; private String password; private String location; - private double balance = 0; + private double balance; private boolean type; private ArrayList storico; diff --git a/it/unisa/info13d/Main.java b/it/unisa/info13d/Main.java index d76b8ea..582f3e0 100644 --- a/it/unisa/info13d/Main.java +++ b/it/unisa/info13d/Main.java @@ -26,7 +26,7 @@ public class Main { ReShow r = new ReShow(); for (;r.reshow;) - load_catalogo.showMenu(login.getType(),r); + load_catalogo.showMenu(login.getType(),login.getUsername(),r); IdCounter.save_counter();