Esempio n. 1
0
 public static void TakeBook(BookRegister allBooks, TakenBookRegister takenBooks, ReaderRegister readers, string isbn, string readerName, DateTime returnDate, out bool successful,
                             int maxBookCount)
 {
     successful = false;
     if (!takenBooks.Contains(isbn) && allBooks.Contains(isbn))
     {
         Book book = allBooks.Get(isbn);
         if (readers.Contains(readerName))
         {
             Reader reader = readers.Get(readerName);
             if (reader.BookCount < maxBookCount)
             {
                 readers.AddBookCount(reader);
                 TakenBook takenBook = new TakenBook(book, returnDate, reader);
                 takenBooks.Add(takenBook);
                 successful = true;
             }
         }
         else
         {
             Reader reader = new Reader(readerName);
             readers.Add(reader);
             TakenBook takenBook = new TakenBook(book, returnDate, reader);
             takenBooks.Add(takenBook);
             successful = true;
         }
     }
 }
Esempio n. 2
0
        public static void DeleteBook(TakenBookRegister takenBooks, BookRegister allBooks, ReaderRegister readers, string isbn)
        {
            Book bookToDelete = allBooks.Get(isbn);

            allBooks.Remove(bookToDelete);
            if (takenBooks.Contains(isbn))
            {
                bool lateReturnal;
                ReturnBook(takenBooks, readers, isbn, out lateReturnal);
            }
        }
Esempio n. 3
0
        public static void ReturnBook(TakenBookRegister takenBooks, ReaderRegister readers, string isbn, out bool lateReturn)
        {
            lateReturn = false;
            TakenBook book = takenBooks.Get(isbn);

            if (DateTime.Now > book.ReturnDate)
            {
                lateReturn = true;
            }
            readers.MinusBookCount(book.Reader);
            takenBooks.Remove(book);
        }
Esempio n. 4
0
        private BookRegister FilterByAvailability(bool available, TakenBookRegister takenBooks)
        {
            BookRegister filtered = new BookRegister();

            foreach (Book book in this.allBooks)
            {
                if (takenBooks.Contains(book.ISBN) != available)
                {
                    filtered.Add(book);
                }
            }
            return(filtered);
        }
Esempio n. 5
0
        public BookRegister FilterBooks(string author, string category, string language, string isbn, string name, string availability, TakenBookRegister takenBooks)
        {
            BookRegister filteredByAuthor;
            BookRegister filteredByCategory;
            BookRegister filteredByLanguage;
            BookRegister filteredByIsbn;
            BookRegister filteredByName;
            BookRegister filteredByAvailability;

            if (author != "")
            {
                filteredByAuthor = this.FilterByAuthor(author);
            }
            else
            {
                filteredByAuthor = this;
            }
            if (category != "")
            {
                filteredByCategory = filteredByAuthor.FilterByCategory(category);
            }
            else
            {
                filteredByCategory = filteredByAuthor;
            }
            if (language != "")
            {
                filteredByLanguage = filteredByCategory.FilterByLanguage(language);
            }
            else
            {
                filteredByLanguage = filteredByCategory;
            }
            if (isbn != "")
            {
                filteredByIsbn = filteredByLanguage.FilterByISBN(isbn);
            }
            else
            {
                filteredByIsbn = filteredByLanguage;
            }
            if (name != "")
            {
                filteredByName = filteredByIsbn.FilterByName(name);
            }
            else
            {
                filteredByName = filteredByIsbn;
            }
            if (availability != "")
            {
                bool available;
                Boolean.TryParse(availability, out available);
                filteredByAvailability = filteredByName.FilterByAvailability(available, takenBooks);
            }
            else
            {
                filteredByAvailability = filteredByName;
            }
            return(filteredByAvailability);
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            const string json = "BookData.json";
            const int    maxBookCountForOneReader = 3;
            const int    maxMonthCount            = 2;
            BookRegister allBooks;

            if (File.Exists(json))
            {
                allBooks = InOutUtils.ReadBooksJson(json);
            }
            else
            {
                allBooks = new BookRegister();
            }
            TakenBookRegister takenBooks = new TakenBookRegister();
            ReaderRegister    readers    = new ReaderRegister();

            InOutUtils.PrintAllCommands();
            string command = Console.ReadLine();
            bool   flag    = true;

            while (flag)
            {
                switch (command.ToLower())
                {
                case "/help":
                    InOutUtils.PrintAllCommands();
                    break;

                case "/add":
                    Book book = InOutUtils.ReadBook();
                    if (book.Name.Length > 0 && book.Author.Length > 0 && book.Category.Length > 0 && book.Language.Length > 0 &&
                        book.ISBN.Length > 0 && book.PublicationDate.Length > 0)
                    {
                        allBooks.Add(book);
                        InOutUtils.PrintBooksJson(allBooks, json);
                        Console.WriteLine("Book added");
                    }
                    else
                    {
                        Console.WriteLine("Not all fields are filled");
                    }
                    break;

                case "/take":
                    Console.Write("Enter book's ISBN: ");
                    string takenIsbn = Console.ReadLine();
                    Console.Write("Enter readers name: ");
                    string readerName = Console.ReadLine();
                    Reader reader     = new Reader(readerName);
                    Console.Write("Enter return date: ");
                    DateTime returnDate;
                    DateTime.TryParse(Console.ReadLine(), out returnDate);
                    if (reader.Name.Length > 0 && returnDate != null)
                    {
                        if (DateTime.Now.AddMonths(maxMonthCount) >= returnDate && returnDate >= DateTime.Now)
                        {
                            bool successfulOperation;
                            TaskUtils.TakeBook(allBooks, takenBooks, readers, takenIsbn, readerName, returnDate, out successfulOperation, maxBookCountForOneReader);
                            if (successfulOperation)
                            {
                                Console.WriteLine("Book taken");
                            }
                            else
                            {
                                Console.WriteLine("Book can not be taken");
                            }
                        }
                        else
                        {
                            Console.WriteLine("Book can only be taken for maximum 2 month period and return date can not be in the past.");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Not all fields are filled correct");
                    }
                    break;

                case "/return":
                    Console.Write("Enter ISBN of book: ");
                    string returnIsbn = Console.ReadLine();
                    if (takenBooks.Contains(returnIsbn))
                    {
                        bool lateReturnal;
                        TaskUtils.ReturnBook(takenBooks, readers, returnIsbn, out lateReturnal);
                        if (lateReturnal)
                        {
                            Console.WriteLine("Return your book rigth MEOW");
                        }
                        else
                        {
                            Console.WriteLine("Operation successful");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Book with this ISBN can not be returned");
                    }
                    break;

                case "/list":
                    Console.WriteLine("Enter parameter to filter data. (If do not want to filter data by certain parameter, leave field empty.)");
                    Console.Write("Author: ");
                    string author = Console.ReadLine();
                    Console.Write("Category: ");
                    string category = Console.ReadLine();
                    Console.Write("Language: ");
                    string language = Console.ReadLine();
                    Console.Write("ISBN: ");
                    string isbn = Console.ReadLine();
                    Console.Write("Name: ");
                    string name = Console.ReadLine();
                    Console.Write("Available (true/false): ");
                    string       availability = Console.ReadLine();
                    BookRegister filtered     = allBooks.FilterBooks(author, category, language, isbn, name, availability, takenBooks);
                    if (filtered.Count() > 0)
                    {
                        InOutUtils.PrintBooks(filtered);
                    }
                    else
                    {
                        Console.WriteLine("Book not found");
                    }
                    break;

                case "/delete":
                    Console.Write("Enter ISBN of book: ");
                    string deletedIsbn = Console.ReadLine();
                    if (allBooks.Contains(deletedIsbn))
                    {
                        TaskUtils.DeleteBook(takenBooks, allBooks, readers, deletedIsbn);
                        InOutUtils.PrintBooksJson(allBooks, json);
                        Console.WriteLine("Book deleted");
                    }
                    else
                    {
                        Console.WriteLine("Books with this ISBN can not be deleted");
                    }
                    break;

                case "/exit":
                    flag = false;
                    Environment.Exit(0);
                    break;

                default:
                    Console.WriteLine("Unknown command");
                    break;
                }
                command = Console.ReadLine();
            }
        }