using CleanArchitecture.Domain.Commands.Tenants.CreateTenant; using CleanArchitecture.Domain.Commands.Tenants.DeleteTenant; using CleanArchitecture.Domain.Commands.Tenants.UpdateTenant; using CleanArchitecture.Domain.Commands.Users.ChangePassword; using CleanArchitecture.Domain.Commands.Users.CreateUser; using CleanArchitecture.Domain.Commands.Users.DeleteUser; using CleanArchitecture.Domain.Commands.Users.LoginUser; using CleanArchitecture.Domain.Commands.Users.UpdateUser; using CleanArchitecture.Domain.EventHandler; using CleanArchitecture.Domain.EventHandler.Fanout; using CleanArchitecture.Domain.Interfaces; using CleanArchitecture.Shared.Events.Tenant; using CleanArchitecture.Shared.Events.User; using MediatR; using Microsoft.Extensions.DependencyInjection; namespace CleanArchitecture.Domain.Extensions; public static class ServiceCollectionExtension { public static IServiceCollection AddCommandHandlers(this IServiceCollection services) { // User services.AddScoped, CreateUserCommandHandler>(); services.AddScoped, UpdateUserCommandHandler>(); services.AddScoped, DeleteUserCommandHandler>(); services.AddScoped, ChangePasswordCommandHandler>(); services.AddScoped, LoginUserCommandHandler>(); // Tenant services.AddScoped, CreateTenantCommandHandler>(); services.AddScoped, UpdateTenantCommandHandler>(); services.AddScoped, DeleteTenantCommandHandler>(); return services; } public static IServiceCollection AddNotificationHandlers(this IServiceCollection services) { // Fanout services.AddScoped(); // User services.AddScoped, UserEventHandler>(); services.AddScoped, UserEventHandler>(); services.AddScoped, UserEventHandler>(); services.AddScoped, UserEventHandler>(); // Tenant services.AddScoped, TenantEventHandler>(); services.AddScoped, TenantEventHandler>(); services.AddScoped, TenantEventHandler>(); return services; } public static IServiceCollection AddApiUser(this IServiceCollection services) { // User services.AddScoped(); return services; } }