예제 #1
0
            public void SundayOrder_WithLeadTimeOfOneDay_HasDespatchDateOfTuesday()
            {
                var orderDate = new DateTime(2020, 10, 4);
                var date      = _controller.Get(DespatchDateRequest.SingleProduct(1, orderDate));

                date.Date.ShouldBe(new DateTime(2020, 10, 6));
            }
예제 #2
0
            public void FridayOrder_WithLeadTimeOfElevenDays_HasDespatchDateOfThirdMonday()
            {
                var orderDate = new DateTime(2020, 10, 2);
                var date      = _controller.Get(DespatchDateRequest.SingleProduct(10, orderDate));

                date.Date.ShouldBe(new DateTime(2020, 10, 19));
            }
        public DespatchDate GetDespatchDate(DespatchDateRequest request)
        {
            var maxLeadTimeDays = request.ProductIds
                                  .Select(productId => _productRepository.GetProductLeadTime(productId))
                                  .Max();

            return(new DespatchDate {
                Date = request.OrderDate.AddWorkingDays(maxLeadTimeDays)
            });
        }
예제 #4
0
 public DespatchDate Get(DespatchDateRequest request)
 {
     return(_orderService.GetDespatchDate(request));
 }
예제 #5
0
            public void MondayOrder_WithLeadTimeOfTwoDays_HasDespathDateOfWednesday()
            {
                var date = _controller.Get(DespatchDateRequest.SingleProduct(2, _mondayOrderDate));

                date.Date.Date.ShouldBe(new DateTime(2020, 10, 7));
            }