private async Task <int[]> PushProductsAsync(Article[] products, bool isStage, string userName, int userId, string method, bool localize, bool autopublish, string[] forcedСhannels) { var notifications = GetNotifications(products, isStage, forcedСhannels, localize, autopublish); if (notifications == null) { return(null); } if (notifications.Any()) { var customerCode = _identityProvider.Identity.CustomerCode; if (!String.IsNullOrEmpty(_integrationProperties.RestNotificationUrl)) { var client = _httpClientFactory.CreateClient(); var json = JsonConvert.SerializeObject(notifications); var content = new StringContent(json, Encoding.UTF8, "application/json"); var url = GetRestUrl(isStage, userName, userId, method, customerCode); var result = await client.PutAsync(url, content); if (!result.IsSuccessStatusCode) { throw new ApplicationException("Notification sending failed with status code " + result.StatusCode); } } else if (!String.IsNullOrEmpty(_integrationProperties.WcfNotificationUrl)) { var myBinding = new BasicHttpBinding(); var myEndpoint = new EndpointAddress(_integrationProperties.WcfNotificationUrl); var service = new NotificationServiceClient(myBinding, myEndpoint); await service.PushNotificationsAsync(notifications, isStage, userId, userName, method, customerCode); } } return(notifications.Select(n => n.ProductId).ToArray()); }