Beispiel #1
0
        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;
        }
Beispiel #3
0
        /// <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();
        }
Beispiel #4
0
 /// <summary>
 /// Portfolio consumer
 /// </summary>
 public PortfolioConsumer(IOrderManagement orderManagement)
 {
     _log             = LogProvider.For <PortfolioConsumer>();
     _orderManagement = orderManagement;
 }