diff --git a/Api/Program.cs b/Api/Program.cs index d1d6b44..97ff122 100644 --- a/Api/Program.cs +++ b/Api/Program.cs @@ -1,6 +1,7 @@ using Api.Extensions; using Api.GlobalException; using Application.Models.Configurations; +using Infrastructure.BackgroundServices; using Infrastructure.DependencyInjection; using Microsoft.EntityFrameworkCore; using Persistence.Context; @@ -18,9 +19,8 @@ builder.Services.AddSwaggerGen(); builder.Services - .AddInfrastructureServices() - .AddPersistenceRepositories(); - + .AddPersistenceRepositories() + .AddInfrastructureServices(); builder.Services.AddAuthenticationAndAuthorization(builder.Configuration); builder.Services.AddSwagger(); diff --git a/Core/Application/Models/Requests/BanUserRequest.cs b/Core/Application/Models/Requests/BanUserRequest.cs index 2da6e9f..25a6572 100644 --- a/Core/Application/Models/Requests/BanUserRequest.cs +++ b/Core/Application/Models/Requests/BanUserRequest.cs @@ -5,4 +5,6 @@ public class BanUserRequest public string UserId { get; set; } public DateTime BanDate { get; set; } public string ReasonContent { get; set; } + public int UnbanAfter { get; set; } + public bool UnbanWithHours { get; set; } } diff --git a/Core/Application/Repositories/BannedUserRepository/IReadBannedUserRepository.cs b/Core/Application/Repositories/BannedUserRepository/IReadBannedUserRepository.cs new file mode 100644 index 0000000..94f7dc1 --- /dev/null +++ b/Core/Application/Repositories/BannedUserRepository/IReadBannedUserRepository.cs @@ -0,0 +1,8 @@ +using Application.Repositories.Repository; +using Domain.Models; + +namespace Application.Repositories.BannedUserRepository; + +public interface IReadBannedUserRepository : IReadRepository +{ +} diff --git a/Core/Application/Repositories/BannedUserRepository/IWriteBannedUserRepository.cs b/Core/Application/Repositories/BannedUserRepository/IWriteBannedUserRepository.cs new file mode 100644 index 0000000..3d94e78 --- /dev/null +++ b/Core/Application/Repositories/BannedUserRepository/IWriteBannedUserRepository.cs @@ -0,0 +1,8 @@ +using Application.Repositories.Repository; +using Domain.Models; + +namespace Application.Repositories.BannedUserRepository; + +public interface IWriteBannedUserRepository : IWriteRepository +{ +} diff --git a/Core/Application/Repositories/IUnitOfWork.cs b/Core/Application/Repositories/IUnitOfWork.cs index 473ea64..23e3ed7 100644 --- a/Core/Application/Repositories/IUnitOfWork.cs +++ b/Core/Application/Repositories/IUnitOfWork.cs @@ -1,4 +1,5 @@ -using Application.Repositories.BookRepository; +using Application.Repositories.BannedUserRepository; +using Application.Repositories.BookRepository; using Application.Repositories.CommentRepository; using Application.Repositories.CourseRepository; using Application.Repositories.UserRepository; @@ -17,4 +18,7 @@ public interface IUnitOfWork IWriteCourseRepository WriteCourseRepository { get; } IReadCommentRepository ReadCommentRepository { get; } IWriteCommentRepository WriteCommentRepository { get;} + + IReadBannedUserRepository ReadBannedUserRepository { get; } + IWriteBannedUserRepository WriteBannedUserRepository { get; } } diff --git a/Domain/Models/BannedUser.cs b/Domain/Models/BannedUser.cs new file mode 100644 index 0000000..1522079 --- /dev/null +++ b/Domain/Models/BannedUser.cs @@ -0,0 +1,10 @@ +using Domain.Models.Common; + +namespace Domain.Models; + +public class BannedUser : BaseEntity +{ + public string ReasonContent { get; set; } + public DateTime BannedDate { get; set; } + public DateTime UnbanDate { get; set; } +} diff --git a/Infrastructure/Infrastructure/BackgroundServices/ForbiddenCommentChecker.cs b/Infrastructure/Infrastructure/BackgroundServices/ForbiddenCommentChecker.cs new file mode 100644 index 0000000..68df569 --- /dev/null +++ b/Infrastructure/Infrastructure/BackgroundServices/ForbiddenCommentChecker.cs @@ -0,0 +1,13 @@ +using Application.Repositories; +using Microsoft.Extensions.Hosting; +using Serilog; + +namespace Infrastructure.BackgroundServices; + +public class ForbiddenCommentChecker : BackgroundService +{ + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + Log.Information("Forbidden Message Checker -- B Service started working."); + } +} diff --git a/Infrastructure/Infrastructure/DependencyInjection/InfrastructureDependencyInjection.cs b/Infrastructure/Infrastructure/DependencyInjection/InfrastructureDependencyInjection.cs index cfc5448..bbb17f2 100644 --- a/Infrastructure/Infrastructure/DependencyInjection/InfrastructureDependencyInjection.cs +++ b/Infrastructure/Infrastructure/DependencyInjection/InfrastructureDependencyInjection.cs @@ -1,4 +1,5 @@ using Application.Services; +using Infrastructure.BackgroundServices; using Infrastructure.Services; using Microsoft.Extensions.DependencyInjection; using System.Runtime.CompilerServices; @@ -23,6 +24,10 @@ public static IServiceCollection AddInfrastructureServices(this IServiceCollecti services.AddScoped(); + // hosted services + + services.AddHostedService(); + return services; } } diff --git a/Infrastructure/Persistence/DependencyInjection/PersistenceDependencyInjection.cs b/Infrastructure/Persistence/DependencyInjection/PersistenceDependencyInjection.cs index 15cc128..a2da0f1 100644 --- a/Infrastructure/Persistence/DependencyInjection/PersistenceDependencyInjection.cs +++ b/Infrastructure/Persistence/DependencyInjection/PersistenceDependencyInjection.cs @@ -9,6 +9,8 @@ using Persistence.Repositories.CourseRepository; using Persistence.Repositories.UserRepository; using Persistence.Repositories; +using Application.Repositories.BannedUserRepository; +using Persistence.Repositories.BannedUserRepository; namespace Persistence.DependencyInjection; @@ -28,6 +30,9 @@ public static IServiceCollection AddPersistenceRepositories(this IServiceCollect services.AddScoped(); services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); return services; diff --git a/Infrastructure/Persistence/Repositories/BannedUserRepository/ReadBannedUserRepository.cs b/Infrastructure/Persistence/Repositories/BannedUserRepository/ReadBannedUserRepository.cs new file mode 100644 index 0000000..cacc687 --- /dev/null +++ b/Infrastructure/Persistence/Repositories/BannedUserRepository/ReadBannedUserRepository.cs @@ -0,0 +1,13 @@ +using Application.Repositories.BannedUserRepository; +using Domain.Models; +using Persistence.Context; +using Persistence.Repositories.Repository; + +namespace Persistence.Repositories.BannedUserRepository; + +public class ReadBannedUserRepository : ReadRepository, IReadBannedUserRepository +{ + public ReadBannedUserRepository(AppDbContext context) : base(context) + { + } +} diff --git a/Infrastructure/Persistence/Repositories/BannedUserRepository/WriteBannedUserRepository.cs b/Infrastructure/Persistence/Repositories/BannedUserRepository/WriteBannedUserRepository.cs new file mode 100644 index 0000000..49118c2 --- /dev/null +++ b/Infrastructure/Persistence/Repositories/BannedUserRepository/WriteBannedUserRepository.cs @@ -0,0 +1,13 @@ +using Application.Repositories.BannedUserRepository; +using Domain.Models; +using Persistence.Context; +using Persistence.Repositories.Repository; + +namespace Persistence.Repositories.BannedUserRepository; + +public class WriteBannedUserRepository : WriteRepository, IWriteBannedUserRepository +{ + public WriteBannedUserRepository(AppDbContext context) : base(context) + { + } +} diff --git a/Infrastructure/Persistence/Repositories/UnitOfWork.cs b/Infrastructure/Persistence/Repositories/UnitOfWork.cs index 9fc71f4..e4a137c 100644 --- a/Infrastructure/Persistence/Repositories/UnitOfWork.cs +++ b/Infrastructure/Persistence/Repositories/UnitOfWork.cs @@ -1,4 +1,5 @@ using Application.Repositories; +using Application.Repositories.BannedUserRepository; using Application.Repositories.BookRepository; using Application.Repositories.CommentRepository; using Application.Repositories.CourseRepository; @@ -8,7 +9,7 @@ namespace Persistence.Repositories; public class UnitOfWork : IUnitOfWork { - public UnitOfWork(IReadBookRepository readBookRepository, IWriteBookRepository writeBookRepository, IReadUserRepository readUserRepository, IWriteUserRepository writeUserRepository, IReadCourseRepository readCourseRepository, IWriteCourseRepository writeCourseRepository, IReadCommentRepository readCommentRepository, IWriteCommentRepository writeCommentRepository) + public UnitOfWork(IReadBookRepository readBookRepository, IWriteBookRepository writeBookRepository, IReadUserRepository readUserRepository, IWriteUserRepository writeUserRepository, IReadCourseRepository readCourseRepository, IWriteCourseRepository writeCourseRepository, IReadCommentRepository readCommentRepository, IWriteCommentRepository writeCommentRepository, IReadBannedUserRepository readBannedUserRepository, IWriteBannedUserRepository writeBannedUserRepository) { ReadBookRepository = readBookRepository; WriteBookRepository = writeBookRepository; @@ -18,6 +19,8 @@ public UnitOfWork(IReadBookRepository readBookRepository, IWriteBookRepository w WriteCourseRepository = writeCourseRepository; ReadCommentRepository = readCommentRepository; WriteCommentRepository = writeCommentRepository; + ReadBannedUserRepository = readBannedUserRepository; + WriteBannedUserRepository = writeBannedUserRepository; } public IReadBookRepository ReadBookRepository { get; } @@ -28,4 +31,6 @@ public UnitOfWork(IReadBookRepository readBookRepository, IWriteBookRepository w public IWriteCourseRepository WriteCourseRepository { get; } public IReadCommentRepository ReadCommentRepository { get; } public IWriteCommentRepository WriteCommentRepository { get; } + public IReadBannedUserRepository ReadBannedUserRepository { get; } + public IWriteBannedUserRepository WriteBannedUserRepository { get; } }