public IActionResult Post(int foodTruckId, [FromBody] CreateFoodTruckScheduleModel createModel)
        {
            var createCommand = new CreateFoodTruckScheduleCommand()
            {
                FoodTruckId = foodTruckId
            };

            this.mapper.Map <CreateFoodTruckScheduleModel, CreateFoodTruckScheduleCommand>(createModel, createCommand);

            Schedule schedule = this.scheduleService.AddFoodTruckSchedule(createCommand);

            var model = this.mapper.Map <Schedule, FoodTruckScheduleModel>(schedule);

            return(this.CreatedAtRoute(GET_SINGLE_FOOD_TRUCK_SCHEDULE,
                                       new { foodTruckId = model.FoodTruckId, scheduleId = model.ScheduleId }, model));
        }
        public void ValidateScheduleStartAndEndCannotBeTheSame()
        {
            // Arrange
            DateTime          testDateTime     = new DateTime(2017, 10, 9, 8, 0, 0); // 1:00 PM
            IDateTimeProvider dateTimeProvider = new UnitTestDateTimeProvider(testDateTime);

            CreateFoodTruckScheduleModel model = new CreateFoodTruckScheduleModel()
            {
                LocationId = 1,
                StartTime  = new DateTime(2017, 10, 9, 11, 0, 0),
                EndTime    = new DateTime(2017, 10, 9, 11, 0, 0)
            };

            // Act
            var validator = new CreateFoodTruckScheduleModelValidator(dateTimeProvider);
            var result    = validator.Validate(model);

            // Assert
            result.IsValid.Should().BeFalse();
        }
        public void ValidateScheduleStartCannotBeInThePast()
        {
            // Arrange
            DateTime          testDateTime     = new DateTime(2017, 10, 9, 13, 0, 0); // 1:00 PM
            IDateTimeProvider dateTimeProvider = new UnitTestDateTimeProvider(testDateTime);

            CreateFoodTruckScheduleModel model = new CreateFoodTruckScheduleModel()
            {
                LocationId = 1,
                StartTime  = new DateTime(2017, 10, 9, hour: 10, minute: 0, second: 0),
                EndTime    = new DateTime(2017, 10, 9, hour: 14, minute: 0, second: 0)
            };

            // Act
            var validator = new CreateFoodTruckScheduleModelValidator(dateTimeProvider);
            var result    = validator.Validate(model);

            // Assert
            result.IsValid.Should().BeFalse();
        }
        public void ValidateGoodSchedulesShouldPass()
        {
            // Arrange
            DateTime          testDateTime     = new DateTime(2017, 10, 9, 8, 0, 0); // 8:00 AM
            IDateTimeProvider dateTimeProvider = new UnitTestDateTimeProvider(testDateTime);

            CreateFoodTruckScheduleModel model = new CreateFoodTruckScheduleModel()
            {
                LocationId = 1,
                StartTime  = new DateTime(2017, 10, 9, 10, 0, 0),
                EndTime    = new DateTime(2017, 10, 9, 14, 0, 0)
            };

            // Act
            var validator = new CreateFoodTruckScheduleModelValidator(dateTimeProvider);
            var result    = validator.Validate(model);

            // Assert
            result.IsValid.Should().BeTrue();
        }