/// <summary> /// Set default environment /// </summary> /// <returns></returns> private async Task InitializeEnvironment() { var commerceEnvironment = await _getEnvironmentCommand.Process(this.CurrentContext, ENV_NAME) ?? this.CurrentContext.Environment; this.CurrentContext.Environment = commerceEnvironment; this.CurrentContext.PipelineContextOptions.CommerceContext.Environment = commerceEnvironment; }
private async Task ProcessMessagesAsync(Message message, CancellationToken token) { var messageString = Encoding.UTF8.GetString(message.Body); _logger.LogInformation($"Received Message: {messageString}"); if (message != null && message.UserProperties.ContainsKey("target_id") && message.UserProperties.ContainsKey("target_definition") && message.UserProperties.ContainsKey("target_definition")) { var targetId = (string)message.UserProperties["target_id"]; var targetDefinition = (string)message.UserProperties["target_definition"]; var instanceName = (string)message.UserProperties["instance_name"]; if (!string.IsNullOrEmpty(targetId) && !string.IsNullOrEmpty(targetDefinition) && !string.IsNullOrEmpty(instanceName)) { var context = GetCommerceContext(); var environment = await _getEnvironmentCommand.Process(context, "HabitatAuthoring").ConfigureAwait(false); context.PipelineContextOptions.CommerceContext.Environment = environment; var mappingPolicy = context.GetPolicy <SellableItemMappingPolicy>(); var mappingConfiguration = mappingPolicy?.MappingConfigurations?.FirstOrDefault(c => c.EntityType.Equals(targetDefinition, StringComparison.OrdinalIgnoreCase) && c.SourceName.Equals(instanceName, StringComparison.OrdinalIgnoreCase)); ImportCatalogEntityArgument result = null; if (mappingConfiguration != null) { result = await TryProcessSellableItem(targetId, targetDefinition, mappingConfiguration, context).ConfigureAwait(false); } else { var categoryMappingPolicy = context.GetPolicy <CategoryMappingPolicy>(); mappingConfiguration = categoryMappingPolicy?.MappingConfigurations?.FirstOrDefault(c => c.EntityType.Equals(targetDefinition, StringComparison.OrdinalIgnoreCase) && c.SourceName.Equals(instanceName, StringComparison.OrdinalIgnoreCase)); result = await TryProcessCategory(targetId, targetDefinition, mappingConfiguration, context).ConfigureAwait(false); } if (result == null) { _logger.LogError($"Cannot process Service Bus message. Mapping configuration not found for EntityType=={targetDefinition} and SourceName=={instanceName}"); } } } else { _logger.LogError($"Cannot process Service Bus message. UserProperties: {string.Join(Environment.NewLine, message.UserProperties)}. Message: {messageString}"); } await _queueClient.CompleteAsync(message.SystemProperties.LockToken); }
private CommerceContext GetCommerceContext() { var _nodeContext = _serviceProvider.GetService <NodeContext>(); ITrackActivityPipeline service = _serviceProvider.GetService <ITrackActivityPipeline>(); CommerceContext commerceContext = new CommerceContext(_logger, new Microsoft.ApplicationInsights.TelemetryClient()); commerceContext.GlobalEnvironment = _globalEnvironment; commerceContext.ConnectionId = Guid.NewGuid().ToString("N", (IFormatProvider)CultureInfo.InvariantCulture); commerceContext.CorrelationId = Guid.NewGuid().ToString("N", (IFormatProvider)CultureInfo.InvariantCulture); commerceContext.TrackActivityPipeline = service; commerceContext.PipelineTraceLoggingEnabled = _nodeContext != null && _nodeContext.PipelineTraceLoggingEnabled; commerceContext.Headers = new HeaderDictionary { { "Roles", @"sitecore\Commerce Administrator|sitecore\Customer Service Representative Administrator|sitecore\Customer Service Representative|sitecore\Commerce Business User|sitecore\Pricer Manager|sitecore\Pricer|sitecore\Promotioner Manager|sitecore\Promotioner|sitecore\Merchandiser|sitecore\Relationship Administrator" } }; commerceContext.Environment = this._nodeContext?.GetEntity <CommerceEnvironment>((Func <CommerceEnvironment, bool>)(e => e.Name.Equals(_defaultCommerceEnvironment, StringComparison.OrdinalIgnoreCase))) ?? Task.Run <CommerceEnvironment>((Func <Task <CommerceEnvironment> >)(() => _getEnvironmentCommand?.Process(commerceContext, _defaultCommerceEnvironment))).Result; if (commerceContext.Environment == null) { commerceContext.Environment = _globalEnvironment; } return(commerceContext); }