private static RefundProductOrderData Map(OrderPlaced e, RefundProductOrderData d) { return(d.With(x => { x.OrderId = e.OrderId; x.Order = new Order { CustomerId = e.CustomerId, Sku = e.ProductId, WhenOrderPlaced = e.When }; })); }
private static IEnumerable <IDomainEvent> Handle(RefundProductOrderData d, Placed <RefundProductOrder> e) { if (d.Product == null) { throw new EventualConsistencyException <ProductOnSale>(); } if (d.Policy == null) { throw new EventualConsistencyException <PolicyInPlace>(); } if (d.Customer?.CustomerMarkedAsFraud ?? false) { return new[] { new RefundRejected { OrderId = d.OrderId } } } ; if (e.When.Value > d.Product.WhenSaleExpires) { return new[] { new RefundRejected { OrderId = d.OrderId } } } ; if (e.When.Value.Subtract(d.Order.WhenOrderPlaced.Value).TotalDays > d.Policy.CoolingOffPeriodInDays.Value) { return new[] { new RefundRejected { OrderId = d.OrderId } } } ; return(new[] { new RefundApproved { OrderId = d.OrderId } }); } }
private static RefundProductOrderData Map(ProductOnSale e, RefundProductOrderData d) { return(d.With(x => x.Product = new Product { PolicyId = e.PolicyId, WhenSaleExpires = e.WhenSaleExpires })); }
private static RefundProductOrderData Map(CustomerMarkedAsFraud e, RefundProductOrderData d) { return(d.With(x => x.Customer = new Customer { CustomerMarkedAsFraud = true })); }
private static RefundProductOrderData Map(PolicyInPlace e, RefundProductOrderData d) { return(d.With(x => x.Policy = new ProductPolicy { CoolingOffPeriodInDays = e.CoolingOffPeriodInDays, RefundAllowed = e.RefundsAllowed })); }