public static IServiceCollection AddServices(this IServiceCollection services, string redisConnectionString)
        {
            services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
            services.AddMediatR(AppDomain.CurrentDomain.GetAssemblies());
            services.AddScoped <IConfigurationAppService, ConfigurationAppService>();
            services.AddConfigurationManager(redisConnectionString);
            ApplicationMapperConfig.RegisterMappings();
            DomainMapperConfig.RegisterMappings();

            return(services);
        }
Example #2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddMemoryCache();
            services.AddCors();
            services.AddDirectoryBrowser();
            ApplicationMapperConfig mapperConfig = new ApplicationMapperConfig(Configuration);

            mapperConfig.Initialize();
            services.AddSingleton(Configuration);
            //Repositories DI (Infrastrucure layer)
            services.AddScoped <IMangaRepository, MangaRepository>();
            services.AddScoped <IChapterRepository, ChapterRepository>();
            services.AddScoped <IPageRepository, PageRepository>();
            services.AddScoped <ITagRepository, TagRepository>();
            //Service DI (Application layer)
            services.AddScoped <DefaultMangaService>();
            services.AddScoped <DefaultChapterService>();
            services.AddScoped <DefaultPageService>();
            services.AddScoped <DefaultTagService>();
            services.AddScoped <OnMangaMangaService>();
            services.AddScoped <OnMangaChapterService>();
            services.AddScoped <OnMangaPageService>();
            services.AddScoped <OnMangaTagService>();
            services.AddScoped <ShaqqaaMangaService>();
            services.AddScoped <ShaqqaaChapterService>();
            services.AddScoped <ShaqqaaPageService>();
            services.AddScoped <ShaqqaaTagService>();
            services.AddTransient <Func <PluginEnum, IMangaService> >(serviceProvider => key =>
            {
                switch (key)
                {
                case PluginEnum.Default:
                    return(serviceProvider.GetService <DefaultMangaService>());

                case PluginEnum.OnManga:
                    return(serviceProvider.GetService <OnMangaMangaService>());

                case PluginEnum.Shaqqaa:
                    return(serviceProvider.GetService <ShaqqaaMangaService>());

                default:
                    return(serviceProvider.GetService <DefaultMangaService>());
                }
            });
            services.AddTransient <Func <PluginEnum, IChapterService> >(serviceProvider => key =>
            {
                switch (key)
                {
                case PluginEnum.Default:
                    return(serviceProvider.GetService <DefaultChapterService>());

                case PluginEnum.OnManga:
                    return(serviceProvider.GetService <OnMangaChapterService>());

                case PluginEnum.Shaqqaa:
                    return(serviceProvider.GetService <ShaqqaaChapterService>());

                default:
                    return(serviceProvider.GetService <DefaultChapterService>());
                }
            });
            services.AddTransient <Func <PluginEnum, IPageService> >(serviceProvider => key =>
            {
                switch (key)
                {
                case PluginEnum.Default:
                    return(serviceProvider.GetService <DefaultPageService>());

                case PluginEnum.OnManga:
                    return(serviceProvider.GetService <OnMangaPageService>());

                case PluginEnum.Shaqqaa:
                    return(serviceProvider.GetService <ShaqqaaPageService>());

                default:
                    return(serviceProvider.GetService <DefaultPageService>());
                }
            });
            services.AddTransient <Func <PluginEnum, ITagService> >(serviceProvider => key =>
            {
                switch (key)
                {
                case PluginEnum.Default:
                    return(serviceProvider.GetService <DefaultTagService>());

                case PluginEnum.OnManga:
                    return(serviceProvider.GetService <OnMangaTagService>());

                case PluginEnum.Shaqqaa:
                    return(serviceProvider.GetService <ShaqqaaTagService>());

                default:
                    return(serviceProvider.GetService <DefaultTagService>());
                }
            });
        }