// Da keine Konsoleneingaben gefordert sind, werden die Konsoleneingaben per Zufall durch generateRandomNumber() simuliert // Annahme: Es handelt sich immer um eine Session d.h. pro Session 1 Bestellung. Aus diesem Grund kann pro Bestellung nur jeweils eins der Services ausgewählt werden ODER // der allumfängliche Montage-, und Funktionstest-Service, der alle angebotenen Services beinhaltet und die Auswahl von weiteren Services obselet macht. // Annahme2: Bei Computerteilen besteht diese Beschränkung nicht. Der User kann z.B. pro Bestellung 5x die gleiche Grafikkarte kaufen. private static void starteUserDialog(List <Dienstleistung> dListe, List <Computerteil> ctListe, Paket paket, Einkaufswagen einkaufswagen) { // in 33% der Fälle wählt der User einfach ein Paket aus, weil der Rabatt ihn überzeugt hat int auswahlPaket = generateRandomNumber(0, 3); if (auswahlPaket != 1) { // Wie lange soll der Dialog laufen? Hier: 12x for (int i = 0; i < 12; i++) { // Simulation: Wahl Computerteil oder Service per Zufall int randomProduktID = generateRandomNumber(1, dListe.Count + ctListe.Count); // Produkt Computerteil? if (randomProduktID <= ctListe.Count) { Computerteil computerteil = ctListe.Find(i => i.produktID == randomProduktID); // Anzahl pro Computerteil pro Bestellung? hier: max 3x int anzahl = generateRandomNumber(1, 4); EinkaufswagenItem item = new EinkaufswagenItem(computerteil.produktID, computerteil.name, computerteil.preis, anzahl, computerteil.rabatt, computerteil.typ); einkaufswagen.updateEinkaufswagen(item); } // Ansonsten ist es ein Service else { // Jeder Service kann pro Bestellung nur 1x bestellt werden int anzahl = 1; Dienstleistung dienstleistung = dListe.Find(i => i.produktID == randomProduktID); EinkaufswagenItem item = new EinkaufswagenItem(dienstleistung.produktID, dienstleistung.name, dienstleistung.preis, anzahl, dienstleistung.rabatt, dienstleistung.typ); einkaufswagen.updateEinkaufswagen(item); } } } // User hat Paket ausgewählt, update Einkaufswagen und beende Dialog else { int anzahl = 1; EinkaufswagenItem item = new EinkaufswagenItem(paket.produktID, paket.name, paket.preis, anzahl, paket.rabatt); einkaufswagen.updateEinkaufswagen(item); } // print Warenkorb Console.WriteLine(); einkaufswagen.checkOut(); Console.WriteLine(); }
public void updateEinkaufswagen(EinkaufswagenItem einkaufswagenItem) { // Produkt bereits im Einkaufswagen? if (!einkaufsListe.Any(i => i.produktID == einkaufswagenItem.produktID)) { // All in One Service bestellt? --> Lösche alle anderen Services, da in dem Service bereits inkludiert if (einkaufswagenItem.produktID == 11) { einkaufsListe.RemoveAll(j => j.produktID != 11 && j.typ == "Dienstleistung"); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine("Der All in One Service wurde ausgewählt. Die restlichen Dienstleistungen wurden wieder aus dem Einkaufswagen entfernt!"); Console.ResetColor(); } // Prüfe vorm Hinzufügen eines Services, ob All in One Service bereits im Einkaufswagen if (!einkaufsListe.Any(i => i.produktID == 11)) { einkaufsListe.Add(einkaufswagenItem); Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine(einkaufswagenItem.anzahl + "x" + einkaufswagenItem.name + " zum Einkaufswagen hinzugefügt!"); Console.ResetColor(); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Sie können keine weiteren Dienstleistungen in den Warenkorb aufnehmen!"); Console.ResetColor(); } } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(einkaufswagenItem.name + " bereits im Einkaufswagen vorhanden!"); Console.ResetColor(); } }