public OrderShippingPartHandler( IRepository<OrderShippingPartRecord> repository, IRepository<OrderAddressRecord> orderAddressRepository) { Filters.Add(StorageFilter.For(repository)); OnActivated<OrderShippingPart>((context, part) => { part._shippingDetails.Loader(shippingDetails => { var orderPart = context.ContentItem.As<OrderPart>(); if (orderPart != null) { return orderPart.Details.Where(d => d.DetailType == "Shipping"); } else { return new List<OrderDetail>(); } }); part._shippingAddress.Loader(shippingAddress => orderAddressRepository.Get(part.ShippingAddressId)); }); OnCreated<OrderShippingPart>((context, part) => { part.ShippingAddressId = orderAddressRepository.CreateOrUpdate(part.ShippingAddress); }); OnUpdated<OrderShippingPart>((context, part) => { part.ShippingAddressId = orderAddressRepository.CreateOrUpdate(part.ShippingAddress); }); }
public OrderPartHandler( IRepository<OrderPartRecord> repository, IContentManager contentManager, IRepository<OrderDetailRecord> orderDetailsRepository, IOrdersService ordersService, IRepository<OrderAddressRecord> orderAddressRepository) { _orderDetailsRepository = orderDetailsRepository; Filters.Add(StorageFilter.For(repository)); OnActivated<OrderPart>((context, part) => { // Details part._details.Loader(details => _orderDetailsRepository.Fetch(d => d.OrderId == part.Id) .Select(d => new OrderDetail(d)) .ToList()); // Order total part._orderTotal.Loader(orderTotal => BuildOrderTotal(part)); // BillingAddress part._billingAddress.Loader(shippingAddress => orderAddressRepository.Get(part.BillingAddressId)); }); OnLoading<OrderPart>((context, part) => { // Order total part._orderTotal.Loader(orderTotal => part.Retrieve(x => x.OrderTotal)); }); OnCreating<OrderPart>((context, part) => { if (String.IsNullOrWhiteSpace(part.Reference)) { part.Reference = ordersService.BuildOrderReference(); } }); OnCreated<OrderPart>((context, part) => { // Order total part.OrderTotal = BuildOrderTotal(part); SaveDetails(part); part.BillingAddressId = orderAddressRepository.CreateOrUpdate(part.BillingAddress); }); OnUpdated<OrderPart>((context, part) => { // Order total part.OrderTotal = BuildOrderTotal(part); SaveDetails(part); part.BillingAddressId = orderAddressRepository.CreateOrUpdate(part.BillingAddress); }); }