예제 #1
0
 public ValidationRule <Order> RuleOrderMarkedAsShippedMustHaveAShippedDate()
 =>
 ValidationRule.NewRule <Order>()
 .OnlyCheckIf(order => order.OrderStatus == OrderStatuses.Shipped)
 .ValidIf(order => order.ShipDateTime.HasValue)
 .SetErrorMessage("Order is marked as shipped, but has no Ship Date/Time specified")
 .AddInvalidMember(order => order.ShipDateTime);
예제 #2
0
 public ValidationRule <Order> RuleOrderCannotHaveAShippedDateLaterThanDatePlaced()
 =>
 ValidationRule.NewRule <Order>()
 .OnlyCheckIf(order => order.ShipDateTime.HasValue)
 .ValidIf(order => order.ShipDateTime.Value >= order.OrderDateTime)
 .SetErrorMessage(order => $"Order has a Ship Date/Time of {order.ShipDateTime.Value} which is earlier than the Date/Time it was placed of { order.OrderDateTime }")
 .AddInvalidMember(order => order.OrderDateTime)
 .AddInvalidMember(order => order.ShipDateTime);
예제 #3
0
 public ValidationRule <Order> RuleCustomersCannotHaveMoreThanFiveOrdersAMonth()
 =>
 ValidationRule.NewRule <Order>()
 .OnlyCheckIf(order => !order.OrderId.HasValue)
 .ValidIf(order =>
 {
     var orders = _orderRepository.GetOrdersForCustomerForMonth(order.CustomerId, order.OrderDateTime);
     return(orders.Count() < 5);
 })
 .SetErrorMessage("Customers can only place 5 orders a month.");
예제 #4
0
 public ValidationRule <Order> RuleOrderCannotHaveDuplicateConfirmationNumber()
 =>
 ValidationRule.NewRule <Order>()
 .OnlyCheckIf(order => !string.IsNullOrWhiteSpace(order.ConfirmationNumber))
 .ValidIf(order =>
 {
     var orders = _orderRepository.GetOrdersByConfirmationNumber(order.ConfirmationNumber).Where(o => o.OrderId != order.OrderId);
     return(!orders.Any());
 })
 .StopProcessingMoreRulesIfValidationFails()
 .SetErrorMessage(order => $"The confirmation number '{order.ConfirmationNumber}' is already in use.")
 .AddInvalidMember(order => order.ConfirmationNumber);
예제 #5
0
 public ValidationRule <Order> RuleOrderPlacedDateTimeMustBeInThePast()
 =>
 ValidationRule.NewRule <Order>()
 .ValidIf(order => DateTime.Now >= order.OrderDateTime)
 .SetErrorMessage(order => $"Order has an invalid Date/Time of {order.OrderDateTime}")
 .AddInvalidMember(order => order.OrderDateTime);