コード例 #1
0
        public ActionResult BookViewing(BookViewingCommand bookViewingCommand)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var handler = new BookViewingCommandHandler(_context);

                    bookViewingCommand.BuyerId = User.Identity.GetUserId();

                    if (!handler.Handle(bookViewingCommand))
                    {
                        ModelState.AddModelError("ViewingDate", @"You can book only 1 viewing per day on this property!");
                        var builder   = new AvailableViewingsViewModelBuilder(_context);
                        var viewModel = builder.Build(bookViewingCommand.PropertyId, bookViewingCommand.ViewingDate);
                        viewModel.ViewingTime = bookViewingCommand.ViewingTime;
                        return(View(viewModel));
                    }

                    return(RedirectToAction("Index", "Property"));
                }
                catch (Exception e)
                {
                    return(View("Error", new HandleErrorInfo(e, GetType().Name, MethodBase.GetCurrentMethod().Name)));
                }
            }
            return(View());
        }
コード例 #2
0
        public int GenerateScheduleShouldReturnResultTimesOfDateProvided(int viewingDuration)
        {
            // Arrange
            var builder = new AvailableViewingsViewModelBuilder(_context);

            var startTime = TimeSpan.Parse("08:00:00");

            var endTime = TimeSpan.Parse("20:00:00");

            var viewings = new List <Models.Viewing>
            {
                new Models.Viewing
                {
                    ViewAt = DateTime.Parse("2017-06-24 08:00:00.000")
                },
                new Models.Viewing
                {
                    ViewAt = DateTime.Parse("2017-06-24 10:00:00.000")
                }
            };

            var date = DateTime.Parse("2017-06-24");

            // Act
            var scheduleList = builder.GenerateSchedule(startTime, endTime, viewingDuration, date, viewings);

            // Assert
            return(scheduleList.Count());
        }
コード例 #3
0
        public void GetViewingsOfDateShouldReturnAllViewwingsOfPropertyOfDateProvided()
        {
            // Arrange
            var builder = new AvailableViewingsViewModelBuilder(_context);

            var propertyId = 1;

            var viewings = new List <Models.Viewing>
            {
                new Models.Viewing
                {
                    ViewAt     = DateTime.Parse("2017-06-24 08:00:00.000"),
                    PropertyId = propertyId
                },
                new Models.Viewing
                {
                    ViewAt     = DateTime.Parse("2017-06-24 10:00:00.000"),
                    PropertyId = propertyId
                },
                new Models.Viewing
                {
                    ViewAt     = DateTime.Parse("2017-06-24 20:00:00.000"),
                    PropertyId = propertyId
                },
                new Models.Viewing
                {
                    ViewAt     = DateTime.Parse("2017-06-24 00:00:00.000"),
                    PropertyId = propertyId
                },
                new Models.Viewing
                {
                    ViewAt     = DateTime.Parse("2017-06-25 00:00:00.000"),
                    PropertyId = propertyId
                },
                new Models.Viewing
                {
                    ViewAt     = DateTime.Parse("2017-06-23 23:59:00.000"),
                    PropertyId = propertyId
                }
            };

            var date = DateTime.Parse("2017-06-24 12:00:00.000");

            var mockSet = Substitute.For <IDbSet <Models.Viewing> >()
                          .Initialize(viewings.AsQueryable());

            _context.Viewing.Returns(mockSet);

            // Act
            var viewModel = builder.GetViewingsOfDate(date, propertyId);

            // Assert
            Assert.That(viewModel.Count, Is.EqualTo(4));
        }
コード例 #4
0
        public ActionResult BookViewing(int propertyId, DateTime date)
        {
            try
            {
                var builder   = new AvailableViewingsViewModelBuilder(_context);
                var viewModel = builder.Build(propertyId, date);

                return(View(viewModel));
            }
            catch (Exception e)
            {
                return(View("Error", new HandleErrorInfo(e, GetType().Name, MethodBase.GetCurrentMethod().Name)));
            }
        }