Esempio n. 1
0
        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());
        }