52 lines
2.0 KiB
C#
52 lines
2.0 KiB
C#
using IM_API.Application.EventHandlers;
|
|
using IM_API.Application.Interfaces;
|
|
using IM_API.Domain.Events;
|
|
using IM_API.Dtos;
|
|
using IM_API.Infrastructure.EventBus;
|
|
using IM_API.Interface.Services;
|
|
using IM_API.Services;
|
|
using IM_API.Tools;
|
|
using Microsoft.AspNetCore.Http.HttpResults;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace IM_API.Configs
|
|
{
|
|
public static class ServiceCollectionExtensions
|
|
{
|
|
public static IServiceCollection AddAllService(this IServiceCollection services, IConfiguration configuration)
|
|
{
|
|
|
|
services.AddAutoMapper(typeof(MapperConfig));
|
|
services.AddTransient<IAuthService, AuthService>();
|
|
services.AddTransient<IUserService, UserService>();
|
|
services.AddTransient<IFriendSerivce, FriendService>();
|
|
services.AddTransient<IMessageSevice, MessageService>();
|
|
services.AddTransient<IConversationService, ConversationService>();
|
|
services.AddScoped<IEventBus, InMemoryEventBus>();
|
|
services.AddSingleton<IJWTService, JWTService>();
|
|
services.AddSingleton<IRefreshTokenService, RedisRefreshTokenService>();
|
|
return services;
|
|
}
|
|
public static IServiceCollection AddModelValidation(this IServiceCollection services, IConfiguration configuration)
|
|
{
|
|
services.Configure<ApiBehaviorOptions>(options =>
|
|
{
|
|
options.InvalidModelStateResponseFactory = context =>
|
|
{
|
|
var errors = context.ModelState
|
|
.Where(e => e.Value.Errors.Count > 0)
|
|
.Select(e => new
|
|
{
|
|
Field = e.Key,
|
|
Message = e.Value.Errors.First().ErrorMessage
|
|
});
|
|
|
|
return new BadRequestObjectResult(new BaseResponse<object?>(CodeDefine.PARAMETER_ERROR.Code, errors.First().Message));
|
|
};
|
|
});
|
|
return services;
|
|
}
|
|
|
|
}
|
|
}
|