private void CreateOrder(IDeliveryOrder order, AggregatorCell cell) { var paymentUnit = Extensions.GetPaymentTuple(order, cell.Converter, cell.PaymentTypes); var createRequest = cell.Converter.ToCreateOrderRequest(order, paymentUnit.Item1, paymentUnit.Item2); var createResponse = cell.ApiClient.CreateOrder(createRequest); var getRequest = cell.Converter.ToGetOrderRequest(createResponse); var getResponse = cell.ApiClient.GetOrder(getRequest); if (getResponse == null) { PluginContext.Log.Info($"Could not get order {order.Number} (aggregator api does not support GetOrder request)"); } var toCache = cell.Converter.ToCommonCache(createResponse); toCache.OrderId = order.Id; toCache.OrderNumber = order.Number; toCache.Status = cell.Converter.ToCommonStatus(order.DeliveryStatus); _cache.AddOrUpdate(order.Id, cell.Converter.ToCommonCache(createResponse)); PluginContext.Log.Info($"Order with courier {order.Courier.Name} and #{order.Number} created: {createResponse.Message}"); }
private void OnDeliveryOrderChanged(IDeliveryOrder order) { try { if (order.Courier == null) { return; } AggregatorCell currAggregator = _service.Get(order.Courier.Name.ToLower()); if (currAggregator == null) { return; } if (!_cache.Contains(order.Id)) { CreateOrder(order, currAggregator); } } catch (Exception ex) { PluginContext.Log.Error($"Failed to create or update Order {order.Number}", ex); } }