finish implementation of electronic media

This commit is contained in:
nek0 2020-04-28 17:22:11 +02:00
parent 48bb08bd88
commit 7cd70212a4
5 changed files with 76 additions and 16 deletions

2
.vscode/launch.json vendored
View file

@ -11,7 +11,7 @@
"preLaunchTask": "build", "preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path. // If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/Bücherwurm.dll", "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/Bücherwurm.dll",
"args": ["books.json"], "args": ["books.json", "magazines.json"],
"cwd": "${workspaceFolder}", "cwd": "${workspaceFolder}",
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
"console": "integratedTerminal", "console": "integratedTerminal",

View file

@ -94,7 +94,7 @@ namespace Bücherwurm
Console.WriteLine("Bitte geben Sie die ID des Buches an:"); Console.WriteLine("Bitte geben Sie die ID des Buches an:");
var Id = int.Parse(Console.ReadLine()); var Id = int.Parse(Console.ReadLine());
Catalogue.Remove(Id); Catalogue.Remove(Id);
Inventory.BookRemove(Id); Inventory.ProductRemove(Id);
} }
public void ListInventory() public void ListInventory()
@ -180,22 +180,30 @@ namespace Bücherwurm
Console.WriteLine("Eine leere Zeile beendet die Aufnahme der entliehenen Exemplare."); Console.WriteLine("Eine leere Zeile beendet die Aufnahme der entliehenen Exemplare.");
var Input = ""; var Input = "";
var LendList = new List<int>(); var LendList = new List<int>();
var VirtualList = new List<int>();
do do
{ {
Console.WriteLine("Bitte Geben sie die Exemplar ID an:"); Console.WriteLine("Bitte Geben sie die Produkt ID an:");
Input = Console.ReadLine(); Input = Console.ReadLine();
if (Input != "") if (Input != "")
{ {
var ItemId = int.Parse(Input); var ProductId = int.Parse(Input);
if (Inventory.isAvailable(ItemId) && !LendList.Contains(ItemId)) if (Catalogue.LookupProduct(ProductId).LendType == LendTypeEnum.Physical)
{ {
LendList.Add(ItemId); 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"); Console.WriteLine("ok");
} }
else else
{ {
Console.WriteLine("Exemplar unbekannt oder bereits entliehen."); Console.WriteLine("Exemplar unbekannt oder bereits entliehen.");
} }
} else
{
VirtualList.Add(ProductId);
Console.WriteLine("ok");
}
} }
} while (Input != ""); } while (Input != "");
Console.WriteLine("Bitte geben Sie den Kundennamen an:"); Console.WriteLine("Bitte geben Sie den Kundennamen an:");
@ -204,6 +212,13 @@ namespace Bücherwurm
{ {
int time = Catalogue.LookupProduct(Inventory.LookupItem(id).ProdId).LendTime; int time = Catalogue.LookupProduct(Inventory.LookupItem(id).ProdId).LendTime;
Lendings.Lend(id, Customer, time); 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!"); Console.WriteLine("Ausleihe erfolgreich!");
} }
@ -215,6 +230,7 @@ namespace Bücherwurm
if (Lendings.GetActiveLendings().Find(lending => lending.LendId == Returns) != null) if (Lendings.GetActiveLendings().Find(lending => lending.LendId == Returns) != null)
{ {
Lendings.Return(Returns); Lendings.Return(Returns);
Inventory.MarkAsAvailable(Lendings.GetActiveLendings().Find(lend => lend.LendId == Returns).LendItem);
Console.WriteLine("Ausleihe erfolgreich zurückgegeben."); Console.WriteLine("Ausleihe erfolgreich zurückgegeben.");
} }
else else
@ -223,11 +239,26 @@ namespace Bücherwurm
} }
} }
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) public void MakeImport(string JsonTextBooks, string JsonTextMagazines)
{ {
Catalogue.ImportBooks(JsonTextBooks); Catalogue.ImportBooks(JsonTextBooks);
Catalogue.ImportMagazines(JsonTextMagazines); Catalogue.ImportMagazines(JsonTextMagazines);
foreach (var prod in Catalogue.GetProducts()) foreach (var prod in Catalogue.GetProducts())
{
if (prod.LendType == LendTypeEnum.Physical)
{ {
Inventory.Add(prod); Inventory.Add(prod);
Inventory.Add(prod); Inventory.Add(prod);
@ -235,3 +266,4 @@ namespace Bücherwurm
} }
} }
} }
}

View file

@ -51,6 +51,7 @@ namespace Bücherwurm
{ {
var epaper = new EPaper(mag); var epaper = new EPaper(mag);
epaper.OverwriteNullId(NextId); epaper.OverwriteNullId(NextId);
ePapers.Add(epaper);
NextId += 1; NextId += 1;
} }
Products.AddRange(new List<IProduct>(ePapers)); Products.AddRange(new List<IProduct>(ePapers));

View file

@ -30,7 +30,7 @@ namespace Bücherwurm
InventoryList.RemoveAll(item => item.ItemId == Id); InventoryList.RemoveAll(item => item.ItemId == Id);
} }
public void BookRemove(int ProdId) public void ProductRemove(int ProdId)
{ {
InventoryList.RemoveAll(item => item.ProdId == ProdId); InventoryList.RemoveAll(item => item.ProdId == ProdId);
} }
@ -45,14 +45,41 @@ namespace Bücherwurm
return (InventoryList.Find(item => item.ItemId == Id) != null); return (InventoryList.Find(item => item.ItemId == Id) != null);
} }
public bool isAvailable(int Id) public bool IsAvailable(int ItemId)
{ {
return (InventoryList.Find(item => item.ItemId == Id && item.Status == StatusEnum.Available) != null); return (InventoryList.Find(item => item.ItemId == ItemId && item.Status == StatusEnum.Available) != null);
}
public List<int> IsProductAvailable(int ProdId)
{
var items = InventoryList.FindAll(item => item.ProdId == ProdId && item.Status == StatusEnum.Available);
var ret = new List<int>();
foreach (var item in items)
{
ret.Add(item.ItemId);
}
if (ret.Count == 0)
{
return null;
} else
{
return ret;
}
} }
public Item LookupItem(int ItemId) public Item LookupItem(int ItemId)
{ {
return InventoryList.Find(item => ItemId == item.ItemId); return InventoryList.Find(item => ItemId == item.ItemId);
} }
public void MarkAsLended(int ItemId)
{
InventoryList[InventoryList.FindIndex(item => item.ItemId == ItemId)].Status = StatusEnum.Lended;
}
public void MarkAsAvailable(int ItemId)
{
InventoryList[InventoryList.FindIndex(item => item.ItemId == ItemId)].Status = StatusEnum.Available;
}
} }
} }

View file

@ -13,7 +13,7 @@ namespace Bücherwurm
{ {
Console.WriteLine("Versuche Bücher aus JSON Katalog von {0} zu importieren...", args[0]); Console.WriteLine("Versuche Bücher aus JSON Katalog von {0} zu importieren...", args[0]);
string jsonString = File.ReadAllText(args[0]); string jsonString = File.ReadAllText(args[0]);
Admin.MakeImport(jsonString, ""); Admin.MakeImport(jsonString);
Console.WriteLine("Erfolg!"); Console.WriteLine("Erfolg!");
} else if (args.Length == 2) } else if (args.Length == 2)
{ {