public DebtorsReadersMapperTest()
        {
            this.debtorsReadersMapper = new DeptorsReadersMapper();
            this.readerMapper = new ReaderMapper();

            this.readerEntityToMap = new Reader { ReaderId = 1, FirstName = "Bob", LastName = "Hopkins", Address = "adr",Phone = "555" };

            this.inventoryEntityToMap = new Inventory();

            this.readerHistoryEntityToMap = new ReaderHistory
            {

                StartDate = Convert.ToDateTime("2013.12.12"),
                FinishDate = Convert.ToDateTime("2013.12.28"),
                Reader = this.readerEntityToMap,
                Inventory = null
            };

            this.deptorsReadersModelToCompareWith = new DeptorsReadersModel
            {
                readerId = this.readerEntityToMap.ReaderId,
                FirstName = this.readerEntityToMap.FirstName,
                LastName = this.readerEntityToMap.LastName,
                Address = this.readerEntityToMap.Address,
                Phone = this.readerEntityToMap.Phone,
                StartDate = Convert.ToDateTime("2013.12.12"),
                FinishDate = Convert.ToDateTime("2013.12.28")
            };
        }
 public ReaderHistoryFacadeTests(IReaderHistoryFacade readerHistoryFacade)
 {
     var uow = Initializer.GetLibraryUow();
     this.readerHistoryFacade = readerHistoryFacade;
     this.readerHistory = new ReaderHistory
     {
         StartDate = Convert.ToDateTime("2013-07-29"),
         ReturnDate = Convert.ToDateTime("2013-08-15"),
         FinishDate = Convert.ToDateTime("2013-12-10")
     };
     uow.ReadersHistories.Add(this.readerHistory);
     //this.readerHistoryFacade = new ReaderHistoryFacade(uow);
 }
        public ReaderHistoryMapperTest()
        {
            this.readerHistoryMapper = new ReaderHistoryMapper();

            this.readerEntityToMap = new Reader { FirstName = "Bob", LastName = "Hopkins" };

            this.readerModelToMap = new ReaderBusinessModel { FirstName = "Bob", LastName = "Hopkins" };

            this.inventoryEntityToMap = new Inventory { Number = "0000000001-001" };

            this.inventoryModelToMap = new InventoryBusinessModel { Number = "0000000001-001" };

            this.readerHistoryEntityToMap = new ReaderHistory
            {
                ReaderHistoryId = 1,
                StartDate = Convert.ToDateTime("2013.12.12"),
                ReturnDate = Convert.ToDateTime("2013.12.20"),
                FinishDate = Convert.ToDateTime("2013.12.28"),
                Reader = this.readerEntityToMap,
                Inventory = this.inventoryEntityToMap
            };

            this.readerHistoryEntityToCompareWith = new ReaderHistory
            {
                ReaderHistoryId = 1,
                StartDate = Convert.ToDateTime("2013.12.12"),
                ReturnDate = Convert.ToDateTime("2013.12.20"),
                FinishDate = Convert.ToDateTime("2013.12.28"),
                Reader = this.readerEntityToMap,
                Inventory = this.inventoryEntityToMap
            };
            this.ReaderHistoryModelToMap = new ReaderHistoryBusinessModel
            {
                Id = 1,
                StartDate = Convert.ToDateTime("2013.12.12"),
                ReturnDate = Convert.ToDateTime("2013.12.20"),
                FinishDate = Convert.ToDateTime("2013.12.28"),
                ReaderBusiness = this.readerModelToMap,
                InventoryBusiness = this.inventoryModelToMap
            };
            this.ReaderHistoryModelToCompareWith = new ReaderHistoryBusinessModel
            {
                Id = 1,
                StartDate = Convert.ToDateTime("2013.12.12"),
                ReturnDate = Convert.ToDateTime("2013.12.20"),
                FinishDate = Convert.ToDateTime("2013.12.28"),
                ReaderBusiness = this.readerModelToMap,
                InventoryBusiness = this.inventoryModelToMap
            };
        }
        public ReaderHistory Map(DeptorsReadersModel o)
        {
            if (o == null) return null;
            ReaderHistory readerHistory = new ReaderHistory();

            readerHistory.Reader.ReaderId = o.readerId;
            readerHistory.Reader.FirstName = o.FirstName;
            readerHistory.Reader.LastName = o.LastName;
            readerHistory.Reader.Address = o.Address;
            readerHistory.Reader.Phone = o.Phone;
            readerHistory.Inventory.Item.Name = o.ItemName;
            readerHistory.StartDate = o.StartDate;
            readerHistory.FinishDate = o.FinishDate;

            return readerHistory;
        }
        public DeptorsReadersModel Map(ReaderHistory o)
        {
            if (o == null) return null;
            DeptorsReadersModel deptorsReadersBusiness = new DeptorsReadersModel();
            ReaderMapper readerMapper = new ReaderMapper();
            InventoryMapper inventoryMapper = new InventoryMapper();
            ReaderBusinessModel readerBusinessModel = readerMapper.Map(o.Reader);
            InventoryBusinessModel invertoryBusinessModel = inventoryMapper.Map(o.Inventory);

            deptorsReadersBusiness.readerId = readerBusinessModel.ReaderId;
            deptorsReadersBusiness.FirstName = readerBusinessModel.FirstName;
            deptorsReadersBusiness.LastName = readerBusinessModel.LastName;
            deptorsReadersBusiness.Address = readerBusinessModel.Address;
            deptorsReadersBusiness.Phone = readerBusinessModel.Phone;
            if (o.Inventory!= null)
            {
                deptorsReadersBusiness.ItemName = invertoryBusinessModel.Item.Name;
            }
            deptorsReadersBusiness.StartDate = o.StartDate;
            deptorsReadersBusiness.FinishDate = o.FinishDate;

            return deptorsReadersBusiness;

        }
        public void GiveBookToStudent(ReaderHistoryBusinessModel readerHistoryBusinessModel)
        {
            ReaderHistoryMapper readerHistoryMapper = new ReaderHistoryMapper();
            ReaderHistory readerHistory = new ReaderHistory();

            readerHistory = readerHistoryMapper.Map(readerHistoryBusinessModel);

            Inventory inventory = this.uow.Inventories.GetAll().Where(inv => inv.Number == readerHistory.Inventory.Number).Select(inv => inv).Single();

            if (inventory.IsAvailable == true)
            {
                inventory.IsAvailable = false;
            }
            else
            {
                throw new Exception();
            }

            this.uow.Inventories.Update(inventory);
            uow.Commit();

        }
        public void UpdateReaderHistory(ReaderHistoryBusinessModel readerHistoryBusiness)
        {
            ReaderHistoryMapper mapper = new ReaderHistoryMapper();
            ReaderHistory readerHistory = new ReaderHistory();

            readerHistory = mapper.Map(readerHistoryBusiness);
            this.uow.ReadersHistories.Update(readerHistory);

            Inventory inventory = this.uow.Inventories.GetById(readerHistoryBusiness.InventoryBusiness.InventoryId);

            if (inventory.IsAvailable == false)
            {
                if (readerHistoryBusiness.ReturnDate != null)
                {
                    inventory.IsAvailable = true;
                }
                else
                {
                    inventory.IsAvailable = false;
                }
            }
            else
            {
                throw new Exception("This inventory already exist in the Library");
            }

            uow.Commit();
        }
        public void AddNewReaderHistory(ReaderHistoryBusinessModel readerHistoryBusiness, int readerId)
        {
            ReaderHistoryMapper readerHistoryMapper = new ReaderHistoryMapper();
            ReaderHistory readerHistory = new ReaderHistory();

            readerHistory = readerHistoryMapper.Map(readerHistoryBusiness);
            var reader = uow.Readers.GetById(readerId);
            Inventory inventory = this.uow.Inventories.GetAll().Where(inv => inv.Number == readerHistory.Inventory.Number).Select(inv => inv).Single();

            uow.ReadersHistories.Add(new ReaderHistory
            {
                StartDate = readerHistory.StartDate,
                FinishDate = readerHistory.FinishDate,
                Reader = reader,
                Inventory = this.uow.Inventories.GetById(inventory.InventoryId)

            });
            uow.Commit();
        }