Buecherwurm/Administration.cs

225 lines
8.2 KiB
C#

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.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<Lending> 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<int>();
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.");
}
}
public void MakeImport(string JsonText)
{
Catalogue.Import(JsonText);
}
}
}