public uint CalculateOrderCosts(Customer customer, IOrderManagement contract) { var orderCosts = contract.ReOrder( customer.Property.IsCreditChecked, customer.Property.Location, customer.AnnualBasicOrder, customer.Property.MonthlyQuantity, customer.AnnualOrderDiscountAllowance); return(orderCosts); }
public uint CalculateOrderCosts(Customer customer, IOrderManagement contract) { var orderCosts = contract.ReOrder( customer.Property.IsCreditChecked, customer.Property.Location, customer.AnnualBasicOrder, customer.Property.MonthlyQuantity, customer.AnnualOrderDiscountAllowance); return orderCosts; }
/// <summary> /// Order management state machine /// </summary> /// <param name="orderManagement"></param> public OrderManagementStateMachine(IOrderManagement orderManagement) { _log = LogProvider.For <OrderManagementStateMachine>(); State(() => OrderManagementApproved); State(() => OrderManagementRevoked); Event(() => InvestmentNew, x => x.CorrelateById(os => os.Investment.Id, ctx => ctx.Message.Investment.Id).SelectId(context => Guid.NewGuid())); Initially( When(InvestmentNew) // Set received Investment to machine state .Then(ctx => ctx.Instance.Investment = ctx.Data.Investment) // Log .ThenAsync(ctx => Task.Run(() => _log.Debug($"Investment {ctx.Instance.Investment.ToString()} added to order management"))) .IfElse(ctx => orderManagement.ValidateInvetsment(ctx.Instance.Investment), ctx => ctx.TransitionTo(OrderManagementApproved), ctx => ctx.TransitionTo(OrderManagementRevoked))); DuringAny( // Investment approved by order management When(OrderManagementApproved.Enter) // Log .ThenAsync(ctx => Task.Run(() => _log.Debug($"Investment {ctx.Instance.Investment.ToString()} approved by order management"))) // Send approved message .Then(ctx => ctx.Publish <OrderManagementInvestmentState, IInvestmentOfferOrderManagementApproved>(new { Investment = ctx.Instance.Investment })) .Finalize(), // Investment revoked by order management When(OrderManagementRevoked.Enter) // Log .ThenAsync(ctx => Task.Run(() => _log.Debug($"Investment {ctx.Instance.Investment.ToString()} revoked by order management"))) // Send revoked message .Then(ctx => ctx.Publish <OrderManagementInvestmentState, IInvestmentOfferOrderManagementRevoked>(new { Investment = ctx.Instance.Investment })) .Finalize()); SetCompletedWhenFinalized(); }
/// <summary> /// Portfolio consumer /// </summary> public PortfolioConsumer(IOrderManagement orderManagement) { _log = LogProvider.For <PortfolioConsumer>(); _orderManagement = orderManagement; }