// 도서리스트 내에 현재 같은 도서가 있는지 확인, primary key는 책명, 저자이다. public bool IsThereBook(string bookName, string writer) { for (int i = 0; i < books.Count; i++) { Data.Book book = (Data.Book)books[i]; if (book.Name.Equals(bookName) && book.Writer.Equals(writer)) { return(true); } } return(false); }
// 책 수량 수정 public void AlterBookCount() { Data.Book book = outputProcessor.PrintBookList(DB.GetAllBooks()); if (book == null) { return; } if (DB.ModifyBookCount(book.ISBN, outputProcessor.InputBookCount())) { DB.InsertLog("관리자", book.Name, "수량 수정"); // 로그 기록 } }
// 책을 도서목록에서 삭제한다. public void DeleteBook(Data.Book deletedBook) { if (drawer.YesOrNo("해당 도서를 삭제하시겠습니까?") == 1) { // 도서 삭제 bookKeepList.Delete(deletedBook); Console.Write("\n\t책이 성공적으로 삭제되었습니다."); } else { Console.Write("\n\t삭제 실패하였습니다."); } inputProcessor.PressAnyKey(); Console.Clear(); }
public int PrintBookList(ArrayList bookList) { int choice = 1; Console.SetWindowSize(103, 39); Console.WriteLine("\n ===================================================================================================="); Console.WriteLine(" 도서번호 도서명 출판사 저자 대출 여부 "); Console.WriteLine(" ===================================================================================================="); while (true) { Console.SetCursorPosition(0, 4); for (int i = 0; i < bookList.Count; i++) { Data.Book book = (Data.Book)bookList[i]; // 선택된 행이면 빨간색으로 표시 if (choice - 1 == i) { Console.ForegroundColor = ConsoleColor.Red; } book.PrintInformation(); Console.ForegroundColor = ConsoleColor.White; } // 첫 행으로 커서를 옮긴다 Console.SetCursorPosition(0, 3 + choice); // 엔터를 치면 선택된 인덱스를 반환한다. if (inputProcessor.ChoiceByKey()) { return(choice); } // 커서의 위아래 이동 구간을 제한한다. if (Console.CursorTop < 4) { Console.SetCursorPosition(Console.CursorLeft - 1, 4); } if (Console.CursorTop > 3 + ((bookList.Count == 0) ? 1 : bookList.Count)) { Console.SetCursorPosition(Console.CursorLeft, 3 + ((bookList.Count == 0) ? 1:bookList.Count)); } // 커서 위치에 따른 메뉴 선택 choice = Console.CursorTop - 3; } }
// 책을 형식에 따라 수정한다. public void ModifyBook(Data.Book modifiedBook, int format, string content) { switch (format) { case (int)Data.BookManagement.Format.NameFormat: modifiedBook.Name = content; break; case (int)Data.BookManagement.Format.CompanyFormat: modifiedBook.Company = content; break; case (int)Data.BookManagement.Format.WriterFormat: modifiedBook.Writer = content; break; } }
// 책 삭제 public void DeleteBook() { Console.Clear(); Data.Book book = outputProcessor.PrintBookList(DB.GetAllBooks()); if (book == null) { return; } if (outputProcessor.YesOrNo("해당 책을 정말 삭제하시겠습니까?") == 1) { if (!DB.DeleteBook(book.ISBN)) { outputProcessor.PressAnyKey("삭제할 책이 존재하지 않습니다."); } // 로그 기록 DB.InsertLog("관리자", book.Name, "도서 삭제"); } }
// 책을 직접 검색한 뒤 대여 public void RentalBookSearch() { string search = ""; string attribute = ""; switch (output.MenuScreen(ConsoleUI.BOOK_SEARCH)) { // 책 이름 검색 case ConstNumber.MENULIST_1: search = output.GetBookInformation(ConstNumber.BOOK_NAME); attribute = "bookname"; break; // 책 출판사 검색 case ConstNumber.MENULIST_2: search = output.GetBookInformation(ConstNumber.BOOK_COMPANY); attribute = "company"; break; // 도서 저자 검색 case ConstNumber.MENULIST_3: search = output.GetBookInformation(ConstNumber.BOOK_WRITER); attribute = "writer"; break; case ConstNumber.MENULIST_4: return; } if (search == null) { return; } // 책 검색 Data.Book searchResult = SearchBook(attribute, search); if (searchResult == null) { return; } // 로그 기록 DB.InsertLog(student.StudentNo, search, "도서 검색"); // 찾은 책 대여 Rental(searchResult.ISBN); }
// 반납할 도서 객체와 반납 회원 객체를 받아 책을 반납처리한다. public void Return(Data.Book book, Data.Member rentalMember) { book.Rental = false; for (int i = 0; i < rentalHistoryList.Count; i++) { RentalHistory temp = (RentalHistory)rentalHistoryList[i]; // 빌린 도서 목록에서 제외함으로 인해 반납처리됨 if (temp.GetBook().Equals(book)) { rentalHistoryList.Remove(temp); break; } } // 회원의 대출 도서 목록에서도 제외 rentalMember.rentalBookList.Remove(book); Console.WriteLine("\n 반납되었습니다."); inputProcessor.PressAnyKey(); Console.Clear(); }
// 매개변수로 빌릴 책 객체와 빌리는 회원 객체를 받고 대출 처리를 한다. public void Rental(Data.Book book, Data.Member rentalMember) { if (book.Rental) // 책이 대출중이면 { Console.WriteLine("\n 현재 선택하신 책은 대출 중입니다."); inputProcessor.PressAnyKey(); Console.Clear(); } else // 책이 보유 중 이면 { // 대출 도서로 추가하고 대출 상태로 변경 RentalHistory rentalBook = new RentalHistory(book); rentalHistoryList.Add(rentalBook); rentalMember.rentalBookList.Add(book); book.Rental = true; Console.WriteLine("\n 대출되었습니다.\n 반납 기한은 " + rentalBook.getDueDay() + "까지 입니다."); inputProcessor.PressAnyKey(); Console.Clear(); } }
// 책을 도서목록에 추가한다. public void InsertBook(Data.Book newBook) { if (bookKeepList.IsThereBook(newBook.Name, newBook.Writer)) { Console.Write("이미 등록된 책입니다."); inputProcessor.PressAnyKey(); } else { // 도서 번호를 만든다. newBook.BookNo = ""; for (int i = 0; i < 6 - (bookNumber + "").Length; i++) { newBook.BookNo += "0"; } newBook.BookNo += (bookNumber + ""); bookNumber++; // 책 리스트에 추가한다. bookKeepList.Insert(newBook); } }
// 도서 추가화면 출력 public Data.Book AddBookScreen() { Data.Book newBook = new Data.Book(); Console.SetWindowSize(42, 25); Console.Clear(); LibraryBanner(); Console.WriteLine("\n\t\t<도서 추가>"); Console.WriteLine("\n 도서명 > "); Console.WriteLine("\n 출판사 > "); Console.WriteLine("\n 저자 > "); // 각각 항목들에 대해 문자열을 입력받는다. Console.SetCursorPosition(14, 11); newBook.Name = inputProcessor.ReadAndCheckString(25, 25, 14, 11, false); Console.SetCursorPosition(14, 13); newBook.Company = inputProcessor.ReadAndCheckString(15, 25, 14, 13, true); Console.SetCursorPosition(14, 15); newBook.Writer = inputProcessor.ReadAndCheckString(20, 25, 14, 15, false); Console.Clear(); return(newBook); }
// 책을 연장 시도한다. public void Extension(Data.Book book) { for (int i = 0; i < rentalHistoryList.Count; i++) { RentalHistory temp = (RentalHistory)rentalHistoryList[i]; // 연장하려는 도서객체와 일치하면 연장을 시도한다. if (temp.GetBook().Equals(book)) { if (temp.Extend()) { Console.WriteLine("\n 연장되었습니다."); Console.WriteLine("\n 반납 기한은 " + temp.getDueDay() + "입니다."); } else { Console.WriteLine("\n 연장 실패하였습니다."); } break; } } inputProcessor.PressAnyKey(); Console.Clear(); }
// 파싱한 뒤 검색된 정보들을 객체에 담는다 public List <Data.Book> Parsing(string responseFromServer) { List <Data.Book> books = new List <Data.Book>(); var json = JObject.Parse(responseFromServer); var items = json["items"]; for (int idx = 0; idx < items.Count(); idx++) { Data.Book book = new Data.Book(); book.ISBN = items[idx]["isbn"].ToString(); book.Name = WebUtility.HtmlDecode(items[idx]["title"].ToString()); book.Company = items[idx]["publisher"].ToString(); book.Writer = items[idx]["author"].ToString(); // 가격이 소수점으로 들어오는 거 방지 book.Price = int.Parse(items[idx]["price"].ToString().Split('.')[0]); book.Pubdate = items[idx]["pubdate"].ToString(); book.Description = WebUtility.HtmlDecode(items[idx]["description"].ToString()); book.Count = 9999; books.Add(book); } return(books); }
// 책의 세부사항을 출력한다 public void PrintDetailBookInformation(Data.Book book) { int startPoint = 0; string description = book.Description; Console.Clear(); Console.WriteLine("\n ISBN > " + book.ISBN); Console.WriteLine("\n 도서명 > " + book.GetName()); Console.WriteLine("\n 출판사 > " + book.GetCompany()); Console.WriteLine("\n 저 자 > " + book.GetWriter()); Console.WriteLine("\n 가 격 > " + book.Price + "원"); Console.WriteLine("\n 출판일 > " + book.Pubdate); Console.WriteLine("\n <설 명>"); // 설명 문장 나누기 while (description.Length > 45) { Console.WriteLine(" " + description.Substring(startPoint, 45)); description = description.Substring(startPoint + 45); } Console.WriteLine(" " + description); Console.ReadKey(); }
public void ReportDamaged(Data.Book book, Data.Client client, DateTime date) { dataContext.books.Books[book.Id].State.Damaged(date, client); }
//books public void AddBook(Data.Book book) { repository.AddBook(book); }
public void EditBook(Data.Book book) { repository.EditBook(book); }
public void ReturnEvent(int id, Data.Client client, DateTime date, Data.Book book) { //book.State.Avaiable(date, client); dataContext.books.Books[book.Id].State.Avaiable(date, client); }
public void AddBook(Data.Book book) { dataContext.books.Books.Add(book.Id, book); }
public void RentEvent(int id, Data.Client client, DateTime date, Data.Book book) { //book.State.Rented(date, client); dataContext.books.Books[book.Id].State.Rented(date, client); }
public void ReturnEvent(int id, Data.Client client, DateTime date, Data.Book book) { repository.ReturnEvent(id, client, date, book); }
//states public bool CheckAvaiability(Data.Book book) { return(repository.CheckAvaiability(book)); }
// 책을 DB에 추가한다(Overriding) public bool InsertBook(Data.Book book) { return(InsertBook(book.ISBN, book.GetName(), book.GetCompany(), book.GetWriter(), book.Price, book.Count, book.Description, book.Pubdate)); }
public void ReportRepaired(Data.Book book, Data.Client client, DateTime date) { repository.ReportRepaired(book, client, date); }
public void ReportRepaired(Data.Book book, Data.Client client, DateTime date) { dataContext.books.Books[book.Id].State.Avaiable(date, client); }
public bool CheckIfDamaged(Data.Book book) { return(repository.CheckIfDamaged(book)); }