Exemplo n.º 1
0
 public TenantContainerBuilder(IServiceCollection defaultServices,
                               ITenantContainerAdaptor parentContainer,
                               Action <TTenant, IServiceCollection> configureTenant,
                               ITenantContainerEventsPublisher <TTenant> containerEventsPublisher)
 {
     _defaultServices          = defaultServices;
     _parentContainer          = parentContainer;
     _configureTenant          = configureTenant;
     _containerEventsPublisher = containerEventsPublisher;
 }
        public TenantRequestContainerAccessor(
            ILogger <TenantRequestContainerAccessor <TTenant> > logger,
            ITenantContainerAccessor <TTenant> tenantContainerAccessor,
            ITenantContainerEventsPublisher <TTenant> containerEventsPublisher)
        {
            _containerEventsPublisher = containerEventsPublisher;

            TenantRequestContainer = new Lazy <Task <ITenantContainerAdaptor> >(async() =>
            {
                var tenantContainer = await tenantContainerAccessor.TenantContainer.Value;
                if (tenantContainer == null)
                {
                    return(null);
                }

                var requestContainer = tenantContainer.CreateNestedContainer($"{tenantContainer.ContainerName}");
                logger.LogDebug("Creating container name: {ContainerName}", tenantContainer.ContainerName);

                _containerEventsPublisher?.PublishNestedTenantContainerCreated(requestContainer);
                return(requestContainer);
            });
        }