using System; using System.Collections.Generic; namespace Bücherwurm { class Administration { private Catalogue Catalogue {get; set;} private Inventory Inventory {get; set;} private Lend_Administration Lendings {get; set;} public Administration() { Catalogue = new Catalogue(); Inventory = new Inventory(); Lendings = new Lend_Administration(); } public void ListCatalogue() { var BookList = Catalogue.GetProducts(); Console.WriteLine("Produkte insgesamt: {0}", BookList.Count); foreach (var book in BookList) { Console.WriteLine("---"); Console.WriteLine("ID: {0}", book.ProductId); Console.WriteLine("Titel: {0}", book.Name); Console.WriteLine("Kategorie: {0}", book.Category); } Console.WriteLine("---"); } public void AddToCatalogue() { var Correct = false; var Select = ""; do { Console.WriteLine("Möchten Sie ein (B)uch oder ein (M)agazin hinzufügen?"); var TypeSelect = Console.ReadLine().ToLower(); switch (TypeSelect) { case "b": { 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):"); Select = Console.ReadLine().ToLower(); switch (Select) { case "j": { Correct = true; Catalogue.AddManualBook(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; } } break; } case "m": { Console.WriteLine("Bitte geben Sie den Titel an:"); var Title = Console.ReadLine(); Console.WriteLine("Bitte geben Sie die Auflage an:"); var Run = Console.ReadLine(); Console.WriteLine("Bitte geben Sie das Publikum an:"); var Audience = Console.ReadLine(); Console.WriteLine("Bitte geben Sie die Sachgruppe an:"); var Topic = Console.ReadLine(); Console.WriteLine("---"); Console.WriteLine("Sind die Folgenden Angaben Korrekt?"); Console.WriteLine("Titel: {0}", Title); Console.WriteLine("Auflage: {0}", Run); Console.WriteLine("Publikum: {0}", Audience); Console.WriteLine("Sachgruppe: {0}", Topic); Console.WriteLine("---"); Console.WriteLine("(j/n):"); Select = Console.ReadLine().ToLower(); switch (Select) { case "j": { Correct = true; Catalogue.AddManualMagazine(Title, Run, Audience, Topic); Console.WriteLine("Magazin wurde hinzugefügt."); break; } case "n": { Correct = false; break; } default: { Console.WriteLine("Ungültige Eingabe: {0}", Select); break; } } break; } default: { Console.WriteLine("Ungültige Eingabe: {0}", TypeSelect); break; } } } while (!Correct); } public void RemoveFromCatalogue() { Console.WriteLine("Bitte geben Sie die ID des Produktes an:"); var Id = int.Parse(Console.ReadLine()); Catalogue.Remove(Id); Inventory.ProductRemove(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("ProduktID: {0}", item.ProdId); var product = Catalogue.LookupProduct(item.ProdId); Console.WriteLine("Name: {0}", product.Name); 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 Produkt ID an:"); var BookId = int.Parse(Console.ReadLine()); var Book = Catalogue.LookupProduct(BookId); if (Book != null) { Inventory.Add(Book); Console.WriteLine("Buch hinzugefügt."); } else { Console.WriteLine("Ein Produkt 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("Ausgeliehenes Exemplar: {0}", lending.LendItem); 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(); var VirtualList = new List(); do { Console.WriteLine("Bitte Geben sie die Produkt ID an:"); Input = Console.ReadLine(); if (Input != "") { var ProductId = int.Parse(Input); if (Catalogue.LookupProduct(ProductId).LendType == LendTypeEnum.Physical) { if (Inventory.IsProductAvailable(ProductId).Count > 0 && !Inventory.IsProductAvailable(ProductId).TrueForAll(ItemId => LendList.Contains(ItemId))) { LendList.Add(Inventory.IsProductAvailable(ProductId).Find(ItemId => !LendList.Contains(ItemId))); Console.WriteLine("ok"); } else { Console.WriteLine("Exemplar unbekannt oder bereits entliehen."); } } else { VirtualList.Add(ProductId); Console.WriteLine("ok"); } } } while (Input != ""); Console.WriteLine("Bitte geben Sie den Kundennamen an:"); var Customer = Console.ReadLine(); foreach (int id in LendList) { int time = Catalogue.LookupProduct(Inventory.LookupItem(id).ProdId).LendTime; Lendings.Lend(id, Customer, time); Inventory.MarkAsLended(id); } foreach (var prod in VirtualList) { int time = Catalogue.LookupProduct(prod).LendTime; var linkDummy = string.Format("https://dies.ist.ein.downloadlink.fuer.{0}", prod); Console.WriteLine("Dies ist ein {0} Tage gültiger Download-Link: {1}", time, linkDummy); } 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); Inventory.MarkAsAvailable(Lendings.GetActiveLendings().Find(lend => lend.LendId == Returns).LendItem); Console.WriteLine("Ausleihe erfolgreich zurückgegeben."); } else { Console.WriteLine("Ausleihe nicht bekannt oder bereits urückgegeben."); } } public void MakeImport(string JsonTextBooks) { Catalogue.ImportBooks(JsonTextBooks); foreach (var prod in Catalogue.GetProducts()) { if (prod.LendType == LendTypeEnum.Physical) { Inventory.Add(prod); Inventory.Add(prod); } } } public void MakeImport( string JsonTextBooks, string JsonTextMagazines) { Catalogue.ImportBooks(JsonTextBooks); Catalogue.ImportMagazines(JsonTextMagazines); foreach (var prod in Catalogue.GetProducts()) { if (prod.LendType == LendTypeEnum.Physical) { Inventory.Add(prod); Inventory.Add(prod); } } } } }