// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddCors(); var rabbitMqConfig = Configuration.GetSection("ZaabeeRabbitMQ").Get <MqConfig>(); ZaabyServer.UseDDD(services); var config = new Config(Configuration.GetSection("Application")); var dataDir = Environment.GetEnvironmentVariable("DATA_DIR") ?? "./"; services .AddSingleton <IZaabeeRabbitMqClient>(p => new ZaabeeRabbitMqClient(rabbitMqConfig, new Serializer())) .AddScoped <IIntegrationEventBus, ZaabyEventBus>() .AddScoped <IDomainEventPublisher, DomainEventPublisher>() .AddScoped <ArticleDomainService>() .AddScoped <ArticleCategoryDomainService>() .AddSingleton <DomainEventHandlerProvider>() .AddSingleton <IArticleRepository>(new ArticleRepository(dataDir)) .AddSingleton <IArticleCategoryRepository>(new ArticleCategoryRepository(dataDir)) .AddSingleton <CategoryQueryService, CategoryQueryService>() .AddScoped <IArticleApplicationService, ArticleApplicationService>() .AddSingleton(new ArticleQueryService(config)) .AddSingleton <CategoryQueryService>(); services.Configure <CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddMvc(); }