protected ModelClass.IID SearchMenu(string title) { ModelClass.IID result = null; switch (ReadChoice(true, title, new string[] { "Автора", "Книгу", "Экземпляр книги", "Читателя", "Вернутся в главное меню" })) { case 0: result = Search("Введите id или Имя Фамилию автора", controller.FindAuthors, DisplayAuthorShort); if (result != null) { Console.WriteLine("\r\nАвтор\r\n" + DisplayAuthor(result as ModelClass.Author)); } return(result); case 1: result = Search("Введите id, название книги, год или автора", controller.FindBooks, DisplayBookShort); if (result != null) { Console.WriteLine("\r\nКнига\r\n" + DisplayBook(result as ModelClass.Book)); } return(result); case 2: result = Search("Введите id, артикул экземпляра или название книги", controller.FindCopies, DisplayCopyShort); if (result != null) { Console.WriteLine("\r\nЭкземпляр книги\r\n" + DisplayCopy(result as ModelClass.Copy)); } return(result); case 3: result = Search("Введите id, Имя Фамилию, номер телефона или адрес читателя ", controller.FindReaders, DisplayReaderShort); if (result != null) { Console.WriteLine("\r\nЧитатель\r\n" + DisplayReader(result as ModelClass.Reader)); } return(result); } return(null); }
public void Show() { while (true) { ModelClass.IID o = null; switch (ReadChoice(true, "Главное меню", new string[] { "Выдача", "Возврат", "Поиск", "Добавить", "Удалить", "Загрузить", "Сохранить", "Выход" })) { case 0: var copy = Search("Выберите экземпляр для выдачи. Введите id, артикул экземпляра или название книги", controller.FindCopies, DisplayCopyShort); if (copy == null) { break; } if (copy.OnHand != 0) { Console.WriteLine("Книга уже выданa читателю " + DisplayReaderShort(controller.GetReader(copy.OnHand))); Console.ReadKey(); break; } var reader = Search("Выберите читателя. Введите id, Имя Фамилию, номер телефона или адрес читателя ", controller.FindReaders, DisplayReaderShort); if (reader == null) { break; } controller.RentBook(copy.ItemId, reader.ItemId); Console.WriteLine("Книга выдана"); Console.ReadKey(); break; case 1: var reader2 = Search("Выберите читателя. Введите id, Имя Фамилию, номер телефона или адрес читателя ", controller.FindReaders, DisplayReaderShort); if (reader2 == null) { break; } if (reader2.OnHand.Count == 0) { Console.WriteLine("Нету книг для возврата"); Console.ReadKey(); break; } int retcopyid = ReadChoice(false, "Выберите книгу для возврата", new string[] { "Выйти" }.Concat(reader2.OnHand.Select(x => DisplayCopyShort(controller.GetCopy(x)))).ToArray()); switch (retcopyid) { case 0: break; default: retcopyid = reader2.OnHand[retcopyid - 1]; var retcopy = controller.GetCopy(retcopyid); int days = (int)DateTime.Now.Subtract(retcopy.DateTaken).TotalDays; if (days > 30) { Console.WriteLine("Возврат задержан, сумма штрафа: " + (days - 30).ToString() + " x 4.5 = " + (days * 4.5F).ToString()); } else { Console.WriteLine("Книга возвращена"); } controller.ReturnBook(retcopyid); Console.ReadKey(); break; } break; case 2: o = SearchMenu("Поиск"); if (o != null) { Console.WriteLine(); Console.WriteLine("Нажмите любую кнопку чтобы вернутся в главное меню"); Console.ReadKey(); } break; case 3: switch (ReadChoice(true, "Добавить", new string[] { "Автора", "Книгу", "Экземпляр книги", "Читателя", "Вернутся в главное меню" })) { case 0: o = controller.AddAuthor(ReadString(false, "Введите имя"), ReadString(false, "Введите фамилию")); if (o != null) { Console.WriteLine("\r\n" + DisplayAuthor(o as ModelClass.Author)); } break; case 1: var a = Search("Выберите автора. Введите id или Имя Фамилию автора", controller.FindAuthors, DisplayAuthorShort); if (a == null) { break; } o = controller.AddBook(a.ItemId, ReadString(false, "Введите название"), ReadInt(false, "Введите год издания")); if (o != null) { Console.WriteLine("\r\n" + DisplayBook(o as ModelClass.Book)); } break; case 2: var b = Search("Введите id, название книги, год или автора", controller.FindBooks, DisplayBookShort); if (b == null) { break; } o = controller.AddCopy(b.ItemId, ReadString(false, "Введите артикул")); if (o != null) { Console.WriteLine("\r\n" + DisplayCopy(o as ModelClass.Copy)); } break; case 3: o = controller.AddReader(ReadString(false, "Введите Имя"), ReadString(true, "Введите Фамилию"), ReadString(false, "Введите адресс"), ReadInt(false, "Введите телефон")); if (o != null) { Console.WriteLine("\r\n" + DisplayReader(o as ModelClass.Reader)); } break; } if (o != null) { Console.WriteLine(); Console.WriteLine("Добавлено. Нажмите любую кнопку чтобы вернутся в главное меню"); Console.ReadKey(); } break; case 4: o = SearchMenu("Удалить"); if (o != null) { Console.WriteLine(); if (ReadChoice(false, "Удалить этот обьект?", new string[] { "Нет", "Да" }) == 1) { if (o is ModelClass.Author) { controller.RemoveAuthor(o.ItemId); } else if (o is ModelClass.Book) { controller.RemoveBook(o.ItemId); } else if (o is ModelClass.Copy) { controller.RemoveCopy(o.ItemId); } else if (o is ModelClass.Reader) { controller.RemoveReader(o.ItemId); } } } break; case 5: controller.LoadModel("data.json"); Console.Clear(); Console.WriteLine(); Console.WriteLine("Загружено"); Console.ReadKey(); break; case 6: controller.SaveModel("data.json"); Console.Clear(); Console.WriteLine(); Console.WriteLine("Сохранено"); Console.ReadKey(); break; case 7: return; } } }