Example #1
0
        public async Task <ExecutionResult> Execute(ExecuteContext <ICreateOrderWithMultiItemsArguments> context)
        {
            var arguments = context.Arguments;

            var offers = await _office356DbOfferService.GetOffice365OffersAsync();

            var orderwithDetails = new Office365OrderWithDetailsModel
            {
                Office365CustomerId         = arguments.Office365CustomerId,
                Office365OrderDetailsModels = offers.Where(
                    o => arguments.CloudPlusProductIdentifiers.Any(x => x.Key == o.CloudPlusProductIdentifier))
                                              .Select(x => new Office365OrderDetailsModel()
                {
                    FriendlyName = x.OfferName, Office365OfferId = x.Office365Id, Quantity = arguments.CloudPlusProductIdentifiers.Where(c => c.Key == x.CloudPlusProductIdentifier).FirstOrDefault().Value
                }).ToList()
            };
            var subscriptions = await _office365SubscriptionService.CreateMultiPartnerPlatformSubscriptionsAsync(orderwithDetails);

            return(context.CompletedWithVariables(new CreateOrderWithMultiItemsLog
            {
                Office365CustomerId = arguments.Office365CustomerId,
                Office365Subscriptions = subscriptions.office365SubscriptionModels.Select(x => x.Office365SubscriptionId).ToList()
            }, new
            {
                Office365Subscriptions = subscriptions.office365SubscriptionModels.Select(x => x.Office365SubscriptionId).ToList(),
                Office365OrderId = subscriptions.OrderId
            }));
        }
Example #2
0
        public async Task <Office365OrderWithDetailsModel> CreateOrderWithMultiItemsAsync(Office365OrderWithDetailsModel orderModel)
        {
            var newOrder = new Order()
            {
                ReferenceCustomerId = orderModel.Office365CustomerId,
                LineItems           = orderModel.Office365OrderDetailsModels.Select(x => new OrderLineItem
                {
                    OfferId      = x.Office365OfferId,
                    FriendlyName = x.FriendlyName,
                    Quantity     = x.Quantity
                })
            };

            var requestSuccess = false;
            var attempts       = 1;

            do
            {
                try
                {
                    var createdOrder = await _partnerOperations.UserPartnerOperations
                                       .Customers.ById(orderModel.Office365CustomerId).Orders.CreateAsync(newOrder);

                    orderModel.OrderId = createdOrder.Id;
                    orderModel.Office365OrderDetailsModels.ForEach(x =>
                    {
                        x.SubscriptionId = createdOrder.LineItems.Where(i => i.OfferId == x.Office365OfferId).FirstOrDefault().SubscriptionId;
                    });

                    requestSuccess = true;

                    await ConfirmCreateOrder(orderModel.Office365CustomerId, orderModel.OrderId);

                    return(orderModel);
                }
                catch (Exception ex)
                {
                    this.Log().Error($"Create order request failed! Attampt: {attempts}", ex);
                    attempts++;
                    await Task.Delay(3000);
                }
            } while (!requestSuccess && attempts < _retryAttempts);

            throw new Exception("Create order with line items request failed!");
        }
Example #3
0
        //TAG
        public async Task <Office365OrderSubscriptionModel> CreateMultiPartnerPlatformSubscriptionsAsync(Office365OrderWithDetailsModel office365OrderModel)
        {
            var placedOrder = await _office365OrderService.CreateOrderWithMultiItemsAsync(office365OrderModel);

            return(new Office365OrderSubscriptionModel()
            {
                OrderId = placedOrder.OrderId,
                office365SubscriptionModels = placedOrder.Office365OrderDetailsModels.Select(x => new Office365SubscriptionModel
                {
                    Office365CustomerId = placedOrder.Office365CustomerId,
                    Office365SubscriptionId = x.SubscriptionId,
                    Office365OrderId = placedOrder.OrderId,
                    Office365FriendlyName = x.FriendlyName,
                    Quantity = x.Quantity
                }).ToList()
            });
        }