package User; import java.util.Scanner; import Cli.Confirm; import Cards.BasicFidelityCard; import Cards.FidelityCard; import Cards.LotteryFidelityCard; import Cards.PointFidelityCard; import Cards.VisitableCard; import Cards.VisiterCard; import Others.Adress; import Others.Historique; import Others.IDCard; import Order.Order; import Cli.Input; import Item.FactoryDish; import Item.Meal; import Item.MealFactory; import Offers.Observer; public class Customer extends HumanUser implements VisiterCard,Observer { private boolean spamAgree; private Historique historique; private FidelityCard card; private IDCard idCard; public Customer(long phoneNumber, String name, String username, String mail, String password, Adress adress, boolean activated, String birthdayDate, String surname,boolean spamAgree,Historique historique,FidelityCard card ) { super(phoneNumber, name, username, mail, password, adress, activated, birthdayDate, surname); this.spamAgree = spamAgree; this.historique = historique; this.card = card; } public FidelityCard getCard() { return card; } @Override public String toString() { return "Customer [spamAgree=" + spamAgree + ", historique=" + historique + ", card=" + card + "]"; } public void placeOrder(Restaurant restaurant){ Order order = new Order(); System.out.println(restaurant.toString()); do { if (Confirm.text("Do you want a Meal?")){ System.out.println("listdesMeal"); // � faire String choice = Cli.Input.string("Which meal do you want?"); boolean isIn = false; for(Meal meal : restaurant.listOfMeal){ if(meal.toString() == choice){ isIn = true; } } if (isIn == false){ System.out.println("This meal isn't propose by this restaurant"); } else { if(choice == "FullMeal"){ System.out.println("listedesDish"); //� faire String entry1 = Cli.Input.string("Which entry do you want in your meal?"); String main1 = Cli.Input.string("Which main do you want in your meal?"); String dessert1 = Cli.Input.string("Which dessert do you want in your meal?"); MealFactory factory1 = new MealFactory(); //Meal newmeal = factory1.createMeal("fullmeal", _name, _typeOfFood) } if (choice == "HalfMeal"){ System.out.println("listedesDish"); //� faire String typeOfFormule = Cli.Input.string("Which formula do you want? Entry/Main(EM) or Main/Dessert(MD)"); if(typeOfFormule == "EM"){ String entry2 = Cli.Input.string("Which entry do you want in your meal?"); String main2 = Cli.Input.string("Which main do you want in your meal?"); MealFactory factory2 = new MealFactory(); //Meal newmeal = factory2.createMeal("halfmeal" } else if(typeOfFormule == "MD"){ String main3 = Cli.Input.string("Which main do you want in your meal?"); String dessert3 = Cli.Input.string("Which dessert do you want in your meal?"); MealFactory factory3 = new MealFactory(); //Meal newmeal = factory3.createMeal("halfmeal" } else{ System.out.println("This type of Meal is not available"); } } } } else if (Confirm.text("Do you want a dish?")){ System.out.println("listOfDish"); String dish = Cli.Input.string("Which dish do you want ?"); FactoryDish factory4 = new FactoryDish(); } } while (Confirm.text("Do you want something else ?")); System.out.println("Do you want a Meal? (y)es or (n)o"); Scanner sc = new Scanner(System.in); String choice = sc.nextLine(); if (Confirm.text("Do you want a Meal?")){ } } public void registerFidelityPlan(String newTypeOfFidelityCard){ if(newTypeOfFidelityCard == this.card.returnType()){ System.out.println("You already have this card");} else if ((newTypeOfFidelityCard != "Basic")&(newTypeOfFidelityCard != "Lottery")&(newTypeOfFidelityCard != "Point")){ System.out.println("You have to choose between Point, Lottery card"); } else if (newTypeOfFidelityCard == "Basic"){ System.out.println("You have to choose between Point, Lottery card"); } else { if (newTypeOfFidelityCard == "Point"){ idCard=IDCard.getInstance(); this.card = new PointFidelityCard(idCard.getNextSerialNumber(),0); } if (newTypeOfFidelityCard == "Lottery"){ idCard=IDCard.getInstance(); this.card = new LotteryFidelityCard(idCard.getNextSerialNumber(),10); } } } public void unregisterFidelityPlan(String newTypeOfFidelityCard){ if(this.card.returnType() == "Basic"){ System.out.println("You already have this card");} else { idCard=IDCard.getInstance(); this.card = new BasicFidelityCard(idCard.getNextSerialNumber()); } } public Historique getHistorique() { return historique; } public long getPointInTheCard(){ if((this.card.returnType() == "Basic") || (this.card.returnType() == "Lottery")){ System.out.println("You don't have the right type of Card"); return 0; } else { return visit(card); } } @Override public long visit(VisitableCard card) { return card.accept(); } public void acceptSpam (){ if (spamAgree == true){ System.out.println("You've already accept to receive notifications"); } else { this.spamAgree = true; } } public void refuseSpam(){ if (spamAgree == false){ System.out.println("You've already refuse to receive notifications"); } else { this.spamAgree = false; } } @Override public void update() { } }