using System;
using System.Collections.Generic;
using System.Text;
using BookShop.Model;

namespace BookShop.Control
{
    /// <summary>
    /// Controller osztály, az üzleti logika megvalósítására.
    /// </summary>
    public class BookShopControl
    {
        private BookShopDao dao = new BookShopDao();

        public bool NewCustomer(Customer customer)
        {
            if (customer.Age < 14)
            {
                customer.Student = true;
            }
            else if (customer.Age > 62)
            {
                customer.Rented = true;
            }

            return dao.AddCustomer(customer);
        }

        public IEnumerable<Customer> GetCustomerList()
        {
            return dao.GetAllCustomers();
        }

        /// <summary>
        /// Új könyv vásárlása.
        /// </summary>
        /// <param name="book"></param>
        /// <returns></returns>
        public bool BuyBook(Book book)
        {
            // 1900 előtti könyveket antiknak állítjuk be
            book.Ancient = (book.Year < 1900);

            return dao.AddOrUpdateBook(book);
        }

        /// <summary>
        /// Azon könyvek listájának lekérése amelyből van eladható készlet. Csak azokat adja
        /// vissza ahol a készlet (Piece) legalább 1.
        /// </summary>
        /// <returns>eladható könyvek listája</returns>
        public IEnumerable<Book> GetAvailableBookList()
        {
            // csinálunk egy másolatot a könyvekről
            List<Book> books = new List<Book>(dao.GetAllBooks());

            foreach (Book book in books)
            {
                // csak azok érdekelnek minket amiből van készlet
                if (book.Piece < 1)
                {
                    books.Remove(book);
                }
            }

            return books;
        }


        public bool SellBook(Book book, Customer customer)
        {
            return dao.SellBook(book, customer);
        }


        public IEnumerable<SoldBook> GetSoldBooks()
        {
            return dao.GetSoldBooks();
        }

        public List<string> ListQualifications()
        {
            return dao.ListQualifications();
        }
    }
}
