public static ManagementContext Build()
        {
            var rtn = new ManagementContext();

            var swis = new Application { Name = "SWIS" };
            var cico = new Application { Name = "CICO" };
            var isis = new Application { Name = "ISIS" };

            var trainingProduct = new Product { Name = "SWIS Training" };
            var swisSubscription = new Product { Name = "SWIS Subscription", Application = swis };
            var cicoSubscription = new Product { Name = "CICO Subscription", Application = cico };
            var isisSubscription = new Product { Name = "ISIS Subscription", Application = isis };

            var hogwarts = new Organization { Name = "Hogwarts" };
            var starfleet = new Organization { Name = "Starfleet Academy" };

            var hogwartsFinancial = new FinancialAccount { Organization = hogwarts };

            rtn.Applications.Add(swis);
            rtn.Applications.Add(cico);
            rtn.Applications.Add(isis);

            rtn.Products.Add(trainingProduct);
            rtn.Products.Add(swisSubscription);
            rtn.Products.Add(cicoSubscription);
            rtn.Products.Add(isisSubscription);

            rtn.Organizations.Add(hogwarts);
            rtn.Organizations.Add(starfleet);

            rtn.FinancialAccounts.Add(hogwartsFinancial);

            return rtn;
        }
 public CreateOrderWorkflowStep(ManagementContext context, Organization beneficiary, Product product, Organization payer)
     : base(context)
 {
     this.beneficiary = beneficiary;
     this.product = product;
     this.payer = payer;
 }
        public PlaceOrderWorkflow(ManagementContext db, Organization beneficiary, Product product, Organization payer)
            : base(db)
        {
            var orderStep = new CreateOrderWorkflowStep(db, beneficiary, product, payer);
            this.Add(orderStep, 1);

            if (product.Application != null)
            {
                var subStep = new AddSubscriptionWorkflowStep(db, beneficiary, product.Application);
                this.Add(subStep, 2);
            }
        }
 public AddSubscriptionWorkflowStep(ManagementContext context, Organization subscriber, Application application)
     : base(context)
 {
     this.subscriber = subscriber;
     this.application = application;
 }