diff --git a/Netina.Api/AppSettings/appsettings.DevelopmentHamyan.json b/Netina.Api/AppSettings/appsettings.DevelopmentHamyan.json index af5a4b3..9a239fd 100644 --- a/Netina.Api/AppSettings/appsettings.DevelopmentHamyan.json +++ b/Netina.Api/AppSettings/appsettings.DevelopmentHamyan.json @@ -17,7 +17,7 @@ "TaxesFee": 9 }, "SiteSettings": { - "BaseUrl": "http://localhost:32770", + "BaseUrl": "http://192.168.1.12:32770", "WebSiteUrl": "https://hamyanedalat.com", "AdminPanelBaseUrl": "https://admin.hamyanedalat.com", "StorageBaseUrl": "https://storage.hamyanedalat.com", diff --git a/Netina.Api/Controller/BlogCategoryController.cs b/Netina.Api/Controller/BlogCategoryController.cs index 3c73b35..c6ec9d8 100644 --- a/Netina.Api/Controller/BlogCategoryController.cs +++ b/Netina.Api/Controller/BlogCategoryController.cs @@ -1,8 +1,4 @@ -using Netina.Common.Models.Exception; -using Netina.Domain.Dtos.SmallDtos; -using Netina.Domain.Entities.Blogs; -using Netina.Domain.Models.Claims; -using Netina.Repository.Repositories.Base.Contracts; +using Netina.Domain.Entities.Blogs; namespace Netina.Api.Controller; @@ -41,7 +37,7 @@ public class BlogCategoryController : ICarterModule if (page != null) { return TypedResults.Ok(await repositoryWrapper.SetRepository().TableNoTracking - .OrderByDescending(b => b.CreatedAt).Skip(page.Value * 10).Take(10) + .OrderByDescending(b => b.Name).Skip(page.Value * 10).Take(10) .Select(BlogCategoryMapper.ProjectToSDto) .ToListAsync(cancellationToken)); } @@ -49,7 +45,7 @@ public class BlogCategoryController : ICarterModule { return TypedResults.Ok(await repositoryWrapper.SetRepository().TableNoTracking - .OrderByDescending(b => b.CreatedAt) + .OrderByDescending(b => b.Name) .Select(BlogCategoryMapper.ProjectToSDto) .ToListAsync(cancellationToken)); } diff --git a/Netina.Api/Controller/BlogController.cs b/Netina.Api/Controller/BlogController.cs index 131d53a..deb3dc2 100644 --- a/Netina.Api/Controller/BlogController.cs +++ b/Netina.Api/Controller/BlogController.cs @@ -23,24 +23,27 @@ public class BlogController : ICarterModule .HasApiVersion(1.0); group.MapPost("", Post) - .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) + .RequireAuthorization(builder => + builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser() + .RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) .HasApiVersion(1.0); group.MapPut("", Put) - .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) + .RequireAuthorization(builder => + builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser() + .RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) .HasApiVersion(1.0); group.MapDelete("{id}", Delete) - .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) + .RequireAuthorization(builder => + builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser() + .RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) .HasApiVersion(1.0); } // GET:Get All Entity - public async Task GetAllAsync([FromQuery] int page, IRepositoryWrapper repositoryWrapper, CancellationToken cancellationToken) - => TypedResults.Ok(await repositoryWrapper.SetRepository().TableNoTracking - .OrderByDescending(b=>b.CreatedAt) - .Skip(page*10).Take(10) - .Select(BlogMapper.ProjectToSDto).ToListAsync(cancellationToken)); + public async Task GetAllAsync([FromQuery] int page, [FromQuery] Guid? blogCategoryId, IMediator mediator, CancellationToken cancellationToken) + => TypedResults.Ok(await mediator.Send(new GetBlogsQuery(page, CategoryId: blogCategoryId), cancellationToken)); // GET:Get An Entity By Id public async Task GetAsync(Guid id, IRepositoryWrapper repositoryWrapper, CancellationToken cancellationToken) diff --git a/Netina.Api/Controller/SeedController.cs b/Netina.Api/Controller/SeedController.cs index 2f247f0..1a927f6 100644 --- a/Netina.Api/Controller/SeedController.cs +++ b/Netina.Api/Controller/SeedController.cs @@ -105,7 +105,15 @@ public class SeedController : ICarterModule throw new AppException("Key is not valid", ApiResultStatusCode.UnAuthorized); foreach (var seedBlogRequestDto in request) { - var ent = Blog.Create(seedBlogRequestDto.Title, seedBlogRequestDto.Content, seedBlogRequestDto.Tags, seedBlogRequestDto.ReadingTime, + if (seedBlogRequestDto.CategoryId == default) + { + var noCategory = await repositoryWrapper.SetRepository() + .TableNoTracking + .FirstOrDefaultAsync(bc => bc.Name == "دسته بندی نشده", cancellationToken); + if(noCategory != null) + seedBlogRequestDto.CategoryId = noCategory.Id; + } + var ent = Blog.Create(seedBlogRequestDto.Title,seedBlogRequestDto.Slug, seedBlogRequestDto.Content, seedBlogRequestDto.Tags, seedBlogRequestDto.ReadingTime, seedBlogRequestDto.Summery, seedBlogRequestDto.IsSuggested, seedBlogRequestDto.CategoryId); foreach (var storageFileSDto in seedBlogRequestDto.Files) diff --git a/Netina.Api/Netina.Api.csproj b/Netina.Api/Netina.Api.csproj index 4cd5895..fad8fbd 100644 --- a/Netina.Api/Netina.Api.csproj +++ b/Netina.Api/Netina.Api.csproj @@ -11,7 +11,7 @@ - + @@ -19,25 +19,25 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + - + - + @@ -52,7 +52,7 @@ - + diff --git a/Netina.Api/Program.cs b/Netina.Api/Program.cs index 800275b..b19f22a 100644 --- a/Netina.Api/Program.cs +++ b/Netina.Api/Program.cs @@ -17,7 +17,6 @@ var siteSetting = configuration.GetSection(nameof(SiteSettings)).Get(configuration.GetSection(nameof(SiteSettings))); - // Add services to the container. builder.Services.AddControllers(); diff --git a/Netina.Api/WebFramework/Configurations/ServiceExtensions.cs b/Netina.Api/WebFramework/Configurations/ServiceExtensions.cs index 68f8a24..3e0a476 100644 --- a/Netina.Api/WebFramework/Configurations/ServiceExtensions.cs +++ b/Netina.Api/WebFramework/Configurations/ServiceExtensions.cs @@ -1,14 +1,29 @@ -using Marten; -using Netina.Domain.Entities.Users; -using Netina.Domain.Models.Settings; -using Netina.Repository.Extensions; -using Netina.Repository.Models; +using Autofac.Extras.Quartz; +using Marten; +using System.Collections.Specialized; +using Netina.Core.QuartzServices; using Weasel.Core; namespace Netina.Api.WebFramework.Configurations; public static class ServiceExtensions { + public static void AddSchedulerToAutoFac(this ContainerBuilder builder) + { + // configure and register Quartz + var schedulerConfig = new NameValueCollection { + {"quartz.threadPool.threadCount", "3"}, + {"quartz.scheduler.threadName", "BrizCo_Scheduler"} + }; + + builder.RegisterModule(new QuartzAutofacFactoryModule + { + ConfigurationProvider = c => schedulerConfig + }); + + builder.RegisterModule(new QuartzAutofacJobsModule(typeof(JobScheduler).Assembly)); + builder.RegisterType().AsSelf(); + } public static void AddIpRateLimit(this IServiceCollection services, IConfigurationRoot configuration) { diff --git a/Netina.Common/Netina.Common.csproj b/Netina.Common/Netina.Common.csproj index dbe9777..b49a057 100644 --- a/Netina.Common/Netina.Common.csproj +++ b/Netina.Common/Netina.Common.csproj @@ -11,7 +11,7 @@ - +