public AmazonOrder ScheduleSync(Order order) { switch (order.OrderStatus) { case OrderStatusEnum.Unshipped: case OrderStatusEnum.PartiallyShipped: case OrderStatusEnum.Shipped: case OrderStatusEnum.Canceled: { if (!_importAmazonOrderService.IsCurrencyValid(order)) { _amazonLogService.Add(AmazonLogType.Orders, AmazonLogStatus.Stage, null, null, AmazonApiSection.Orders, null, null, null, null, string.Format( "Amazon Order #{0} uses different currency than current MrCMS Site.", order.AmazonOrderId)); } else { var amazonOrder = _amazonOrderService.GetByAmazonOrderId(order.AmazonOrderId); var amazonOrderData = _amazonOrderSyncInfoService.GetByAmazonOrderId(order.AmazonOrderId).ToList(); if (order.OrderStatus == OrderStatusEnum.Canceled) { return(amazonOrder); } var newAmazonOrderData = new AmazonOrderSyncData { OrderId = order.AmazonOrderId, Operation = (amazonOrder == null ? (amazonOrderData.Any(x => x.Operation == SyncAmazonOrderOperation.Add) ? SyncAmazonOrderOperation.Update : SyncAmazonOrderOperation.Add) : SyncAmazonOrderOperation.Update), Status = SyncAmazonOrderStatus.Pending, Data = AmazonAppHelper.SerializeToJson(order), Site = CurrentRequestData.CurrentSite }; if (amazonOrder != null) { newAmazonOrderData.AmazonOrder = amazonOrder; } _amazonOrderSyncInfoService.Add(newAmazonOrderData); return(amazonOrder); } } break; } return(null); }