public ActionResult ReserveRoom(ReverveRoomModel model)
        {
            if (model.dateTo <= model.dateFrom)
            {
                ModelState.AddModelError("dateTo", "Date should be later than above");
            }

            if (model.dateFrom == null)
            {
                ModelState.AddModelError("dateFrom", "Pole nie moze być puste");
            }


            if (ModelState.IsValid)
            {
                //repository.BookHolidayHome(model.holidayhomeId, model.dateFrom, model.dateTo);

                CheckBookingModel modelbook = repository.bookroom(model.roomId, model.dateFrom, model.dateTo);
                ViewBag.checkbookingmodel = modelbook;

                return(RedirectToAction("ShowDetailsRoom", "Home", new { Id = model.roomId }));
            }
            else
            {
                Room            room       = repository.GetRoomById(model.roomId);
                List <DateTime> list       = repository.GetDaysBookedRoom(model.roomId);
                List <string>   liststring = new List <string>();

                foreach (var item in list)
                {
                    liststring.Add(item.ToShortDateString());
                }

                BookRoomViewModel viewmodel = new BookRoomViewModel();
                viewmodel.room = room;
                viewmodel.list = liststring;

                return(View("~/Views/Client/BookRoom.cshtml", viewmodel));



                //Room room = repository.GetRoomById(model.roomId);
                //return View("~/Views/Client/BookRoom.cshtml", room);
            }
        }
        public void when_calling_ReserveRoom_with_model_error_returns_BookRoomViewModel()
        {
            Room room = new Room()
            {
                Price = 100, numberofGuests = 1, numberofBeds = 1, doubleBed = false, petsAllowed = false, Toilet = true, Kitchen = false, numberofTelevisions = 1
            };

            List <DateTime> listDateTime = new List <DateTime>();

            listDateTime.Add(new DateTime(2019, 4, 9));
            listDateTime.Add(new DateTime(2019, 4, 10));
            listDateTime.Add(new DateTime(2019, 4, 11));
            listDateTime.Add(new DateTime(2019, 4, 12));



            ReverveRoomModel reservemodel = new ReverveRoomModel();

            reservemodel.dateFrom = new DateTime(2019, 4, 5);
            reservemodel.dateTo   = new DateTime(2019, 4, 2);
            reservemodel.roomId   = 3;



            Mock <IHolidaysRepository> mock = new Mock <IHolidaysRepository>();

            mock.Setup(r => r.GetRoomById(It.IsAny <int>())).Returns(room);
            mock.Setup(r => r.GetDaysBookedRoom(It.IsAny <int>())).Returns(listDateTime);


            ClientController controller = new ClientController(mock.Object);
            ViewResult       result     = (ViewResult)(controller.ReserveRoom(reservemodel));

            Assert.AreEqual("~/Views/Client/BookRoom.cshtml", result.ViewName);
            BookRoomViewModel bookviewmodel = (BookRoomViewModel)result.Model;

            Assert.AreEqual(room, bookviewmodel.room);
        }
        public void when_calling_ReserveRoom_returns_model()
        {
            CheckBookingModel model = new CheckBookingModel();

            model.Available          = true;
            model.DaysAvailable      = 3;
            model.FirstDateAvailable = new DateTime(2019, 4, 13);
            model.room = new Room()
            {
                Price = 100, numberofGuests = 1, numberofBeds = 1, doubleBed = false, petsAllowed = false, Toilet = true, Kitchen = false, numberofTelevisions = 1
            };
            model.holidayHome = new HolidayHome()
            {
                HolidayHomeId = 3, Price = 200, numberofGuests = 1, numberofBeds = 1, doubleBed = false, petsAllowed = true, Toilet = true, Kitchen = false, numberofTelevisions = 1, numberofFloors = 1
            };


            ReverveRoomModel reservemodel = new ReverveRoomModel();

            reservemodel.dateFrom = new DateTime(2019, 4, 2);
            reservemodel.dateTo   = new DateTime(2019, 4, 5);
            reservemodel.roomId   = 3;



            Mock <IHolidaysRepository> mock = new Mock <IHolidaysRepository>();

            mock.Setup(r => r.bookroom(It.IsAny <int>(), It.IsAny <DateTime>(), It.IsAny <DateTime>())).Returns(model);

            ClientController      controller = new ClientController(mock.Object);
            RedirectToRouteResult result     = (RedirectToRouteResult)(controller.ReserveRoom(reservemodel));

            Assert.AreEqual("ShowDetailsRoom", result.RouteValues["action"]);
            Assert.AreEqual("Home", result.RouteValues["controller"]);
            Assert.AreEqual(3, result.RouteValues["Id"]);
        }