/*
 * Die Weihnachtsvorbereitungen starten dieses Jahr sehr früh.
 * Da der Weihnachtsmann den Stress kurz vor Weihnachten
 * verringern will, startet er bereits jetzt mit der Auswertung
 * von Wunschzetteln, damit die Geschenke frühzeitig besorgt werden können.
 *
 * Die Elfen haben ihm geholfen und alle bereits bekannten Wünsche
 * in eine Textdatei zusammengefügt.
 * Der Text hat das Format:
 *
 * Vorname Nachmname:
 * - Wunsch 1
 * - Wunsch 2
 * - ...
 * Vorname2 Nachname2:
 * - Wunsch 3
 * - Wunsch 4
 * - ...
 * ...
 *
 * Um dem Weihnachtsmann zu helfen die Übersicht zu behalten,
 * wollen sie ein JavaScript Programm schreiben, das die Wunschliste
 * einliest und für den Weihnachtsmann besser durchsuchbar macht.
 *
 * Dafür bekommen Sie einen Auszug der Textdatei in der Variable wishlist:
 */
 
let wishlist = `Maria Schmidt:
- Kamera
- Socken
Johann Müller:
- Kopfhörer
- Buch
- Einkaufsgutschein
Sophie Wagner:
- Puzzle
Maximilian Becker:
- Fußball
- Handyhülle
Laura Zimmermann:
- Kochbuch
- Einkaufsgutschein
Felix Schneider:
- Lautsprecher
Lea Hofmann:
- Mantel
- Buch
Jonas Meier:
- Zeichenstifte
- Streaming-Abonnement
Hannah Schulz:
- Einkaufsgutschein
David Richter:
- Fernglas
Lena Berger:
- Gemälde
Elias Keller:
- Fahrradschloss
- Powerbank
Sarah Schäfer:
- Kochkurs
Julia Koch:
- Zeitschrift
Simon Fischer:
- Tee
Sophia Wolf:
- Tagebuch
- Roman
Paula Braun:
- Einkaufsgutschein
Nico Herrmann:
- Trikot
Leonie Schmitz:
- Yoga-Kurs
- Buch
Tom Vogt:
- Survival-Kurs
Lisa Hartmann:
- Schmuck
Tim Bauer:
- Einkaufsgutschein
Emily Kaiser:
- E-Reader
Matthias Dietrich:
- Whisky
Anna Lehmann:
- Buntstifte
- Malbuch
Christian Wolff:
- Schach
Marie Schuster:
- Massage
Philipp Kaiser:
- Auto
Mia Brandt:
- Basteln
Finn Schulze:
- Film
Luisa Hofmann:
- Pasta
Jonas Vogel:
- Segeltour
Amelie Krüger:
- Inlineskates
Julian Weiß:
- Fernglas
Laura Sommer:
- Einkaufsgutschein
Benjamin Werner:
- Sudoku
Sophie Schreiber:
- Fallschirmsprung
Maximilian Neumann:
- Lautsprecher
Emily Schmidt:
- Garten
- Einkaufsgutschein
Antonia Meyer:
- Fotoalbum
- Dinner
Paul Winter:
- Kompass
- Survival-Kurs
Sarah Müller:
- Notizbuch
- Städtereise
David Richter:
- Kochzeitschrift`;
 
/*
 * Schreiben Sie eine Funktion readWishlist(text).
 * Der Parameter Text ist die bereits eingelesene Wunschliste als String.
 * Die Funktion liest den gesamten Text ein und speichert die Daten
 * in einem Array von Objekten.
 * Jedes Element in dem Array enthält den Namen der Person und wiederum
 * ein Array aller Wünsche der jeweiligen Person.
 *
 * Beispiel:
 * Für diesen eingelesenen Text
 *
 * Sarah Müller:
 * - Notizbuch
 * - Städtereise
 *
 * wird diese Datenstruktur ermittelt
 *
 * [ {name: "Sarah Müller", wishes: ["Notizbuch", "Städtereise"]} ]
 */
 
function readWishlist(text) {}
 
let people = readWishlist(wishlist);
 
/*
 * Um die Personen in dieser Liste nun besser suchen zu können,
 * schreiben Sie eine Funktion findPerson(personName, people)
 *
 * Der erste Parameter - personName - ist der Name der gesuchten Person als String.
 * Der zweite Parameter - people - ist das von Ihnen mit der Funktion readWishlist
 * eingelesene Array aus Objekten.
 *
 * findPerson liefert das gesamte Objekt - inklusive Name und aller Wünsche -
 * der gesuchten Person zurück.
 *
 * Beispiel:
 * let p = findPerson("Sarah Müller", people);
 * console.log(p.name, p.wishes); // Sarah Müller [ 'Notizbuch', 'Städtereise' ]
 */
 
function findPerson(personName, people) {}
 
console.log("Exercise 1");
console.log("----------");
let n1 = "Emily Schmidt";
let p1 = findPerson(n1, people);
console.log(n1, p1.wishes);
 
let n2 = "Johann Müller";
let p2 = findPerson(n2, people);
console.log(n2, p2.wishes);
console.log();
 
/*
 * Mit den Funktionen von oben haben Sie dem Weihnachtsmann bereits
 * stark geholfen einen besseren Überblick zu bewahren.
 *
 * Nachdem der Weihnachtsmann die Funktion ein wenig getestet hat kommt
 * er mit einem Feature-Request auf Sie zu.
 *
 * Die bisherige Datenstruktur erlaubt es dem Weihnachtsmann sehr gut
 * nach bestimmten Personen zu suchen und deren Wünsche zu sehen.
 * Für die Beschaffung der Geschenke ist das aber nicht optimal.
 * Da der Weihnachtsmann wissen möchte wie viele Exemplare der jeweiligen
 * Geschenke beschafft werden müssen wünscht er sich, dass sie die Wunschliste
 * in eine andere Datenstruktur einlesen.
 * Der Weihnachtsmann hätte gerne eine Map, wobei das Geschenk selbst der
 * Schlüssel der Map ist und der Wert ein Objekt, das angibt welche Personen
 * sich das Geschenk gewünscht haben und eine Gesamtanzahl der zu besorgenden Exemplare
 * angibt.
 *
 * Beispiel:
 *
 * Sarah Müller:
 * - Baldur's Gate 3
 * Norbert Winkler:
 * - Baldur's Gate 3
 *
 * let wishlist = {};
 * wishlist["Baldur's Gate 3"] = {
 *  people: ["Sarah Müller", "Norbert Winkler"],
 *  count: 2
 * };
 *
 * Erstellen Sie die Funktion readWishes(text) die die Wunschliste
 * nun in die neue Struktur einliest.
 */
 
function readWishes(text) {}
 
let wishes = readWishes(wishlist);
 
console.log("Exercise 2");
console.log("----------");
let w1 = "Einkaufsgutschein";
let l1 = wishes[w1];
console.log(w1, l1.people, l1.count);
 
let w2 = "Kopfhörer";
let l2 = wishes[w2];
console.log(w2, l2.people, l2.count);
console.log();
 
/*
 * Die Elfen kommen ganz aufgeregt zum Weihnachtsmann.
 * Da sie immer wieder Fälle haben, wo sich Kinder
 * mehr als ein Exemplar desselben Geschenks wünschen
 * haben sie das Format der Textdatei eigenständig angepasst.
 *
 * Es ist jetzt möglich optional hinter einem Wunsch
 * anzugeben, wie oft man sich das jeweilige Geschenk wünscht.
 *
 * zB
 * - Socken 2x
 *
 * Sie bekommen wieder einen neuen Auszug der Datei:
 */
 
let wishlistExtended = `Maria Schmidt:
- Kamera
- Socken 2x
Johann Müller:
- Kopfhörer
- Buch
- Einkaufsgutschein
Sophie Wagner:
- Puzzle 3x
Maximilian Becker:
- Fußball
- Handyhülle 3x
Laura Zimmermann:
- Kochbuch 5x
- Einkaufsgutschein
Felix Schneider:
- Lautsprecher
Lea Hofmann:
- Mantel
- Buch
Jonas Meier:
- Zeichenstifte 64x
- Streaming-Abonnement
Hannah Schulz:
- Einkaufsgutschein
David Richter:
- Fernglas
Lena Berger:
- Gemälde
Elias Keller:
- Fahrradschloss
- Powerbank 2x
Sarah Schäfer:
- Kochkurs
Julia Koch:
- Zeitschrift
Simon Fischer:
- Tee 365x
Sophia Wolf:
- Tagebuch
- Roman 3x
Paula Braun:
- Einkaufsgutschein
Nico Herrmann:
- Trikot 5x
Leonie Schmitz:
- Yoga-Kurs
- Buch 2x
- Socken 7x
Tom Vogt:
- Survival-Kurs
Lisa Hartmann:
- Schmuck 3x
Tim Bauer:
- Einkaufsgutschein
Emily Kaiser:
- E-Reader
Matthias Dietrich:
- Whisky 4x
Anna Lehmann:
- Buntstifte 23x
- Malbuch
Christian Wolff:
- Schach
Marie Schuster:
- Massage 7x
Philipp Kaiser:
- Auto
Mia Brandt:
- Basteln
Finn Schulze:
- Film
Luisa Hofmann:
- Pasta
Jonas Vogel:
- Segeltour
Amelie Krüger:
- Inlineskates
Julian Weiß:
- Fernglas
Laura Sommer:
- Einkaufsgutschein
Benjamin Werner:
- Sudoku 30x
Sophie Schreiber:
- Fallschirmsprung
Maximilian Neumann:
- Lautsprecher
Emily Schmidt:
- Garten
- Einkaufsgutschein
Antonia Meyer:
- Fotoalbum 3x
- Dinner
Paul Winter:
- Kompass
- Survival-Kurs
Sarah Müller:
- Notizbuch 3x
- Städtereise
David Richter:
- Kochzeitschrift 4x`;
 
/*
 * Schreiben Sie eine neue Funkiton readWishesExtended(text)
 * die das neue Textformat nun einliest.
 *
 * Passen Sie dabei auch die Datenstruktur an, sodass auch nachvollziehbar
 * ist, von wem wie viele der gewünschten Exemplare gewünscht wurden.
 *
 * Beispiel:
 * Maria Schmidt:
 * - Socken 2x
 * Leonie Schmitz:
 * - Socken 7x
 *
 * let wishlist = {};
 * wishlist["Socken"] = {
 *  people: [
 *    {
 *      name: "Maria Schmidt",
 *      count: 2
 *    }, {
 *      name: "Leonie Schmitz",
 *      count: 7
 *    }
 *  ],
 *  count: 9
 * };
 */
 
function readWishesExtended(text) {}
 
let wishesExtended = readWishesExtended(wishlistExtended);
 
console.log("Exercise 3");
console.log("----------");
let wx1 = "Zeichenstifte";
let lx1 = wishesExtended[wx1];
console.log(wx1, lx1.people, lx1.count);
 
let wx2 = "Socken";
let lx2 = wishesExtended[wx2];
console.log(wx2, lx2.people, lx2.count);