using ConstructorApp.BusinessLayer.Abstract;
using ConstructorApp.BusinessLayer.Concrete;
using ConstructorApp.DataAccessLayer.Abstract;
using ConstructorApp.DataAccessLayer.EntityFramework;
using Microsoft.Extensions.DependencyInjection;

namespace ConstructorApp.BusinessLayer.Extensions
{
    public static class DependencyInjectionExtensions
    {
        public static IServiceCollection AddBusinessLayerDependencies(this IServiceCollection services)
        {
            // CompanyInfo Service
            services.AddScoped<ICompanyInfoService, CompanyInfoManager>();
            services.AddScoped<ICompanyInfoDal, EfCompanyInfoDal>();
            // CompanyInfoVideo Service
            services.AddScoped<ICompanyInfoVideoService, CompanyInfoVideoManager>();
            services.AddScoped<ICompanyInfoVideoDal, EfCompanyInfoVideoDal>();
            // ContactUs Service
            services.AddScoped<IContactUsService, ContactUsManager>();
            services.AddScoped<IContactUsDal, EfContactUsDal>();
            // Footer Service
            services.AddScoped<IFooterService, FooterManager>();
            services.AddScoped<IFooterDal, EfFooterDal>();
            // HomeBanner Service
            services.AddScoped<IHomeBannerService, HomeBannerManager>();
            services.AddScoped<IHomeBannerDal, EfHomeBannerDal>();
            // ProjectGallery Service
            services.AddScoped<IProjectGalleryService, ProjectGalleryManager>();
            services.AddScoped<IProjectGalleryDal, EfProjectGalleryDal>();
            // Project Service
            services.AddScoped<IProjectService, ProjectManager>();
            services.AddScoped<IProjectDal, EfProjectDal>();
            // Reference Service
            services.AddScoped<IReferenceService, ReferenceManager>();
            services.AddScoped<IReferenceDal, EfReferenceDal>();
            // Service Service
            services.AddScoped<IServiceService, ServiceManager>();
            services.AddScoped<IServiceDal, EfServiceDal>();
            // Slider Service
            services.AddScoped<ISliderService, SliderManager>();
            services.AddScoped<ISliderDal, EfSliderDal>();
            // Team Service
            services.AddScoped<ITeamService, TeamManager>();
            services.AddScoped<ITeamDal, EfTeamDal>();
            // Testimonial Service
            services.AddScoped<ITestimonialService, TestimonialManager>();
            services.AddScoped<ITestimonialDal, EfTestimonialDal>();
            // WorkProcess Service
            services.AddScoped<IWorkProcessService, WorkProcessManager>();
            services.AddScoped<IWorkProcessDal, EfWorkProcessDal>();

            return services;
        }
    }
}
