From 94656244fb78d3fc4ad5bcf9781da945210c7c86 Mon Sep 17 00:00:00 2001 From: nek0 Date: Fri, 24 Apr 2020 15:54:17 +0200 Subject: [PATCH] more UI --- Administration.cs | 202 +++++++++++++++++++++++++++++++++++++++++ Catalogue.cs | 12 ++- Inventory.cs | 26 ++++++ Lend_Administration.cs | 10 ++ Program.cs | 162 ++++++++++++++++++++++++++++++++- StatusEnum.cs | 9 +- 6 files changed, 412 insertions(+), 9 deletions(-) diff --git a/Administration.cs b/Administration.cs index df633c6..4978f54 100644 --- a/Administration.cs +++ b/Administration.cs @@ -1,3 +1,6 @@ +using System; +using System.Collections.Generic; + namespace Bücherwurm { class Administration @@ -14,5 +17,204 @@ namespace Bücherwurm Inventory = new Inventory(); Lendings = new Lend_Administration(); } + + public void ListCatalogue() + { + var BookList = Catalogue.GetBooks(); + Console.WriteLine("Bücher insgesamt: {0}", BookList.Count); + foreach (var book in BookList) + { + Console.WriteLine("---"); + Console.WriteLine("ID: {0}", book.BookId); + Console.WriteLine("Author: {0}", book.Author); + Console.WriteLine("Titel: {0}", book.Title); + } + Console.WriteLine("---"); + } + + public void AddToCatalogue() + { + var Correct = false; + do + { + Console.WriteLine("Bitte geben sie den Author an:"); + var Author = Console.ReadLine(); + Console.WriteLine("Bitte geben Sie den Titel an:"); + var Title = Console.ReadLine(); + Console.WriteLine("Bitte geben Sie das Erscheinungsjahr an:"); + var Year = Console.ReadLine(); + Console.WriteLine("Bitte geben Sie das Erscheinungsland an:"); + var Country = Console.ReadLine(); + Console.WriteLine("Bitte geben Sie die Sprache an:"); + var Language = Console.ReadLine(); + Console.WriteLine("Bitte geben Sie den Bild-Link an:"); + var ImgLink = Console.ReadLine(); + Console.WriteLine("Bitte geben Sie den Link an:"); + var Link = Console.ReadLine(); + Console.WriteLine("Bitte geben Sie die Seitenanzahl an:"); + var Pages = Console.ReadLine(); + Console.WriteLine("---"); + Console.WriteLine("Sind die Folgenden Angaben Korrekt?"); + Console.WriteLine("Author: {0}", Author); + Console.WriteLine("Titel: {0}", Title); + Console.WriteLine("Erscheinungsjahr: {0}", Year); + Console.WriteLine("Land: {0}", Country); + Console.WriteLine("Sprache: {0}", Language); + Console.WriteLine("Bildlink: {0}", ImgLink); + Console.WriteLine("Link: {0}", Link); + Console.WriteLine("Seitenzahl: {0}", Pages); + Console.WriteLine("---"); + Console.WriteLine("(j/n):"); + string Select = Console.ReadLine().ToLower(); + switch (Select) + { + case "j": + { + Correct = true; + Catalogue.Add(Title, Author, Country, ImgLink, Link, Language, int.Parse(Pages), int.Parse(Year)); + Console.WriteLine("Buch wurde hinzugefügt."); + break; + } + case "n": + { + Correct = false; + break; + } + default: + { + Console.WriteLine("Ungültige Eingabe: {0}", Select); + break; + } + } + } while (!Correct); + } + + public void RemoveFromCatalogue() + { + Console.WriteLine("Bitte geben Sie die ID des Buches an:"); + var Id = int.Parse(Console.ReadLine()); + Catalogue.Remove(Id); + Inventory.BookRemove(Id); + } + + public void ListInventory() + { + var InventoryList = Inventory.GetInventory(); + Console.WriteLine("Exemplare insgesamt: {0}", InventoryList.Count); + foreach (var item in InventoryList) + { + Console.WriteLine("---"); + Console.WriteLine("ID: {0}", item.ItemId); + Console.WriteLine("BuchID: {0}", item.BookId); + var Status = ""; + switch (item.Status) + { + case StatusEnum.Available: + { + Status = "Verfügbar"; + break; + } + case StatusEnum.Lended: + { + Status = "Entliehen"; + break; + } + } + Console.WriteLine("Status: {0}", Status); + } + Console.WriteLine("---"); + } + + public void AddToInventory() + { + Console.WriteLine("Bitte geben sie die BuchID an:"); + var BookId = int.Parse(Console.ReadLine()); + var Book = Catalogue.LookupBook(BookId); + if (Book != null) + { + Inventory.Add(Book); + Console.WriteLine("Buch hinzugefügt."); + } + else + { + Console.WriteLine("Ein Buch mit der Id {0} existiert nicht!", BookId); + } + } + + public void RemoveFromInventory() + { + Console.WriteLine("Bitte Geben Sie die ExemplarID an:"); + var ItemId = int.Parse(Console.ReadLine()); + Inventory.Remove(ItemId); + Console.WriteLine("Exemplar wurde entfernt"); + } + + public void ListAllLendings() + { + FormatLendings(Lendings.GetAllLendings()); + } + + public void ListActiveLendings() + { + FormatLendings(Lendings.GetActiveLendings()); + } + + private void FormatLendings(List input) + { + Console.WriteLine("Ausleihen insgesamt: {0}", input.Count); + foreach (var lending in input) + { + Console.WriteLine("---"); + Console.WriteLine("AusleiheID: {0}", lending.LendId); + Console.WriteLine("Ausgeliehene Exemplare: {0}", lending.LendItems); + Console.WriteLine("Rückgabedatum: {0}", lending.ReturnDate); + Console.WriteLine("Ausleihender Kunde: {0}", lending.Customer); + } + } + + public void MakeLending() + { + Console.WriteLine("Bitte Geben sie nacheinander die Exemplar IDs die ausgeliehen werden an, jeweils mit [Enter] bestätigen."); + Console.WriteLine("Eine leere Zeile beendet die Aufnahme der entliehenen Exemplare."); + var Input = ""; + var LendList = new List(); + do + { + Console.WriteLine("Bitte Geben sie die Exemplar ID an:"); + Input = Console.ReadLine(); + if (Input != "") + { + var ItemId = int.Parse(Input); + if (Inventory.isAvailable(ItemId) && !LendList.Contains(ItemId)) + { + LendList.Add(ItemId); + Console.WriteLine("ok"); + } + else + { + Console.WriteLine("Exemplar unbekannt oder bereits entliehen."); + } + } + } while (Input != ""); + Console.WriteLine("Bitte geben Sie den Kundennamen an:"); + var Customer = Console.ReadLine(); + Lendings.Lend(LendList.ToArray(), Customer); + Console.WriteLine("Ausleihe erfolgreich!"); + } + + public void ReturnLending() + { + Console.WriteLine("Bitte geben Sie die zurückzugebende AusleiheID an:"); + var Returns = int.Parse(Console.ReadLine()); + if (Lendings.GetActiveLendings().Find(lending => lending.LendId == Returns) != null) + { + Lendings.Return(Returns); + Console.WriteLine("Ausleihe erfolgreich zurückgegeben."); + } + else + { + Console.WriteLine("Ausleihe nicht bekannt oder bereits urückgegeben."); + } + } } } \ No newline at end of file diff --git a/Catalogue.cs b/Catalogue.cs index 22bb08d..1753c86 100644 --- a/Catalogue.cs +++ b/Catalogue.cs @@ -17,7 +17,7 @@ namespace Bücherwurm public void Import(string JsonString) { - //TODO: implement! + throw new NotImplementedException(); } public void Add(string Title, string Author, @@ -32,5 +32,15 @@ namespace Bücherwurm { Books.RemoveAll(book => book.BookId == BookID); } + + public List GetBooks() + { + return Books; + } + + public Book LookupBook(int BookId) + { + return Books.Find(book => book.BookId == BookId); + } } } \ No newline at end of file diff --git a/Inventory.cs b/Inventory.cs index 0d3cc97..d9b3e0e 100644 --- a/Inventory.cs +++ b/Inventory.cs @@ -19,9 +19,35 @@ namespace Bücherwurm NextId = NextId++; } + public void Add(int BookId) + { + InventoryList.Add(new Item(NextId, BookId)); + NextId = NextId++; + } + public void Remove(int Id) { InventoryList.RemoveAll(item => item.ItemId == Id); } + + public void BookRemove(int BookId) + { + InventoryList.RemoveAll(item => item.BookId == BookId); + } + + public List GetInventory() + { + return InventoryList; + } + + public bool IsInInventory(int Id) + { + return (InventoryList.Find(item => item.ItemId == Id) != null); + } + + public bool isAvailable(int Id) + { + return (InventoryList.Find(item => item.ItemId == Id && item.Status == StatusEnum.Available) != null); + } } } \ No newline at end of file diff --git a/Lend_Administration.cs b/Lend_Administration.cs index 20d88e7..d2da9e1 100644 --- a/Lend_Administration.cs +++ b/Lend_Administration.cs @@ -28,5 +28,15 @@ namespace Bücherwurm { ActiveLendings.RemoveAll(id => id == LendID); } + + public List GetAllLendings() + { + return Lendings; + } + + public List GetActiveLendings() + { + return Lendings.FindAll(lend => ActiveLendings.Contains(lend.LendId)); + } } } \ No newline at end of file diff --git a/Program.cs b/Program.cs index 7e26663..23531e1 100644 --- a/Program.cs +++ b/Program.cs @@ -4,9 +4,167 @@ namespace Bücherwurm { class Program { - static void Main(string[] args) + private Administration Admin {get; set;} + void Main(string[] args) { - var Admin = new Administration(); + Admin = new Administration(); + var Continue = true; + do + { + Console.WriteLine("Bitte geben Sie den Buchstaben für den Gewünschten Bereich an:"); + Console.Write("(K)atalog, (I)nventar, (A)usleihe, Program beenden (X):"); + var CategorySelect = Console.ReadLine().ToLower(); + switch (CategorySelect) + { + case "k": + { + CatalogueSelection(); + break; + } + case "i": + { + InventorySelection(); + break; + } + case "a": + { + LendingSelection(); + break; + } + case "x": + { + Continue = false; + break; + } + default: + { + Console.WriteLine("Unbekannte Aktion: {0}", CategorySelect); + break; + } + } + } while (Continue); + } + + private void CatalogueSelection() + { + Console.WriteLine("Bitte geben Sie den Buchstaben für die gewünschte Aktion an:"); + Console.WriteLine("Katalog auf(l)isten, Bu(c)h hinzufügen, Buch entfe(r)nen, Katalog verlassen (x):"); + var CatalogueSelect = Console.ReadLine().ToLower(); + var Continue = true; + do + { + switch (CatalogueSelect) + { + case "x": + { + Continue = false; + break; + } + case "l": + { + Admin.ListCatalogue(); + break; + } + case "c": + { + Admin.AddToCatalogue(); + break; + } + case "r": + { + Admin.RemoveFromCatalogue(); + break; + } + default: + { + Console.WriteLine("Ungültige Eingabe: {0}", CatalogueSelect); + break; + } + } + } while (Continue); + } + + private void InventorySelection() + { + Console.WriteLine("Bitte geben Sie den Buchstaben für die gewünschte Aktion an:"); + Console.WriteLine("Inventar auf(l)isten, Exemplar hinzufügen (c), Exemplar entfe(r)nen, Inventar verlassen (x):"); + var InventorySelect = Console.ReadLine().ToLower(); + var Continue = true; + do + { + switch (InventorySelect) + { + case "x": + { + Continue = false; + break; + } + case "l": + { + Admin.ListInventory(); + break; + } + case "c": + { + Admin.AddToInventory(); + break; + } + case "r": + { + Admin.RemoveFromInventory(); + break; + } + default: + { + Console.WriteLine("Ungültige Eingabe: {0}", InventorySelect); + break; + } + } + } while (Continue); + } + + private void LendingSelection() + { + Console.WriteLine("Bitte geben Sie den Buchstaben für die gewünschte Aktion an:"); + Console.WriteLine("Aktive Ausleihen auf(l)isten, Alle Ausleihen Aufli(s)ten, (A)usleihe tätigen, Ausleihe zu(r)ückgeben, Ausleihe verlassen (x):"); + var LendSelect = Console.ReadLine().ToLower(); + var Continue = true; + do + { + switch (LendSelect) + { + case "x": + { + Continue = false; + break; + } + case "l": + { + Admin.ListActiveLendings(); + break; + } + case "s": + { + Admin.ListAllLendings(); + break; + } + case "a": + { + Admin.MakeLending(); + break; + } + case "r": + { + Admin.ReturnLending(); + break; + } + default: + { + Console.WriteLine("UNbekannte Eingabe: {0}", LendSelect); + break; + } + } + } while (Continue); } } } diff --git a/StatusEnum.cs b/StatusEnum.cs index 2882e48..a4d5bcf 100644 --- a/StatusEnum.cs +++ b/StatusEnum.cs @@ -1,11 +1,8 @@ namespace Bücherwurm { - partial class Item + public enum StatusEnum { - public enum StatusEnum - { - Available, - Lended - } + Available, + Lended } } \ No newline at end of file