using Microsoft.Extensions.DependencyInjection;
using Tiku.Application.Tenancy;
using Tiku.Application.TenantAdmin;
using Tiku.Application.Jobs;
using Tiku.Infrastructure.Tenancy;
using Tiku.Infrastructure.TenantAdmin;
using Tiku.Infrastructure.TenantAdmin.Dashboard;

namespace Tiku.Infrastructure;

internal static class TenantAdminModule
{
    internal static IServiceCollection AddTenantAdminModule(this IServiceCollection services)
    {
        services.AddScoped<TenantAdminServiceDependencies>();
        services.AddScoped<ITenantAdminDashboardService, TenantAdminDashboardService>();
        services.AddScoped<ITenantClassService, TenantClassService>();
        services.AddScoped<ITenantStudentService, TenantStudentService>();
        services.AddScoped<ITenantSupervisionService, TenantSupervisionService>();
        services.AddScoped<ITenantMemberAccessService, TenantMemberAccessService>();
        services.AddScoped<ITenantSiteSettingsService, TenantSiteSettingsService>();
        services.AddScoped<ITenantDomainProviderService, TenantDomainProviderService>();
        services.AddScoped<ITenantEngagementService, TenantEngagementService>();
        services.AddScoped<ITenantStudentEngagementService, TenantStudentEngagementService>();
        services.AddScoped<ITenantOnboardingService, TenantOnboardingService>();
        services.AddScoped<ITenantLifecycleService, TenantLifecycleService>();
        services.AddScoped<IBackgroundJobHandler, StatisticsAggregationJobHandler>();
        return services;
    }
}
