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!"); }
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 }); }