public Result<object> Process(Sale sale, IEnvelopeContext context) { var envelopeBuilder = new DeliveryEnvelopeBuilder(sale, new PaymentNoteEnvelopeBuilder(context, new ReceiptEnvelopeBuilder(context, new OutletVisitNoteEnvelopeBuilder(context)))); return new Transactor(database).Transact(() => { envelopeBuilder.Build().ForEach(e => envelopeRouter.RouteCommandEnvelope(e)); sale.ConfirmNewPayments(); saleRepository.Save(sale); }); }
public Result<object> Process(Sale sale, IEnvelopeContext context) { var envelopeBuilder = new DeliveryEnvelopeBuilder(sale, new CloseOrderEnvelopeBuilder(context, new DispatchNoteEnvelopeBuilder(context, new PaymentNoteEnvelopeBuilder(context, new ReceiptEnvelopeBuilder(context, new CreditNoteEnvelopeBuilder(context, new InventoryAdjustmentNoteEnvelopeBuilder(context, inventoryRepository, new OutletVisitNoteEnvelopeBuilder(context)))))))); return new Transactor(database).Transact(() => { envelopeBuilder.Build().ForEach(e => envelopeRouter.RouteCommandEnvelope(e)); sale.ConfirmNewPayments(); sale.ProcessingStatus = sale.HasNoBackorderItems ? ProcessingStatus.Confirmed : ProcessingStatus.PartiallyFulfilled; saleRepository.Save(sale); }); }