0
0
mirror of https://github.com/alex289/CleanArchitecture.git synced 2025-06-30 02:31:08 +00:00
CleanArchitecture/CleanArchitecture.Domain/Extensions/ServiceCollectionExtension.cs
2023-09-02 12:34:08 +02:00

64 lines
2.8 KiB
C#

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<IRequestHandler<CreateUserCommand>, CreateUserCommandHandler>();
services.AddScoped<IRequestHandler<UpdateUserCommand>, UpdateUserCommandHandler>();
services.AddScoped<IRequestHandler<DeleteUserCommand>, DeleteUserCommandHandler>();
services.AddScoped<IRequestHandler<ChangePasswordCommand>, ChangePasswordCommandHandler>();
services.AddScoped<IRequestHandler<LoginUserCommand, string>, LoginUserCommandHandler>();
// Tenant
services.AddScoped<IRequestHandler<CreateTenantCommand>, CreateTenantCommandHandler>();
services.AddScoped<IRequestHandler<UpdateTenantCommand>, UpdateTenantCommandHandler>();
services.AddScoped<IRequestHandler<DeleteTenantCommand>, DeleteTenantCommandHandler>();
return services;
}
public static IServiceCollection AddNotificationHandlers(this IServiceCollection services)
{
// Fanout
services.AddScoped<IFanoutEventHandler, FanoutEventHandler>();
// User
services.AddScoped<INotificationHandler<UserCreatedEvent>, UserEventHandler>();
services.AddScoped<INotificationHandler<UserUpdatedEvent>, UserEventHandler>();
services.AddScoped<INotificationHandler<UserDeletedEvent>, UserEventHandler>();
services.AddScoped<INotificationHandler<PasswordChangedEvent>, UserEventHandler>();
// Tenant
services.AddScoped<INotificationHandler<TenantCreatedEvent>, TenantEventHandler>();
services.AddScoped<INotificationHandler<TenantUpdatedEvent>, TenantEventHandler>();
services.AddScoped<INotificationHandler<TenantDeletedEvent>, TenantEventHandler>();
return services;
}
public static IServiceCollection AddApiUser(this IServiceCollection services)
{
// User
services.AddScoped<IUser, ApiUser>();
return services;
}
}