Beispiel #1
0
        public async Task <Office365OrderModel> CreateOrderAsync(Office365OrderModel orderModel)
        {
            var newOrder = new Order()
            {
                ReferenceCustomerId = orderModel.Office365CustomerId,
                LineItems           = new List <OrderLineItem>
                {
                    new OrderLineItem
                    {
                        OfferId      = orderModel.Office365OfferId,
                        FriendlyName = orderModel.FriendlyName,
                        Quantity     = orderModel.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.SubscriptionId = createdOrder.LineItems.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 request failed!");
        }
Beispiel #2
0
        public async Task <Office365SubscriptionModel> CreatePartnerPlatformSubscriptionAsync(string office365CustomerId, string office365OfferId, int quantity = 1)
        {
            var orderModel = new Office365OrderModel
            {
                Office365CustomerId = office365CustomerId,
                Office365OfferId    = office365OfferId,
                Quantity            = quantity
            };

            var placedOrder = await _office365OrderService.CreateOrderAsync(orderModel);

            return(new Office365SubscriptionModel
            {
                Office365CustomerId = office365CustomerId,
                Office365SubscriptionId = placedOrder.SubscriptionId,
                Office365OrderId = placedOrder.OrderId,
                Office365FriendlyName = placedOrder.FriendlyName,
                Quantity = placedOrder.Quantity
            });
        }