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()); }
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()); }
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)); }
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))); } }