From ae9b65adbdb2a3e9dc159d125642702686ccd7c6 Mon Sep 17 00:00:00 2001 From: "Amir.H Khademi" Date: Fri, 9 Aug 2024 21:55:16 +0330 Subject: [PATCH] fix files --- .version | 2 +- Netina.Api/Controllers/BlogController.cs | 4 +- Netina.Api/Controllers/SeedController.cs | 10 +- Netina.Api/Netina.Api.csproj | 6 +- Netina.Api/Services/CurrentUserService.cs | 25 +-- .../Bases/ApiResultFilterAttribute.cs | 5 +- .../WebFramework/Bases/CrudController.cs | 38 +--- .../Configurations/LoggerConfig.cs | 4 +- .../MiddleWares/ExceptionHandlerMiddleware.cs | 37 ++-- .../MiddleWares/PerformanceMiddleware.cs | 21 +-- .../Swagger/SwaggerConfiguration.cs | 16 +- Netina.Common/Extensions/StringExtensions.cs | 1 - .../Models/Entity/PageClassDisplay.cs | 15 +- Netina.Core/BaseServices/AccountService.cs | 83 +++------ Netina.Core/BaseServices/DashboardService.cs | 31 ++- Netina.Core/BaseServices/JwtService.cs | 25 +-- Netina.Core/BaseServices/PageService.cs | 31 ++- Netina.Core/BaseServices/SettingService.cs | 15 +- Netina.Core/BaseServices/SiteMapService.cs | 52 +++--- .../GetEmallsProductsQueryHandler.cs | 22 +-- .../GetThumbSearchProductsQueryHandler.cs | 13 +- .../GetTorobProductsQueryHandler.cs | 20 +- .../GetWebSiteNavBarCommandHandler.cs | 23 +-- .../CalculateOrderDiscountCommandHandler.cs | 25 +-- .../CalculateProductDiscountCommandHandler.cs | 23 +-- ...CheckUserDiscountFirstUseCommandHandler.cs | 20 +- .../CreateMarketerDiscountCommandHandler.cs | 38 ++-- .../GetMarketerProfileQueryHandler.cs | 32 ++-- .../SignUpMarketerCommandHandler.cs | 39 ++-- .../AddToOrderBagCommandHandler.cs | 33 ++-- .../CheckOrderBagCommandHandler.cs | 15 +- .../GetUserOrderBagQueryHandler.cs | 32 ++-- .../RemoveFromOrderBagCommandHandler.cs | 30 ++- .../SubmitDiscountActionCommandHandler.cs | 23 +-- .../SubmitOrderBagCommandHandler.cs | 37 ++-- .../SubmitOrderDeliveryCommandHandler.cs | 23 +-- .../ConfirmReviewCommandHandler.cs | 15 +- Netina.Core/EntityServices/UserService.cs | 176 ++++++++---------- Netina.Core/Models/Api/ApiResult.cs | 26 +-- Netina.Core/QuartzServices/JobScheduler.cs | 17 +- .../QuartzServices/SiteMapScheduledJob.cs | 16 +- .../Dtos/SmallDtos/StorageFileSDto.cs | 4 +- .../Entities/Blogs/Blog.Aggregate.cs | 4 +- Netina.Domain/Entities/Brands/Brand.cs | 4 +- .../ProductCategory.Aggregate.cs | 4 +- .../Entities/Products/Product.Aggregate.cs | 5 +- .../MartenEntities/Settings/NavMenuSetting.cs | 6 +- .../RestServices/IKaveNegarRestApi.cs | 4 +- .../RestServices/IRestApiWrapper.cs | 3 +- .../Services/DistrictService.cs | 4 +- .../Services/ExternalFilesService.cs | 18 +- .../Services/Scrapers/DigikalaScraper.cs | 40 ++-- Netina.Infrastructure/Services/SmsService.cs | 44 ++--- .../Services/StorageService.cs | 20 +- .../Services/UploadFileService.cs | 27 +-- .../Services/ZarinpalService.cs | 41 ++-- .../Behaviors/ValidationBehavior.cs | 12 +- .../DbContextOptionCustomExtensionsInfo.cs | 10 +- .../Extensions/ModelBuilderExtensions.cs | 4 +- .../CreateOrUpdatePaymentCommandHandler.cs | 28 ++- .../Accounting/GetPaymentQueryHandler.cs | 16 +- .../Accounting/GetPaymentsQueryHandler.cs | 14 +- .../Addresses/CreateAddressCommandHandler.cs | 19 +- .../Addresses/DeleteAddressCommandHandler.cs | 19 +- .../Addresses/GetUserAddressesQueryHandler.cs | 21 +-- .../Handlers/Blogs/GetBlogsQueryHandler.cs | 14 +- .../Brands/DeleteBrandCommandHandler.cs | 17 +- .../Handlers/Brands/GetBrandsQueryHandler.cs | 22 +-- .../Discounts/CreateDiscountCommandHandler.cs | 4 +- .../Discounts/DeleteDiscountCommandHandler.cs | 19 +- .../Discounts/GetDiscountQueryHandler.cs | 15 +- .../Discounts/GetDiscountsQueryHandler.cs | 15 +- .../Discounts/UpdateDiscountCommandHandler.cs | 4 +- .../Marketers/GetMarketersQueryHandler.cs | 15 +- .../CreateNewsletterMemberCommandHandler.cs | 22 +-- .../GetNewsletterMembersQueryHandler.cs | 15 +- .../CreateNewsletterMemberCommandValidator.cs | 1 - .../Orders/CreateBaseOrderCommandHandler.cs | 22 +-- .../Orders/DeleteOrderCommandHandler.cs | 17 +- .../Orders/GetOrderLDtoQueryHandler.cs | 14 +- .../Handlers/Orders/GetOrderQueryHandler.cs | 17 +- .../Handlers/Orders/GetOrdersQueryHandler.cs | 14 +- .../Orders/GetUserOrdersQueryHandler.cs | 22 +-- .../GetProductCategoriesQueryHandler.cs | 4 +- .../GetProductCategoryChildrenQueryHandler.cs | 4 +- .../GetProductCategoryQueryHandler.cs | 4 +- .../ChangeProductCostCommandHandler.cs | 4 +- .../ChangeProductDisplayedCommandHandler.cs | 4 +- .../Products/DeleteProductCommandHandler.cs | 4 +- .../Products/GetProductsQueryHandler.cs | 4 +- .../Reviews/CreateReviewCommandHandler.cs | 22 +-- .../Reviews/DeleteReviewCommandHandler.cs | 19 +- .../Handlers/Reviews/GetReviewQueryHandler.cs | 14 +- .../Reviews/GetReviewsQueryHandler.cs | 15 +- .../CreateShippingCommandHandler.cs | 13 +- .../DeleteShippingCommandHandler.cs | 18 +- .../Warehouses/GetShippingQueryHandler.cs | 14 +- .../Warehouses/GetShippingsQueryHandler.cs | 14 +- .../UpdateShippingCommandHandler.cs | 18 +- .../Models/ApplicationContext.cs | 18 +- .../Repositories/Base/BaseRepository.cs | 23 +-- .../Base/Contracts/IReadRepository.cs | 4 +- .../Base/Contracts/IRepository.cs | 4 +- .../Repositories/Base/ReadRepository.cs | 13 +- .../Repositories/Base/Repository.cs | 4 +- .../Repositories/Base/RepositoryWrapper.cs | 27 +-- .../Repositories/Base/WriteRepository.cs | 21 +-- .../Repositories/UnitOfWork/UnitOfWork.cs | 16 +- .../Program.cs | 6 - 109 files changed, 716 insertions(+), 1354 deletions(-) diff --git a/.version b/.version index 99a3501..c8d091a 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -1.0.9.11 \ No newline at end of file +1.2.10.12 \ No newline at end of file diff --git a/Netina.Api/Controllers/BlogController.cs b/Netina.Api/Controllers/BlogController.cs index 2b7bfe9..810ee12 100644 --- a/Netina.Api/Controllers/BlogController.cs +++ b/Netina.Api/Controllers/BlogController.cs @@ -1,7 +1,5 @@ -using Marten.Events; -using Microsoft.Extensions.Options; +using Microsoft.Extensions.Options; using Netina.Domain.Entities.Blogs; -using Netina.Domain.Entities.Products; using System.Web; namespace Netina.Api.Controllers; diff --git a/Netina.Api/Controllers/SeedController.cs b/Netina.Api/Controllers/SeedController.cs index 567361d..b614ab9 100644 --- a/Netina.Api/Controllers/SeedController.cs +++ b/Netina.Api/Controllers/SeedController.cs @@ -2,17 +2,11 @@ using Netina.Domain.Entities.Blogs; namespace Netina.Api.Controllers; -public class SeedController : ICarterModule +public class SeedController(IWebHostEnvironment environment) : ICarterModule { - private readonly IWebHostEnvironment _environment; - - public SeedController(IWebHostEnvironment environment) - { - _environment = environment; - } public void AddRoutes(IEndpointRouteBuilder app) { - if (_environment.IsDevelopment()) + if (environment.IsDevelopment()) { var group = app.NewVersionedApi("Seed") .MapGroup("api/seed"); diff --git a/Netina.Api/Netina.Api.csproj b/Netina.Api/Netina.Api.csproj index fcdf1e1..4b4f600 100644 --- a/Netina.Api/Netina.Api.csproj +++ b/Netina.Api/Netina.Api.csproj @@ -6,8 +6,8 @@ enable true Linux - 1.0.9.11 - 1.0.9.11 + 1.2.10.12 + 1.2.10.12 @@ -15,7 +15,7 @@ - + diff --git a/Netina.Api/Services/CurrentUserService.cs b/Netina.Api/Services/CurrentUserService.cs index 02033b6..36739cd 100644 --- a/Netina.Api/Services/CurrentUserService.cs +++ b/Netina.Api/Services/CurrentUserService.cs @@ -3,24 +3,17 @@ using Netina.Repository.Abstracts; namespace Netina.Api.Services; -public class CurrentUserService : ICurrentUserService +public class CurrentUserService(IHttpContextAccessor httpContextAccessor) : ICurrentUserService { - private readonly IHttpContextAccessor _httpContextAccessor; - - public CurrentUserService(IHttpContextAccessor httpContextAccessor) - { - _httpContextAccessor = httpContextAccessor; - } - - public string? UserId => _httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.NameIdentifier); - public string? RoleName => _httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.Role); - public string? UserName => _httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.Name); - public string? DeviceId => GetDeviceId(_httpContextAccessor.HttpContext); + public string? UserId => httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.NameIdentifier); + public string? RoleName => httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.Role); + public string? UserName => httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.Name); + public string? DeviceId => GetDeviceId(httpContextAccessor.HttpContext); public bool IsAuthorized => GetAuthorized(); public JwtSecurityToken? JwtToken => GetJwtToken(); private JwtSecurityToken? GetJwtToken() { - var stream = _httpContextAccessor.HttpContext?.Request.Headers.Authorization.FirstOrDefault(); + var stream = httpContextAccessor.HttpContext?.Request.Headers.Authorization.FirstOrDefault(); if (stream == null) return null; var handler = new JwtSecurityTokenHandler(); @@ -28,7 +21,7 @@ public class CurrentUserService : ICurrentUserService return jsonToken as JwtSecurityToken; } - public List? Permissions => _httpContextAccessor.HttpContext?.User?.FindAll("Permission")?.Select(c => c.Value)?.ToList(); + public List? Permissions => httpContextAccessor.HttpContext?.User?.FindAll("Permission")?.Select(c => c.Value)?.ToList(); private string? GetDeviceId(HttpContext? context) { @@ -52,9 +45,9 @@ public class CurrentUserService : ICurrentUserService private bool GetAuthorized() { - if (_httpContextAccessor.HttpContext?.User.Identity == null) + if (httpContextAccessor.HttpContext?.User.Identity == null) return false; - return _httpContextAccessor.HttpContext.User.Identity.IsAuthenticated; + return httpContextAccessor.HttpContext.User.Identity.IsAuthenticated; } diff --git a/Netina.Api/WebFramework/Bases/ApiResultFilterAttribute.cs b/Netina.Api/WebFramework/Bases/ApiResultFilterAttribute.cs index 740fb9f..4314c3d 100644 --- a/Netina.Api/WebFramework/Bases/ApiResultFilterAttribute.cs +++ b/Netina.Api/WebFramework/Bases/ApiResultFilterAttribute.cs @@ -1,7 +1,4 @@ -using Netina.Common.Models.Api; -using Netina.Core.Models.Api; - -namespace Netina.Api.WebFramework.Bases; +namespace Netina.Api.WebFramework.Bases; public class ApiResultFactory { diff --git a/Netina.Api/WebFramework/Bases/CrudController.cs b/Netina.Api/WebFramework/Bases/CrudController.cs index 5ee8f2a..83987c2 100644 --- a/Netina.Api/WebFramework/Bases/CrudController.cs +++ b/Netina.Api/WebFramework/Bases/CrudController.cs @@ -1,23 +1,13 @@ -using Netina.Common.Models.Entity; -using Netina.Common.Models.Exception; -using Netina.Common.Models.Mapper; -using Netina.Repository.Repositories.Base.Contracts; - -namespace Netina.Api.WebFramework.Bases; +namespace Netina.Api.WebFramework.Bases; -public class CrudEndpoint where TEntity : ApiEntity, new() +public class CrudEndpoint( + string endpointName) + where TEntity : ApiEntity, new() { - private readonly string _endpointName; - - public CrudEndpoint(string endpointName) - { - _endpointName = endpointName; - } - public virtual void AddRoutes(IEndpointRouteBuilder app) { - var group = app.NewVersionedApi(_endpointName).MapGroup($"api/{_endpointName}"); + var group = app.NewVersionedApi(endpointName).MapGroup($"api/{endpointName}"); group.MapGet("", GetAllAsync) .WithDisplayName("GetAll") @@ -83,16 +73,11 @@ public class BaseController : ControllerBase } [Authorize(AuthenticationSchemes = "Bearer")] -public class CrudController : BaseController +public class CrudController(IRepositoryWrapper repositoryWrapper) : BaseController where TDto : BaseDto, new() where TEntity : ApiEntity, new() { - protected readonly IRepositoryWrapper _repositoryWrapper; - - public CrudController(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } + protected readonly IRepositoryWrapper _repositoryWrapper = repositoryWrapper; // GET:Get All Entity [HttpGet] @@ -168,15 +153,10 @@ public class CrudController : BaseController } [Authorize(AuthenticationSchemes = "Bearer")] -public class CrudController : BaseController +public class CrudController(IRepositoryWrapper repositoryWrapper) : BaseController where TEntity : ApiEntity, new() { - protected readonly IRepositoryWrapper _repositoryWrapper; - - public CrudController(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } + protected readonly IRepositoryWrapper _repositoryWrapper = repositoryWrapper; // GET:Get All Entity [HttpGet] diff --git a/Netina.Api/WebFramework/Configurations/LoggerConfig.cs b/Netina.Api/WebFramework/Configurations/LoggerConfig.cs index 57ba7f6..9dcea5d 100644 --- a/Netina.Api/WebFramework/Configurations/LoggerConfig.cs +++ b/Netina.Api/WebFramework/Configurations/LoggerConfig.cs @@ -1,6 +1,4 @@ -using Netina.Infrastructure.Models; - -namespace Netina.Api.WebFramework.Configurations; +namespace Netina.Api.WebFramework.Configurations; public static class LoggerConfig { diff --git a/Netina.Api/WebFramework/MiddleWares/ExceptionHandlerMiddleware.cs b/Netina.Api/WebFramework/MiddleWares/ExceptionHandlerMiddleware.cs index 0f52832..9138cec 100644 --- a/Netina.Api/WebFramework/MiddleWares/ExceptionHandlerMiddleware.cs +++ b/Netina.Api/WebFramework/MiddleWares/ExceptionHandlerMiddleware.cs @@ -10,22 +10,11 @@ public static class ExceptionHandlerMiddlewareExtensions } } -public class ExceptionHandlerMiddleware +public class ExceptionHandlerMiddleware( + RequestDelegate next, + IWebHostEnvironment env, + ILogger logger) { - private readonly IWebHostEnvironment _env; - private readonly ILogger _logger; - private readonly RequestDelegate _next; - - public ExceptionHandlerMiddleware( - RequestDelegate next, - IWebHostEnvironment env, - ILogger logger) - { - _next = next; - _env = env; - _logger = logger; - } - public async Task Invoke(HttpContext context) { string message = null; @@ -34,17 +23,17 @@ public class ExceptionHandlerMiddleware try { - await _next(context); + await next(context); } catch (BaseApiException exception) { - _logger.LogError(exception, exception.Message); + logger.LogError(exception, exception.Message); httpStatusCode = exception.ApiStatusCode == ApiResultStatusCode.NotFound ? HttpStatusCode.NotFound : exception.ApiStatusCode == ApiResultStatusCode.BadRequest ? HttpStatusCode.BadRequest : exception.HttpStatusCode; apiStatusCode = exception.ApiStatusCode; - if (_env.IsDevelopment()) + if (env.IsDevelopment()) { var dic = new Dictionary { @@ -82,19 +71,19 @@ public class ExceptionHandlerMiddleware } catch (SecurityTokenExpiredException exception) { - _logger.LogError(exception, exception.Message); + logger.LogError(exception, exception.Message); SetUnAuthorizeResponse(exception); await WriteToResponseAsync(); } catch (UnauthorizedAccessException exception) { - _logger.LogError(exception, exception.Message); + logger.LogError(exception, exception.Message); SetUnAuthorizeResponse(exception); await WriteToResponseAsync(); } catch (ApiException apiException) { - _logger.LogError(apiException, apiException.Message); + logger.LogError(apiException, apiException.Message); httpStatusCode = HttpStatusCode.InternalServerError; apiStatusCode = ApiResultStatusCode.RefitError; @@ -105,9 +94,9 @@ public class ExceptionHandlerMiddleware } catch (Exception exception) { - _logger.LogError(exception, exception.Message); + logger.LogError(exception, exception.Message); - if (_env.IsDevelopment()) + if (env.IsDevelopment()) { if (exception?.InnerException?.Message != null) { @@ -185,7 +174,7 @@ public class ExceptionHandlerMiddleware httpStatusCode = HttpStatusCode.Unauthorized; apiStatusCode = ApiResultStatusCode.UnAuthorized; - if (_env.IsDevelopment()) + if (env.IsDevelopment()) { var dic = new Dictionary { diff --git a/Netina.Api/WebFramework/MiddleWares/PerformanceMiddleware.cs b/Netina.Api/WebFramework/MiddleWares/PerformanceMiddleware.cs index 1c60ee2..deba7c7 100644 --- a/Netina.Api/WebFramework/MiddleWares/PerformanceMiddleware.cs +++ b/Netina.Api/WebFramework/MiddleWares/PerformanceMiddleware.cs @@ -8,28 +8,19 @@ public static class PerformanceMiddlewareExtensions } } -public class PerformanceMiddleware +public class PerformanceMiddleware( + RequestDelegate next, + ILogger logger) { - private readonly ILogger _logger; - private readonly RequestDelegate _next; - private readonly Stopwatch _timer; - - public PerformanceMiddleware( - RequestDelegate next, - ILogger logger) - { - _next = next; - _logger = logger; - _timer = new Stopwatch(); - } + private readonly Stopwatch _timer = new(); public async System.Threading.Tasks.Task Invoke(HttpContext context) { _timer.Start(); - await _next(context); + await next(context); _timer.Stop(); var elapsedMilliseconds = _timer.ElapsedMilliseconds; - _logger.LogWarning($"REQUEST TIMER : {elapsedMilliseconds}"); + logger.LogWarning($"REQUEST TIMER : {elapsedMilliseconds}"); } } \ No newline at end of file diff --git a/Netina.Api/WebFramework/Swagger/SwaggerConfiguration.cs b/Netina.Api/WebFramework/Swagger/SwaggerConfiguration.cs index 564e0bc..fee719a 100644 --- a/Netina.Api/WebFramework/Swagger/SwaggerConfiguration.cs +++ b/Netina.Api/WebFramework/Swagger/SwaggerConfiguration.cs @@ -1,6 +1,5 @@ using Microsoft.AspNetCore.Mvc.Controllers; using Microsoft.OpenApi.Models; -using Netina.Common.Extensions; using Pluralize.NET; using Swashbuckle.AspNetCore.SwaggerGen; using Swashbuckle.AspNetCore.SwaggerUI; @@ -139,17 +138,12 @@ public class SetVersionInPaths : IDocumentFilter } } -public class UnauthorizedResponsesOperationFilter : IOperationFilter +public class UnauthorizedResponsesOperationFilter( + bool includeUnauthorizedAndForbiddenResponses, + string schemeName = "Bearer") + : IOperationFilter { - private readonly bool includeUnauthorizedAndForbiddenResponses; - private readonly string schemeName; - - public UnauthorizedResponsesOperationFilter(bool includeUnauthorizedAndForbiddenResponses, - string schemeName = "Bearer") - { - this.includeUnauthorizedAndForbiddenResponses = includeUnauthorizedAndForbiddenResponses; - this.schemeName = schemeName; - } + private readonly string schemeName = schemeName; public void Apply(OpenApiOperation operation, OperationFilterContext context) { diff --git a/Netina.Common/Extensions/StringExtensions.cs b/Netina.Common/Extensions/StringExtensions.cs index 95d59a7..a8f7577 100644 --- a/Netina.Common/Extensions/StringExtensions.cs +++ b/Netina.Common/Extensions/StringExtensions.cs @@ -1,5 +1,4 @@ using System.Web; -using System.Xml.Linq; namespace Netina.Common.Extensions { diff --git a/Netina.Common/Models/Entity/PageClassDisplay.cs b/Netina.Common/Models/Entity/PageClassDisplay.cs index ea80a2e..450ea17 100644 --- a/Netina.Common/Models/Entity/PageClassDisplay.cs +++ b/Netina.Common/Models/Entity/PageClassDisplay.cs @@ -1,25 +1,16 @@ namespace Netina.Common.Models.Entity { [AttributeUsage(AttributeTargets.Class)] - public class PageClassDisplay : Attribute + public class PageClassDisplay(string name, string description) : Attribute { - private readonly string _description; - private readonly string _name; - - public PageClassDisplay(string name, string description) - { - _name = name; - _description = description; - } - public string GetName() { - return _name; + return name; } public string GetDescription() { - return _description; + return description; } } } \ No newline at end of file diff --git a/Netina.Core/BaseServices/AccountService.cs b/Netina.Core/BaseServices/AccountService.cs index 3ac0f22..8be923e 100644 --- a/Netina.Core/BaseServices/AccountService.cs +++ b/Netina.Core/BaseServices/AccountService.cs @@ -1,53 +1,32 @@ namespace Netina.Core.BaseServices; -public class AccountService : IAccountService +public class AccountService( + UserManager userManager, + SignInManager userSignInManager, + IJwtService jwtService, + ICurrentUserService currentUserService, + IRepositoryWrapper repositoryWrapper, + ISmsService smsService, + IUserService managerUserService) + : IAccountService { - - private readonly UserManager _userManager; - private readonly SignInManager _userSignInManager; - private readonly IJwtService _jwtService; - private readonly ICurrentUserService _currentUserService; - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly ISmsService _smsService; - private readonly IUserService _managerUserService; - - public AccountService( - UserManager userManager, - SignInManager userSignInManager, - IJwtService jwtService, - ICurrentUserService currentUserService, - IRepositoryWrapper repositoryWrapper, - ISmsService smsService, - IUserService managerUserService) - { - _userManager = userManager; - _userSignInManager = userSignInManager; - _jwtService = jwtService; - _currentUserService = currentUserService; - _repositoryWrapper = repositoryWrapper; - _smsService = smsService; - _managerUserService = managerUserService; - } - - - public async Task ForgetPasswordAsync(string phoneNumber) { - var user = await _userManager.FindByNameAsync(phoneNumber); + var user = await userManager.FindByNameAsync(phoneNumber); if (user != null) { var rand = new Random(DateTime.Now.Millisecond); var newPass = rand.Next(1000000, 9000000).ToString(); if (!user.PhoneNumberConfirmed) throw new AppException("شماره تلفن شما تایید نشده است و قابلیت استفاده از فراموشی رمز عبور را ندارید"); - var rp = await _userManager.RemovePasswordAsync(user); + var rp = await userManager.RemovePasswordAsync(user); if (!rp.Succeeded) throw new AppException(string.Join('-', rp.Errors.Select(e => e.Description))); - var ap = await _userManager.AddPasswordAsync(user, newPass); + var ap = await userManager.AddPasswordAsync(user, newPass); if (!ap.Succeeded) throw new AppException(string.Join('-', ap.Errors.Select(e => e.Description))); - await _smsService.SendForgerPasswordAsync(user.PhoneNumber, newPass); + await smsService.SendForgerPasswordAsync(user.PhoneNumber, newPass); return true; } @@ -56,7 +35,7 @@ public class AccountService : IAccountService public async Task CheckMemberShipAsync(string phoneNumber) { - var user = await _userManager.FindByNameAsync(phoneNumber); + var user = await userManager.FindByNameAsync(phoneNumber); if (user == null) return false; return true; @@ -67,23 +46,23 @@ public class AccountService : IAccountService var newPhoneNumber = StringExtensions.CheckPhoneNumber(phoneNumber); if (!PhoneNumberExtensions.CheckPhoneNumber(newPhoneNumber)) throw new AppException("شماره تلفن ارسالی اشتباه است"); - var user = await _userManager.FindByNameAsync(newPhoneNumber); + var user = await userManager.FindByNameAsync(newPhoneNumber); if (user == null) - user = await _managerUserService.CreateUserAsync(phoneNumber); + user = await managerUserService.CreateUserAsync(phoneNumber); - var token = await _userManager.GenerateTwoFactorTokenAsync(user, "Phone"); - await _smsService.SendVerifyCodeAsync(newPhoneNumber, token); + var token = await userManager.GenerateTwoFactorTokenAsync(user, "Phone"); + await smsService.SendVerifyCodeAsync(newPhoneNumber, token); return new VerifyCodeResponseDto { SignUpStatus = SignUpStatus.StartSignOn }; } public async Task> LoginWithPasswordAsync(string userName, string password, CancellationToken cancellationToken) { - var result = await _userSignInManager.PasswordSignInAsync(userName, password, false, false); + var result = await userSignInManager.PasswordSignInAsync(userName, password, false, false); if (!result.Succeeded) throw new AppException("رمز عبور یا نام کاربری اشتباه است"); - var admin = await _userManager.FindByNameAsync(userName); + var admin = await userManager.FindByNameAsync(userName); if (admin == null) throw new AppException("نام کاربری یا رمز عبور اشتباه است"); return await CompleteLogin(admin, cancellationToken); @@ -91,11 +70,11 @@ public class AccountService : IAccountService public async Task> LoginWithVerifyCodeAsync(string userName, string verifyCode, CancellationToken cancellationToken) { - var user = await _userManager.FindByNameAsync(userName); + var user = await userManager.FindByNameAsync(userName); if (user == null) throw new AppException("نام کاربری یا کد ارسالی اشتباه است", ApiResultStatusCode.NotFound); - var verfiyResult = await _userManager.VerifyTwoFactorTokenAsync(user, "Phone", verifyCode); + var verfiyResult = await userManager.VerifyTwoFactorTokenAsync(user, "Phone", verifyCode); if (verifyCode == "859585") verfiyResult = true; if (!verfiyResult) @@ -104,7 +83,7 @@ public class AccountService : IAccountService { user.PhoneNumberConfirmed = true; user.SignUpStatus = SignUpStatus.PhoneNumberVerified; - var result = await _userManager.UpdateAsync(user); + var result = await userManager.UpdateAsync(user); if (!result.Succeeded) throw new AppException(string.Join('|', result.Errors)); } @@ -113,9 +92,9 @@ public class AccountService : IAccountService public async Task> CompleteSignUpAsync(SignUpRequestDto requestDto, CancellationToken cancellationToken) { - if (_currentUserService.UserId == null) + if (currentUserService.UserId == null) throw new AppException("User Id is null"); - var user = await _userManager.FindByIdAsync(_currentUserService.UserId); + var user = await userManager.FindByIdAsync(currentUserService.UserId); if (user == null) throw new AppException("User not found", ApiResultStatusCode.NotFound); if (user.SignUpStatus == SignUpStatus.SignUpCompleted) @@ -132,19 +111,19 @@ public class AccountService : IAccountService user.FirstName = requestDto.FirstName; user.LastName = requestDto.LastName; user.SignUpStatus = SignUpStatus.SignUpCompleted; - var result = await _userManager.UpdateAsync(user); + var result = await userManager.UpdateAsync(user); if (!result.Succeeded) throw new AppException(string.Join('|', result.Errors.Select(e => e.Description))); - var roleResult = await _userManager.AddToRoleAsync(user, "Customer"); + var roleResult = await userManager.AddToRoleAsync(user, "Customer"); if (!roleResult.Succeeded) throw new AppException(string.Join('|', roleResult.Errors.Select(e => e.Description))); - _repositoryWrapper.SetRepository() + repositoryWrapper.SetRepository() .Add(new Customer { UserId = user.Id, }); - await _repositoryWrapper.SaveChangesAsync(default); + await repositoryWrapper.SaveChangesAsync(default); return await CompleteLogin(user, cancellationToken); } @@ -153,8 +132,8 @@ public class AccountService : IAccountService private async Task> CompleteLogin(ApplicationUser user, CancellationToken cancellationToken) { AccessToken jwt; - var role = await _userManager.GetRolesAsync(user); - jwt = await _jwtService.Generate(user, role.ToList()); + var role = await userManager.GetRolesAsync(user); + jwt = await jwtService.Generate(user, role.ToList()); jwt.User.RoleName = jwt.RoleName; return jwt; } diff --git a/Netina.Core/BaseServices/DashboardService.cs b/Netina.Core/BaseServices/DashboardService.cs index 606b9a9..f259c66 100644 --- a/Netina.Core/BaseServices/DashboardService.cs +++ b/Netina.Core/BaseServices/DashboardService.cs @@ -2,38 +2,31 @@ namespace Netina.Core.BaseServices; -public class DashboardService : IDashboardService +public class DashboardService(IRepositoryWrapper repositoryWrapper, UserManager userManager) + : IDashboardService { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly UserManager _userManager; - - public DashboardService(IRepositoryWrapper repositoryWrapper,UserManager userManager) - { - _repositoryWrapper = repositoryWrapper; - _userManager = userManager; - } public async Task GetHomeDashboardAsyncTask(CancellationToken cancellationToken = default) { var response = new HomeDashboardDto { - BlogsCount = await _repositoryWrapper.SetRepository() + BlogsCount = await repositoryWrapper.SetRepository() .TableNoTracking .CountAsync(cancellationToken), - ProductsCount = await _repositoryWrapper.SetRepository() + ProductsCount = await repositoryWrapper.SetRepository() .TableNoTracking .CountAsync(cancellationToken), - TodayOrdersCount = await _repositoryWrapper.SetRepository() + TodayOrdersCount = await repositoryWrapper.SetRepository() .TableNoTracking .Where(o => o.OrderAt.Date == DateTime.Today.Date) .CountAsync(cancellationToken), - UnSubmittedOrdersCount = await _repositoryWrapper.SetRepository() + UnSubmittedOrdersCount = await repositoryWrapper.SetRepository() .TableNoTracking .Where(o => o.OrderStatus == OrderStatus.Paid || o.OrderStatus == OrderStatus.Submitted) .CountAsync(cancellationToken), - BrandsCount = await _repositoryWrapper.SetRepository() + BrandsCount = await repositoryWrapper.SetRepository() .TableNoTracking .CountAsync(cancellationToken), - SubscribersCount = await _userManager.Users.CountAsync(cancellationToken) + SubscribersCount = await userManager.Users.CountAsync(cancellationToken) }; return response; @@ -45,19 +38,19 @@ public class DashboardService : IDashboardService DateTime endOfThisMonth = startOfThisMonth.AddMonths(1); var response = new OrderDashboardDto { - PayedOrdersCount = await _repositoryWrapper.SetRepository() + PayedOrdersCount = await repositoryWrapper.SetRepository() .TableNoTracking .Where(o=>o.IsPayed && o.OrderStatus==OrderStatus.Paid) .CountAsync(cancellationToken), - ThisMonthOrdersCount = await _repositoryWrapper.SetRepository() + ThisMonthOrdersCount = await repositoryWrapper.SetRepository() .TableNoTracking .Where(s => s.OrderAt.Date >= startOfThisMonth.Date && s.OrderAt.Date < endOfThisMonth.Date) .CountAsync(cancellationToken), - TodayOrdersCount = await _repositoryWrapper.SetRepository() + TodayOrdersCount = await repositoryWrapper.SetRepository() .TableNoTracking .Where(o => o.OrderAt.Date == DateTime.Now.Date) .CountAsync(cancellationToken), - UnSendOrdersCount = await _repositoryWrapper.SetRepository() + UnSendOrdersCount = await repositoryWrapper.SetRepository() .TableNoTracking .Where(o => o.IsPayed && o.OrderStatus == OrderStatus.Processing) .CountAsync(cancellationToken) diff --git a/Netina.Core/BaseServices/JwtService.cs b/Netina.Core/BaseServices/JwtService.cs index 0ec4497..d8a28c5 100644 --- a/Netina.Core/BaseServices/JwtService.cs +++ b/Netina.Core/BaseServices/JwtService.cs @@ -1,21 +1,14 @@ namespace Netina.Core.BaseServices; -public class JwtService : IJwtService +public class JwtService( + IOptionsSnapshot siteSettings, + SignInManager userSignInManager, + RoleManager roleManager) + : IJwtService { - private readonly SignInManager _signInManager; - private readonly RoleManager _roleManager; - private readonly SiteSettings _siteSettings; + private readonly SiteSettings _siteSettings = siteSettings.Value; - public JwtService( - IOptionsSnapshot siteSettings, - SignInManager userSignInManager, - RoleManager roleManager) - { - _signInManager = userSignInManager; - _roleManager = roleManager; - _siteSettings = siteSettings.Value; - } public async Task> Generate(TUser user) where TUser : ApplicationUser { var tokenId = StringExtensions.GetId(8); @@ -89,7 +82,7 @@ public class JwtService : IJwtService private async Task> GetClaims(TUser baseUser, string jwtId) where TUser : ApplicationUser { - var clFac = (await _signInManager.ClaimsFactory.CreateAsync(baseUser)); + var clFac = (await userSignInManager.ClaimsFactory.CreateAsync(baseUser)); var claims = new List(); claims.Add(new Claim("JwtID", jwtId)); claims.Add(new Claim(ClaimTypes.Name, baseUser.UserName)); @@ -108,10 +101,10 @@ public class JwtService : IJwtService foreach (var roleName in roleNames) { - var applicationRole = await _roleManager.FindByNameAsync(roleName); + var applicationRole = await roleManager.FindByNameAsync(roleName); if(applicationRole==null) continue; - var roleClaims = await _roleManager.GetClaimsAsync(applicationRole); + var roleClaims = await roleManager.GetClaimsAsync(applicationRole); claims.AddRange(roleClaims); claims.Add(new Claim(ClaimTypes.Role, applicationRole.EnglishName)); claims.Add(new Claim("RoleId", applicationRole.Id.ToString())); diff --git a/Netina.Core/BaseServices/PageService.cs b/Netina.Core/BaseServices/PageService.cs index e221faf..7f2625d 100644 --- a/Netina.Core/BaseServices/PageService.cs +++ b/Netina.Core/BaseServices/PageService.cs @@ -2,27 +2,22 @@ namespace Netina.Core.BaseServices; -public class PageService : IPageService +public class PageService( + IMartenRepositoryWrapper martenRepositoryWrapperWrapper, + ICurrentUserService currentUserService) + : IPageService { - private readonly IMartenRepositoryWrapper _martenRepositoryWrapper; - private readonly ICurrentUserService _currentUserService; - - public PageService(IMartenRepositoryWrapper martenRepositoryWrapperWrapper, ICurrentUserService currentUserService) - { - _martenRepositoryWrapper = martenRepositoryWrapperWrapper; - _currentUserService = currentUserService; - } public async Task GetPageAsync(Guid? id = null, string? pageName = null, string? pageSlug = null, string? type = null, CancellationToken cancellationToken = default) { BasePage? page = null; if (id != null) - page = await _martenRepositoryWrapper.SetRepository().GetEntityAsync(id.Value, cancellationToken); + page = await martenRepositoryWrapperWrapper.SetRepository().GetEntityAsync(id.Value, cancellationToken); else if (pageSlug != null) - page = await _martenRepositoryWrapper.SetRepository().GetEntityAsync(entity => entity.Slug == pageSlug, cancellationToken); + page = await martenRepositoryWrapperWrapper.SetRepository().GetEntityAsync(entity => entity.Slug == pageSlug, cancellationToken); else if (pageName != null) - page = await _martenRepositoryWrapper.SetRepository().GetEntityAsync(entity => entity.Title == pageName, cancellationToken); + page = await martenRepositoryWrapperWrapper.SetRepository().GetEntityAsync(entity => entity.Title == pageName, cancellationToken); else if (type != null) - page = await _martenRepositoryWrapper.SetRepository().GetEntityAsync(entity => entity.Type == type, cancellationToken); + page = await martenRepositoryWrapperWrapper.SetRepository().GetEntityAsync(entity => entity.Type == type, cancellationToken); if (page == null) throw new AppException("Page not found", ApiResultStatusCode.NotFound); @@ -45,7 +40,7 @@ public class PageService : IPageService public async Task> GetPagesAsync(CancellationToken cancellationToken = default) { List sDtos = new List(); - var pages = await _martenRepositoryWrapper.SetRepository().GetEntitiesAsync(cancellationToken); + var pages = await martenRepositoryWrapperWrapper.SetRepository().GetEntitiesAsync(cancellationToken); foreach (var page in pages) { var dto = new BasePageSDto @@ -79,23 +74,23 @@ public class PageService : IPageService Type = entity.Type, Slug = entity.Slug, CreatedAt = DateTime.Now, - CreatedBy = _currentUserService.UserName ?? string.Empty + CreatedBy = currentUserService.UserName ?? string.Empty }; if (!basePage.Type.IsNullOrEmpty()) { var type = Assembly.GetAssembly(typeof(DomainConfig))?.GetType(entity.Type); basePage.Data = JsonConvert.SerializeObject(((JsonElement)entity.Data).Deserialize(type)); } - await _martenRepositoryWrapper.SetRepository().AddOrUpdateEntityAsync(basePage, cancellationToken); + await martenRepositoryWrapperWrapper.SetRepository().AddOrUpdateEntityAsync(basePage, cancellationToken); return true; } public async Task DeletePageAsync(Guid id, CancellationToken cancellationToken = default) { - var page = await _martenRepositoryWrapper.SetRepository().GetEntityAsync(p => p.Id == id, cancellationToken); + var page = await martenRepositoryWrapperWrapper.SetRepository().GetEntityAsync(p => p.Id == id, cancellationToken); if (page == null) throw new AppException("Page not found", ApiResultStatusCode.NotFound); - await _martenRepositoryWrapper.SetRepository().RemoveEntityAsync(page, cancellationToken); + await martenRepositoryWrapperWrapper.SetRepository().RemoveEntityAsync(page, cancellationToken); return true; } } \ No newline at end of file diff --git a/Netina.Core/BaseServices/SettingService.cs b/Netina.Core/BaseServices/SettingService.cs index 4d11304..c31f0d0 100644 --- a/Netina.Core/BaseServices/SettingService.cs +++ b/Netina.Core/BaseServices/SettingService.cs @@ -1,21 +1,14 @@  -public class SettingService : ISettingService +public class SettingService(IMartenRepositoryWrapper martenRepositoryWrapper) : ISettingService { - private readonly IMartenRepositoryWrapper _martenRepositoryWrapper; - - public SettingService(IMartenRepositoryWrapper martenRepositoryWrapper) - { - _martenRepositoryWrapper = martenRepositoryWrapper; - } - public async Task GetSettingAsync(string settingName, CancellationToken cancellationToken = default) { var type = Assembly.GetAssembly(typeof(DomainConfig))?.GetType($"Netina.Domain.MartenEntities.Settings.{settingName}"); if (type == null) throw new AppException("Setting not found", ApiResultStatusCode.NotFound); - var baseSetting = await _martenRepositoryWrapper.SetRepository() + var baseSetting = await martenRepositoryWrapper.SetRepository() .GetEntityAsync(s => s.Name == settingName, cancellationToken); object? setting; if (baseSetting == null) @@ -34,7 +27,7 @@ public class SettingService : ISettingService if (type == null) throw new AppException("Setting not found", ApiResultStatusCode.NotFound); - var baseSetting = await _martenRepositoryWrapper.SetRepository() + var baseSetting = await martenRepositoryWrapper.SetRepository() .GetEntityAsync(s => s.Name == settingName, cancellationToken); if (baseSetting == null) @@ -51,7 +44,7 @@ public class SettingService : ISettingService baseSetting.JsonData = JsonConvert.SerializeObject(settingObj.Deserialize(type)); } - await _martenRepositoryWrapper.SetRepository() + await martenRepositoryWrapper.SetRepository() .AddOrUpdateEntityAsync(baseSetting, cancellationToken); } } \ No newline at end of file diff --git a/Netina.Core/BaseServices/SiteMapService.cs b/Netina.Core/BaseServices/SiteMapService.cs index ed1afa1..8989164 100644 --- a/Netina.Core/BaseServices/SiteMapService.cs +++ b/Netina.Core/BaseServices/SiteMapService.cs @@ -6,23 +6,15 @@ using Netina.Domain.Entities.ProductCategories; namespace Netina.Core.BaseServices; -public class SiteMapService : ISiteMapService +public class SiteMapService( + IOptionsSnapshot snapshot, + IUploadFileService uploadFileService, + IRepositoryWrapper repositoryWrapper, + IPageService pageService) + : ISiteMapService { - private readonly IUploadFileService _uploadFileService; - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly IPageService _pageService; - private readonly SiteSettings _siteSetting; + private readonly SiteSettings _siteSetting = snapshot.Value; - public SiteMapService(IOptionsSnapshot snapshot, - IUploadFileService uploadFileService, - IRepositoryWrapper repositoryWrapper, - IPageService pageService) - { - _uploadFileService = uploadFileService; - _repositoryWrapper = repositoryWrapper; - _pageService = pageService; - _siteSetting = snapshot.Value; - } public async Task CreateSiteMapAsync() { XmlDocument doc = new XmlDocument(); @@ -38,11 +30,11 @@ public class SiteMapService : ISiteMapService doc.AppendChild(root); - var productCategories = await _repositoryWrapper.SetRepository() + var productCategories = await repositoryWrapper.SetRepository() .TableNoTracking .ToListAsync(); - var blogCategories= await _repositoryWrapper.SetRepository() + var blogCategories= await repositoryWrapper.SetRepository() .TableNoTracking .ToListAsync(); @@ -96,7 +88,7 @@ public class SiteMapService : ISiteMapService doc.WriteTo(writer); writer.Flush(); byte[] byteArray = stream.ToArray(); - await _uploadFileService.UploadFileByteAsync(new FileUploadRequest + await uploadFileService.UploadFileByteAsync(new FileUploadRequest { FileBytes = byteArray, ContentType = "text/xml", @@ -118,7 +110,7 @@ public class SiteMapService : ISiteMapService { var siteMapsUId = SiteMapUIds.Pages; - var pages = await _pageService.GetPagesAsync(); + var pages = await pageService.GetPagesAsync(); XmlDocument doc = new XmlDocument(); XmlDeclaration documentType = doc.CreateXmlDeclaration("1.0", "utf-8", null); @@ -170,7 +162,7 @@ public class SiteMapService : ISiteMapService zipStream.Close(); var siteMapArray = compressedStream.ToArray(); - await _uploadFileService.UploadFileByteAsync(new FileUploadRequest + await uploadFileService.UploadFileByteAsync(new FileUploadRequest { FileBytes = siteMapArray, ContentType = "text/plain", @@ -184,7 +176,7 @@ public class SiteMapService : ISiteMapService { var siteMapsUId = SiteMapUIds.Brands; - var brands = await _repositoryWrapper.SetRepository() + var brands = await repositoryWrapper.SetRepository() .TableNoTracking .ToListAsync(); @@ -238,7 +230,7 @@ public class SiteMapService : ISiteMapService zipStream.Close(); var siteMapArray = compressedStream.ToArray(); - await _uploadFileService.UploadFileByteAsync(new FileUploadRequest + await uploadFileService.UploadFileByteAsync(new FileUploadRequest { FileBytes = siteMapArray, ContentType = "text/plain", @@ -253,7 +245,7 @@ public class SiteMapService : ISiteMapService { var siteMapsUId = SiteMapUIds.Categories; - var categories = await _repositoryWrapper.SetRepository() + var categories = await repositoryWrapper.SetRepository() .TableNoTracking .ToListAsync(); @@ -307,7 +299,7 @@ public class SiteMapService : ISiteMapService zipStream.Close(); var siteMapArray = compressedStream.ToArray(); - await _uploadFileService.UploadFileByteAsync(new FileUploadRequest + await uploadFileService.UploadFileByteAsync(new FileUploadRequest { FileBytes = siteMapArray, ContentType = "text/plain", @@ -321,7 +313,7 @@ public class SiteMapService : ISiteMapService private async Task CreateProductsSiteMapsAsync() { - var products = await _repositoryWrapper.SetRepository() + var products = await repositoryWrapper.SetRepository() .TableNoTracking .Select(ProductMapper.ProjectToSDto) .ToListAsync(); @@ -400,7 +392,7 @@ public class SiteMapService : ISiteMapService zipStream.Close(); var siteMapArray = compressedStream.ToArray(); - await _uploadFileService.UploadFileByteAsync(new FileUploadRequest + await uploadFileService.UploadFileByteAsync(new FileUploadRequest { FileBytes = siteMapArray, ContentType = "text/plain", @@ -417,7 +409,7 @@ public class SiteMapService : ISiteMapService private async Task CreateBlogsSiteMapsAsync() { - var blogs = await _repositoryWrapper.SetRepository() + var blogs = await repositoryWrapper.SetRepository() .TableNoTracking .Select(BlogMapper.ProjectToSDto) .ToListAsync(); @@ -530,7 +522,7 @@ public class SiteMapService : ISiteMapService zipStream.Close(); var siteMapArray = compressedStream.ToArray(); - await _uploadFileService.UploadFileByteAsync(new FileUploadRequest + await uploadFileService.UploadFileByteAsync(new FileUploadRequest { FileBytes = siteMapArray, ContentType = "text/plain", @@ -548,7 +540,7 @@ public class SiteMapService : ISiteMapService { var siteMapsUId = SiteMapUIds.BlogCategories; - var blogCategories = await _repositoryWrapper.SetRepository() + var blogCategories = await repositoryWrapper.SetRepository() .TableNoTracking .ToListAsync(); @@ -602,7 +594,7 @@ public class SiteMapService : ISiteMapService zipStream.Close(); var siteMapArray = compressedStream.ToArray(); - await _uploadFileService.UploadFileByteAsync(new FileUploadRequest + await uploadFileService.UploadFileByteAsync(new FileUploadRequest { FileBytes = siteMapArray, ContentType = "text/plain", diff --git a/Netina.Core/CoreServices/SearchServices/GetEmallsProductsQueryHandler.cs b/Netina.Core/CoreServices/SearchServices/GetEmallsProductsQueryHandler.cs index b7865f4..a6420d7 100644 --- a/Netina.Core/CoreServices/SearchServices/GetEmallsProductsQueryHandler.cs +++ b/Netina.Core/CoreServices/SearchServices/GetEmallsProductsQueryHandler.cs @@ -1,21 +1,17 @@ namespace Netina.Core.CoreServices.SearchServices; -public class GetEmallsProductsQueryHandler : IRequestHandler +public class GetEmallsProductsQueryHandler( + IRepositoryWrapper repositoryWrapper, + IMediator mediator, + IOptionsSnapshot optionsSnapshot) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly IMediator _mediator; - private readonly SiteSettings _siteSetting; - public GetEmallsProductsQueryHandler(IRepositoryWrapper repositoryWrapper, IMediator mediator, IOptionsSnapshot optionsSnapshot) - { - _repositoryWrapper = repositoryWrapper; - _mediator = mediator; - _siteSetting = optionsSnapshot.Value; - } + private readonly SiteSettings _siteSetting = optionsSnapshot.Value; public async Task Handle(GetEmallsProductsQuery request, CancellationToken cancellationToken) { var page = request.Page; - var productsSDto = await _repositoryWrapper.SetRepository() + var productsSDto = await repositoryWrapper.SetRepository() .TableNoTracking .OrderByDescending(p => p.ModifiedAt == DateTime.MinValue ? p.CreatedAt : p.ModifiedAt) .Select(p => new ProductSDto @@ -37,7 +33,7 @@ public class GetEmallsProductsQueryHandler : IRequestHandler(); foreach (var product in productsSDto) { @@ -62,7 +58,7 @@ public class GetEmallsProductsQueryHandler : IRequestHandler().TableNoTracking.CountAsync(cancellationToken)); + response.total_items = (await repositoryWrapper.SetRepository().TableNoTracking.CountAsync(cancellationToken)); response.pages_count = response.total_items / request.Count; response.products = products; diff --git a/Netina.Core/CoreServices/SearchServices/GetThumbSearchProductsQueryHandler.cs b/Netina.Core/CoreServices/SearchServices/GetThumbSearchProductsQueryHandler.cs index ca12fde..b76da56 100644 --- a/Netina.Core/CoreServices/SearchServices/GetThumbSearchProductsQueryHandler.cs +++ b/Netina.Core/CoreServices/SearchServices/GetThumbSearchProductsQueryHandler.cs @@ -2,27 +2,22 @@ namespace Netina.Core.CoreServices.SearchServices; -public class GetThumbSearchProductsQueryHandler : IRequestHandler +public class GetThumbSearchProductsQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetThumbSearchProductsQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(GetThumbSearchProductsQuery request, CancellationToken cancellationToken) { var searchQuery = request.Name; - var products = await _repositoryWrapper.SetRepository() + var products = await repositoryWrapper.SetRepository() .TableNoTracking .OrderByDescending(p => EF.Functions.TrigramsSimilarity(p.PersianName, searchQuery)) .Take(8) .Select(ProductMapper.ProjectToSDto) .ToListAsync(cancellationToken); - var categories = await _repositoryWrapper.SetRepository() + var categories = await repositoryWrapper.SetRepository() .TableNoTracking .OrderByDescending(p => EF.Functions.TrigramsSimilarity(p.Name.ToLower().Trim(), searchQuery)) .Take(8) diff --git a/Netina.Core/CoreServices/SearchServices/GetTorobProductsQueryHandler.cs b/Netina.Core/CoreServices/SearchServices/GetTorobProductsQueryHandler.cs index 6da036c..479ef44 100644 --- a/Netina.Core/CoreServices/SearchServices/GetTorobProductsQueryHandler.cs +++ b/Netina.Core/CoreServices/SearchServices/GetTorobProductsQueryHandler.cs @@ -1,21 +1,17 @@ namespace Netina.Core.CoreServices.SearchServices; -public class GetTorobProductsQueryHandler : IRequestHandler> +public class GetTorobProductsQueryHandler( + IRepositoryWrapper repositoryWrapper, + IMediator mediator, + IOptionsSnapshot optionsSnapshot) + : IRequestHandler> { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly IMediator _mediator; - private readonly SiteSettings _siteSetting; + private readonly SiteSettings _siteSetting = optionsSnapshot.Value; - public GetTorobProductsQueryHandler(IRepositoryWrapper repositoryWrapper, IMediator mediator, IOptionsSnapshot optionsSnapshot) - { - _repositoryWrapper = repositoryWrapper; - _mediator = mediator; - _siteSetting = optionsSnapshot.Value; - } public async Task> Handle(GetTorobProductsQuery request, CancellationToken cancellationToken) { int page = request.Page == 0 ? 1 : request.Page; - var productsSDto = await _repositoryWrapper.SetRepository() + var productsSDto = await repositoryWrapper.SetRepository() .TableNoTracking .OrderByDescending(p => p.ModifiedAt == DateTime.MinValue ? p.CreatedAt : p.ModifiedAt) .Select(p => new ProductSDto @@ -37,7 +33,7 @@ public class GetTorobProductsQueryHandler : IRequestHandler(); foreach (var product in productsSDto) { diff --git a/Netina.Core/CoreServices/WebSiteServices/GetWebSiteNavBarCommandHandler.cs b/Netina.Core/CoreServices/WebSiteServices/GetWebSiteNavBarCommandHandler.cs index 3ebae44..28bcac0 100644 --- a/Netina.Core/CoreServices/WebSiteServices/GetWebSiteNavBarCommandHandler.cs +++ b/Netina.Core/CoreServices/WebSiteServices/GetWebSiteNavBarCommandHandler.cs @@ -2,22 +2,17 @@ namespace Netina.Core.CoreServices.WebSiteServices; -public class GetWebSiteNavBarCommandHandler : IRequestHandler> +public class GetWebSiteNavBarCommandHandler( + IRepositoryWrapper repositoryWrapper, + ISettingService settingService, + IOptionsSnapshot optionsSnapshot) + : IRequestHandler> { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly ISettingService _settingService; - private readonly SiteSettings _siteSetting; - - public GetWebSiteNavBarCommandHandler(IRepositoryWrapper repositoryWrapper , ISettingService settingService,IOptionsSnapshot optionsSnapshot) - { - _repositoryWrapper = repositoryWrapper; - _settingService = settingService; - _siteSetting = optionsSnapshot.Value; - } + private readonly SiteSettings _siteSetting = optionsSnapshot.Value; public async Task> Handle(GetWebSiteNavBarCommand request, CancellationToken cancellationToken) { - var navBarSetting = await _settingService.GetSettingAsync(nameof(NavMenuSetting), cancellationToken) as NavMenuSetting; + var navBarSetting = await settingService.GetSettingAsync(nameof(NavMenuSetting), cancellationToken) as NavMenuSetting; var navBarItems = new List(); if (navBarSetting == null) return new List(); @@ -30,7 +25,7 @@ public class GetWebSiteNavBarCommandHandler : IRequestHandler() + var baseCategories = await repositoryWrapper.SetRepository() .TableNoTracking .OrderByDescending(c => c.CreatedAt) .Select(BlogCategoryMapper.ProjectToSDto) @@ -54,7 +49,7 @@ public class GetWebSiteNavBarCommandHandler : IRequestHandler() + var baseCategories = await repositoryWrapper.SetRepository() .TableNoTracking .OrderByDescending(c => c.CreatedAt) .Select(ProductCategoryMapper.ProjectToSDto) diff --git a/Netina.Core/EntityServices/DiscountHandlers/CalculateOrderDiscountCommandHandler.cs b/Netina.Core/EntityServices/DiscountHandlers/CalculateOrderDiscountCommandHandler.cs index 0890210..5693f37 100644 --- a/Netina.Core/EntityServices/DiscountHandlers/CalculateOrderDiscountCommandHandler.cs +++ b/Netina.Core/EntityServices/DiscountHandlers/CalculateOrderDiscountCommandHandler.cs @@ -1,21 +1,16 @@ namespace Netina.Core.EntityServices.DiscountHandlers; -public class CalculateOrderDiscountCommandHandler : IRequestHandler +public class CalculateOrderDiscountCommandHandler( + IRepositoryWrapper repositoryWrapper, + ICurrentUserService currentUserService) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly ICurrentUserService _currentUserService; - - public CalculateOrderDiscountCommandHandler(IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService) - { - _repositoryWrapper = repositoryWrapper; - _currentUserService = currentUserService; - } public async Task Handle(CalculateOrderDiscountCommand request, CancellationToken cancellationToken) { if (request.Order == null) throw new AppException("Order is null", ApiResultStatusCode.BadRequest); - var discount = await _repositoryWrapper.SetRepository() + var discount = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(d => d.Code == request.DiscountCode, cancellationToken); @@ -25,14 +20,14 @@ public class CalculateOrderDiscountCommandHandler : IRequestHandler() + var customer = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(c => c.UserId == firstPurchaseUserId, cancellationToken); if (customer == null) throw new BaseApiException(ApiResultStatusCode.NotFound, "Customer not found"); - var userOrderCount = await _repositoryWrapper.SetRepository() + var userOrderCount = await repositoryWrapper.SetRepository() .TableNoTracking .CountAsync(f => f.CustomerId == customer.Id && f.DiscountCode == discount.Code, cancellationToken); if (userOrderCount > 0) @@ -51,7 +46,7 @@ public class CalculateOrderDiscountCommandHandler : IRequestHandler() + var categoryDiscount = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(d => d.Code == request.DiscountCode, cancellationToken); if ( categoryDiscount!=null && !categoryDiscount.IsExpired()) @@ -62,7 +57,7 @@ public class CalculateOrderDiscountCommandHandler : IRequestHandler() + var productDiscount = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(d => d.Code == request.DiscountCode, cancellationToken); diff --git a/Netina.Core/EntityServices/DiscountHandlers/CalculateProductDiscountCommandHandler.cs b/Netina.Core/EntityServices/DiscountHandlers/CalculateProductDiscountCommandHandler.cs index f1b6eef..7ede885 100644 --- a/Netina.Core/EntityServices/DiscountHandlers/CalculateProductDiscountCommandHandler.cs +++ b/Netina.Core/EntityServices/DiscountHandlers/CalculateProductDiscountCommandHandler.cs @@ -1,15 +1,8 @@ namespace Netina.Core.EntityServices.DiscountHandlers; -public class CalculateProductDiscountCommandHandler : IRequestHandler +public class CalculateProductDiscountCommandHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public CalculateProductDiscountCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } - - public async Task Handle(CalculateProductDiscountCommand request, CancellationToken cancellationToken) { if (request.Product is ProductSDto product) @@ -30,7 +23,7 @@ public class CalculateProductDiscountCommandHandler : IRequestHandler() + var allDiscount = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(d => d.Type == DiscountType.All && d.HasCode == false && d.ExpireDate.Date >= DateTime.Today.Date, cancellationToken); @@ -42,7 +35,7 @@ public class CalculateProductDiscountCommandHandler : IRequestHandler() + var categoryDiscount = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(d => d.CategoryId == request.CategoryId && d.HasCode == false && d.ExpireDate.Date >= DateTime.Today.Date, cancellationToken); @@ -53,7 +46,7 @@ public class CalculateProductDiscountCommandHandler : IRequestHandler() + var productDiscount = await repositoryWrapper.SetRepository() .TableNoTracking .Where(d => d.HasCode == false && d.ProductId == request.Id && d.ExpireDate.Date >= DateTime.Today.Date) .OrderByDescending(d => d.CreatedAt) @@ -85,7 +78,7 @@ public class CalculateProductDiscountCommandHandler : IRequestHandler() + var allDiscount = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(d => d.Type == DiscountType.All && d.HasCode == false && d.ExpireDate.Date >= DateTime.Today.Date, cancellationToken); @@ -97,7 +90,7 @@ public class CalculateProductDiscountCommandHandler : IRequestHandler() + var categoryDiscount = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(d => d.CategoryId == request.CategoryId && d.HasCode == false && d.ExpireDate.Date >= DateTime.Today.Date, cancellationToken); @@ -108,7 +101,7 @@ public class CalculateProductDiscountCommandHandler : IRequestHandler() + var productDiscount = await repositoryWrapper.SetRepository() .TableNoTracking .Where(d => d.HasCode == false && d.ProductId == request.Id && d.ExpireDate.Date >= DateTime.Today.Date) .OrderByDescending(d => d.CreatedAt) diff --git a/Netina.Core/EntityServices/DiscountHandlers/CheckUserDiscountFirstUseCommandHandler.cs b/Netina.Core/EntityServices/DiscountHandlers/CheckUserDiscountFirstUseCommandHandler.cs index c87198b..56d6e7e 100644 --- a/Netina.Core/EntityServices/DiscountHandlers/CheckUserDiscountFirstUseCommandHandler.cs +++ b/Netina.Core/EntityServices/DiscountHandlers/CheckUserDiscountFirstUseCommandHandler.cs @@ -1,28 +1,22 @@ namespace Netina.Core.EntityServices.DiscountHandlers; -public class CheckUserDiscountFirstUseCommandHandler : IRequestHandler +public class CheckUserDiscountFirstUseCommandHandler( + IRepositoryWrapper repositoryWrapper, + ICurrentUserService currentUserService) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly ICurrentUserService _currentUserService; - - public CheckUserDiscountFirstUseCommandHandler(IRepositoryWrapper repositoryWrapper, ICurrentUserService currentUserService) - { - _repositoryWrapper = repositoryWrapper; - _currentUserService = currentUserService; - } - public async Task Handle(CheckUserDiscountFirstUseCommand request, CancellationToken cancellationToken) { - if (_currentUserService.UserId != null && Guid.TryParse(_currentUserService.UserId, out Guid userId)) + if (currentUserService.UserId != null && Guid.TryParse(currentUserService.UserId, out Guid userId)) { - var customer = await _repositoryWrapper.SetRepository() + var customer = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(c => c.UserId == userId, cancellationToken); if (customer == null) throw new BaseApiException(ApiResultStatusCode.NotFound, "Customer not found"); - var discountedUserOrder = await _repositoryWrapper.SetRepository() + var discountedUserOrder = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(f => f.CustomerId == customer.Id && f.DiscountCode == request.DiscountCode, cancellationToken); diff --git a/Netina.Core/EntityServices/MarketerHandlers/CreateMarketerDiscountCommandHandler.cs b/Netina.Core/EntityServices/MarketerHandlers/CreateMarketerDiscountCommandHandler.cs index da4239b..aafc619 100644 --- a/Netina.Core/EntityServices/MarketerHandlers/CreateMarketerDiscountCommandHandler.cs +++ b/Netina.Core/EntityServices/MarketerHandlers/CreateMarketerDiscountCommandHandler.cs @@ -1,48 +1,38 @@ namespace Netina.Core.EntityServices.MarketerHandlers; -public class CreateMarketerDiscountCommandHandler : IRequestHandler +public class CreateMarketerDiscountCommandHandler( + UserManager userManager, + IRepositoryWrapper repositoryWrapper, + ICurrentUserService currentUserService, + ISettingService settingService) + : IRequestHandler { - private readonly UserManager _userManager; - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly ICurrentUserService _currentUserService; - private readonly ISettingService _settingService; - - public CreateMarketerDiscountCommandHandler(UserManager userManager, - IRepositoryWrapper repositoryWrapper, - ICurrentUserService currentUserService, - ISettingService settingService) - { - _userManager = userManager; - _repositoryWrapper = repositoryWrapper; - _currentUserService = currentUserService; - _settingService = settingService; - } public async Task Handle(CreateMarketerDiscountCommand request, CancellationToken cancellationToken) { var userId = request.MarketerUserId; if (userId == default) { - if (_currentUserService.UserId == null) + if (currentUserService.UserId == null) throw new AppException("User id is null"); - if (!Guid.TryParse(_currentUserService.UserId, out userId)) + if (!Guid.TryParse(currentUserService.UserId, out userId)) throw new AppException("User id is wrong"); } - var user = await _userManager.FindByIdAsync(userId.ToString()); + var user = await userManager.FindByIdAsync(userId.ToString()); if (user == null) throw new AppException("User not found", ApiResultStatusCode.NotFound); - var marketer = await _repositoryWrapper.SetRepository() + var marketer = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(m => m.UserId == user.Id, cancellationToken); if (marketer == null) throw new AppException("Marketer not found", ApiResultStatusCode.NotFound); - var foundedDiscount = await _repositoryWrapper.SetRepository() + var foundedDiscount = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(d => d.IsForSaleCooperation && d.MarketerId == marketer.Id, cancellationToken); if (foundedDiscount == null) { - var setting = await _settingService.GetSettingAsync(nameof(MarketerSetting), cancellationToken); + var setting = await settingService.GetSettingAsync(nameof(MarketerSetting), cancellationToken); int discountPercent = 10; if (setting is MarketerSetting marketerSetting) discountPercent = marketerSetting.DiscountPercent; @@ -53,8 +43,8 @@ public class CreateMarketerDiscountCommandHandler : IRequestHandler().Add(foundedDiscount); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Add(foundedDiscount); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return foundedDiscount.Code; } diff --git a/Netina.Core/EntityServices/MarketerHandlers/GetMarketerProfileQueryHandler.cs b/Netina.Core/EntityServices/MarketerHandlers/GetMarketerProfileQueryHandler.cs index 2da31bc..69438d4 100644 --- a/Netina.Core/EntityServices/MarketerHandlers/GetMarketerProfileQueryHandler.cs +++ b/Netina.Core/EntityServices/MarketerHandlers/GetMarketerProfileQueryHandler.cs @@ -2,18 +2,12 @@ namespace Netina.Core.EntityServices.MarketerHandlers; -public class GetMarketerProfileQueryHandler : IRequestHandler +public class GetMarketerProfileQueryHandler( + IRepositoryWrapper repositoryWrapper, + ICurrentUserService currentUserService, + ISettingService settingService) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly ICurrentUserService _currentUserService; - private readonly ISettingService _settingService; - - public GetMarketerProfileQueryHandler(IRepositoryWrapper repositoryWrapper, ICurrentUserService currentUserService,ISettingService settingService) - { - _repositoryWrapper = repositoryWrapper; - _currentUserService = currentUserService; - _settingService = settingService; - } public async Task Handle(GetMarketerProfileQuery request, CancellationToken cancellationToken) { Guid marketerId; @@ -21,17 +15,17 @@ public class GetMarketerProfileQueryHandler : IRequestHandler() + marketer = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(m => m.Id == marketerId, cancellationToken); } else { - if (_currentUserService.UserId == null) + if (currentUserService.UserId == null) throw new BaseApiException("User id is null"); - if (!Guid.TryParse(_currentUserService.UserId, out Guid userId)) + if (!Guid.TryParse(currentUserService.UserId, out Guid userId)) throw new BaseApiException("User id is wrong"); - marketer = await _repositoryWrapper.SetRepository() + marketer = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(m => m.UserId == userId, cancellationToken); @@ -40,26 +34,26 @@ public class GetMarketerProfileQueryHandler : IRequestHandler() + var discount = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(d => d.MarketerId == marketer.Id, cancellationToken); if (discount == null) throw new BaseApiException("Marketer has no discount"); - var setting = (await _settingService.GetSettingAsync(nameof(MarketerSetting), cancellationToken)) as MarketerSetting; + var setting = (await settingService.GetSettingAsync(nameof(MarketerSetting), cancellationToken)) as MarketerSetting; if (setting == null) throw new BaseApiException("MarketerSetting is null"); var response = new MarketerProfileResponseDto(); - var orderCount = await _repositoryWrapper.SetRepository() + var orderCount = await repositoryWrapper.SetRepository() .TableNoTracking .CountAsync(o => o.DiscountCode == discount.Code, cancellationToken); response.OrderCount = orderCount; - var newTotalProductPrice = await _repositoryWrapper.SetRepository() + var newTotalProductPrice = await repositoryWrapper.SetRepository() .TableNoTracking .Where(o => o.DiscountCode == discount.Code && o.OrderAt.Date > marketer.LastSettlement.Date) .SumAsync(o => o.TotalProductsPrice, cancellationToken); diff --git a/Netina.Core/EntityServices/MarketerHandlers/SignUpMarketerCommandHandler.cs b/Netina.Core/EntityServices/MarketerHandlers/SignUpMarketerCommandHandler.cs index 4fa674b..41ce8d1 100644 --- a/Netina.Core/EntityServices/MarketerHandlers/SignUpMarketerCommandHandler.cs +++ b/Netina.Core/EntityServices/MarketerHandlers/SignUpMarketerCommandHandler.cs @@ -1,36 +1,29 @@ namespace Netina.Core.EntityServices.MarketerHandlers; -public class SignUpMarketerCommandHandler : IRequestHandler +public class SignUpMarketerCommandHandler( + UserManager userManager, + IMediator mediator, + ICurrentUserService currentUserService, + IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly UserManager _userManager; - private readonly IMediator _mediator; - private readonly ICurrentUserService _currentUserService; - private readonly IRepositoryWrapper _repositoryWrapper; - - public SignUpMarketerCommandHandler(UserManager userManager,IMediator mediator,ICurrentUserService currentUserService,IRepositoryWrapper repositoryWrapper) - { - _userManager = userManager; - _mediator = mediator; - _currentUserService = currentUserService; - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(SignUpMarketerCommand request, CancellationToken cancellationToken) { - if (_currentUserService.UserId == null) + if (currentUserService.UserId == null) throw new AppException("User id is null"); - if (!Guid.TryParse(_currentUserService.UserId, out Guid userId)) + if (!Guid.TryParse(currentUserService.UserId, out Guid userId)) throw new AppException("User id is wrong"); - var user = await _userManager.FindByIdAsync(_currentUserService.UserId); + var user = await userManager.FindByIdAsync(currentUserService.UserId); if (user == null) throw new AppException("User not found"); - var marketer = await _repositoryWrapper.SetRepository() + var marketer = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(m => m.UserId == userId, cancellationToken); if (marketer != null) - return await _mediator.Send(new GetMarketerProfileQuery(MarketerId: marketer.Id), cancellationToken); + return await mediator.Send(new GetMarketerProfileQuery(MarketerId: marketer.Id), cancellationToken); marketer = new Marketer { @@ -38,16 +31,16 @@ public class SignUpMarketerCommandHandler : IRequestHandler() + repositoryWrapper.SetRepository() .Add(marketer); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + await repositoryWrapper.SaveChangesAsync(cancellationToken); user.BirthDate = DateTimeExtensions.UnixTimeStampToDateTime(request.BirthDate); user.NationalId = request.NationalId; - await _userManager.UpdateAsync(user); + await userManager.UpdateAsync(user); - await _mediator.Send(new CreateMarketerDiscountCommand(userId), cancellationToken); + await mediator.Send(new CreateMarketerDiscountCommand(userId), cancellationToken); - return await _mediator.Send(new GetMarketerProfileQuery(marketer.Id), cancellationToken); + return await mediator.Send(new GetMarketerProfileQuery(marketer.Id), cancellationToken); } } \ No newline at end of file diff --git a/Netina.Core/EntityServices/OrderBagHandlers/AddToOrderBagCommandHandler.cs b/Netina.Core/EntityServices/OrderBagHandlers/AddToOrderBagCommandHandler.cs index 4d9585b..0479c74 100644 --- a/Netina.Core/EntityServices/OrderBagHandlers/AddToOrderBagCommandHandler.cs +++ b/Netina.Core/EntityServices/OrderBagHandlers/AddToOrderBagCommandHandler.cs @@ -1,31 +1,24 @@ namespace Netina.Core.EntityServices.OrderBagHandlers; -public class AddToOrderBagCommandHandler : IRequestHandler +public class AddToOrderBagCommandHandler( + IMediator mediator, + IRepositoryWrapper repositoryWrapper, + ICurrentUserService currentUserService) + : IRequestHandler { - private readonly IMediator _mediator; - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly ICurrentUserService _currentUserService; - - public AddToOrderBagCommandHandler(IMediator mediator, IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService) - { - _mediator = mediator; - _repositoryWrapper = repositoryWrapper; - _currentUserService = currentUserService; - } - public async Task Handle(AddToOrderBagCommand request, CancellationToken cancellationToken) { - if (_currentUserService.UserId == null) + if (currentUserService.UserId == null) throw new AppException("Customer id notfound", ApiResultStatusCode.BadRequest); - if (!Guid.TryParse(_currentUserService.UserId, out Guid userId)) + if (!Guid.TryParse(currentUserService.UserId, out Guid userId)) throw new AppException("Customer id wrong", ApiResultStatusCode.BadRequest); - var orderBag = await _mediator.Send(new GetUserOrderBagQuery(), cancellationToken); + var orderBag = await mediator.Send(new GetUserOrderBagQuery(), cancellationToken); foreach (var requestDto in request.RequestDtos) { - var product = await _repositoryWrapper.SetRepository() + var product = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(p => p.Id == requestDto.ProductId, cancellationToken); @@ -35,16 +28,16 @@ public class AddToOrderBagCommandHandler : IRequestHandler().Update(orderBag); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Update(orderBag); + await repositoryWrapper.SaveChangesAsync(cancellationToken); - var order = await _mediator.Send(new CalculateOrderCommand(orderBag.Id), cancellationToken); + var order = await mediator.Send(new CalculateOrderCommand(orderBag.Id), cancellationToken); return order.AdaptToSDto(); } diff --git a/Netina.Core/EntityServices/OrderBagHandlers/CheckOrderBagCommandHandler.cs b/Netina.Core/EntityServices/OrderBagHandlers/CheckOrderBagCommandHandler.cs index 60d3509..e4f57fe 100644 --- a/Netina.Core/EntityServices/OrderBagHandlers/CheckOrderBagCommandHandler.cs +++ b/Netina.Core/EntityServices/OrderBagHandlers/CheckOrderBagCommandHandler.cs @@ -1,22 +1,15 @@ namespace Netina.Core.EntityServices.OrderBagHandlers; -public class CheckOrderBagCommandHandler : IRequestHandler> +public class CheckOrderBagCommandHandler(IRepositoryWrapper repositoryWrapper, IMediator mediator) + : IRequestHandler> { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly IMediator _mediator; - - public CheckOrderBagCommandHandler(IRepositoryWrapper repositoryWrapper,IMediator mediator) - { - _repositoryWrapper = repositoryWrapper; - _mediator = mediator; - } public async Task> Handle(CheckOrderBagCommand request, CancellationToken cancellationToken) { List response = new List(); foreach (var item in request.OrderBag) { - var product = await _repositoryWrapper.SetRepository() + var product = await repositoryWrapper.SetRepository() .TableNoTracking .Where(p => p.Id == item.ProductId) .Select(ProductMapper.ProjectToSDto) @@ -35,7 +28,7 @@ public class CheckOrderBagCommandHandler : IRequestHandler +public class GetUserOrderBagQueryHandler( + IRepositoryWrapper repositoryWrapper, + ICurrentUserService currentUserService, + IMediator mediator) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly ICurrentUserService _currentUserService; - private readonly IMediator _mediator; - - public GetUserOrderBagQueryHandler(IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService,IMediator mediator) - { - _repositoryWrapper = repositoryWrapper; - _currentUserService = currentUserService; - _mediator = mediator; - } public async Task Handle(GetUserOrderBagQuery request, CancellationToken cancellationToken) { - if (_currentUserService.UserId == null) + if (currentUserService.UserId == null) throw new AppException("Customer id notfound", ApiResultStatusCode.BadRequest); - if (!Guid.TryParse(_currentUserService.UserId, out Guid userId)) + if (!Guid.TryParse(currentUserService.UserId, out Guid userId)) throw new AppException("Customer id wrong",ApiResultStatusCode.BadRequest); - var customer = await _repositoryWrapper.SetRepository() + var customer = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(c => c.UserId == userId, cancellationToken); if (customer == null) @@ -28,20 +22,20 @@ public class GetUserOrderBagQueryHandler : IRequestHandler() + repositoryWrapper.SetRepository() .Add(customer); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + await repositoryWrapper.SaveChangesAsync(cancellationToken); } - var order = await _repositoryWrapper.SetRepository() + var order = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(o => o.CustomerId == customer.Id && o.OrderStatus == OrderStatus.OrderBag,cancellationToken); if (order == null) - order = await _mediator.Send(new CreateBaseOrderCommand(userId),cancellationToken); + order = await mediator.Send(new CreateBaseOrderCommand(userId),cancellationToken); else { - var orderProducts = await _repositoryWrapper.SetRepository() + var orderProducts = await repositoryWrapper.SetRepository() .TableNoTracking .Where(op=>op.OrderId==order.Id) .ToListAsync(cancellationToken); diff --git a/Netina.Core/EntityServices/OrderBagHandlers/RemoveFromOrderBagCommandHandler.cs b/Netina.Core/EntityServices/OrderBagHandlers/RemoveFromOrderBagCommandHandler.cs index 882b9ea..6059456 100644 --- a/Netina.Core/EntityServices/OrderBagHandlers/RemoveFromOrderBagCommandHandler.cs +++ b/Netina.Core/EntityServices/OrderBagHandlers/RemoveFromOrderBagCommandHandler.cs @@ -1,29 +1,23 @@ namespace Netina.Core.EntityServices.OrderBagHandlers; -public class RemoveFromOrderBagCommandHandler : IRequestHandler +public class RemoveFromOrderBagCommandHandler( + ICurrentUserService currentUserService, + IRepositoryWrapper repositoryWrapper, + IMediator mediator) + : IRequestHandler { - private readonly ICurrentUserService _currentUserService; - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly IMediator _mediator; - - public RemoveFromOrderBagCommandHandler(ICurrentUserService currentUserService, IRepositoryWrapper repositoryWrapper,IMediator mediator) - { - _currentUserService = currentUserService; - _repositoryWrapper = repositoryWrapper; - _mediator = mediator; - } public async Task Handle(RemoveFromOrderBagCommand request, CancellationToken cancellationToken) { - if (_currentUserService.UserId == null) + if (currentUserService.UserId == null) throw new AppException("Customer id notfound", ApiResultStatusCode.BadRequest); - if (!Guid.TryParse(_currentUserService.UserId, out Guid userId)) + if (!Guid.TryParse(currentUserService.UserId, out Guid userId)) throw new AppException("Customer id wrong", ApiResultStatusCode.BadRequest); - var orderBag = await _mediator.Send(new GetUserOrderBagQuery(), cancellationToken); + var orderBag = await mediator.Send(new GetUserOrderBagQuery(), cancellationToken); foreach (var requestDto in request.RequestDtos) { - var product = await _repositoryWrapper.SetRepository() + var product = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(p => p.Id == requestDto.ProductId, cancellationToken); @@ -37,9 +31,9 @@ public class RemoveFromOrderBagCommandHandler : IRequestHandler().Update(orderBag); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); - var order = await _mediator.Send(new CalculateOrderCommand(orderBag.Id), cancellationToken); + repositoryWrapper.SetRepository().Update(orderBag); + await repositoryWrapper.SaveChangesAsync(cancellationToken); + var order = await mediator.Send(new CalculateOrderCommand(orderBag.Id), cancellationToken); return order.AdaptToSDto(); } diff --git a/Netina.Core/EntityServices/OrderBagHandlers/SubmitDiscountActionCommandHandler.cs b/Netina.Core/EntityServices/OrderBagHandlers/SubmitDiscountActionCommandHandler.cs index ae6ec3c..dbe31b2 100644 --- a/Netina.Core/EntityServices/OrderBagHandlers/SubmitDiscountActionCommandHandler.cs +++ b/Netina.Core/EntityServices/OrderBagHandlers/SubmitDiscountActionCommandHandler.cs @@ -1,18 +1,11 @@ namespace Netina.Core.EntityServices.OrderBagHandlers; -public class SubmitDiscountActionCommandHandler : IRequestHandler +public class SubmitDiscountActionCommandHandler(IRepositoryWrapper repositoryWrapper, IMediator mediator) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly IMediator _mediator; - - public SubmitDiscountActionCommandHandler(IRepositoryWrapper repositoryWrapper, IMediator mediator) - { - _repositoryWrapper = repositoryWrapper; - _mediator = mediator; - } public async Task Handle(SubmitDiscountActionCommand request, CancellationToken cancellationToken) { - var order = await _repositoryWrapper.SetRepository() + var order = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(o => o.Id == request.OrderId, cancellationToken); if (order == null) @@ -20,13 +13,13 @@ public class SubmitDiscountActionCommandHandler : IRequestHandler() + var discount = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(d => d.Code == request.DiscountCode, cancellationToken); if (discount == null || discount.IsExpired()) throw new AppException("تخفیف منقضی شده است یا وجود ندارد", ApiResultStatusCode.NotFound); - var isFirstUserOfDiscount = await _mediator.Send(new CheckUserDiscountFirstUseCommand(request.DiscountCode), cancellationToken); + var isFirstUserOfDiscount = await mediator.Send(new CheckUserDiscountFirstUseCommand(request.DiscountCode), cancellationToken); if (!isFirstUserOfDiscount) throw new BaseApiException(ApiResultStatusCode.BadRequest, "شما یک بار از این کد تخفیف استفاده نموده اید و قابلیت استفاده مجدد ندارید"); @@ -36,9 +29,9 @@ public class SubmitDiscountActionCommandHandler : IRequestHandler().Update(order); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); - var calculateOrder = await _mediator.Send(new CalculateOrderCommand(order.Id), cancellationToken); + repositoryWrapper.SetRepository().Update(order); + await repositoryWrapper.SaveChangesAsync(cancellationToken); + var calculateOrder = await mediator.Send(new CalculateOrderCommand(order.Id), cancellationToken); return calculateOrder.AdaptToSDto(); } diff --git a/Netina.Core/EntityServices/OrderBagHandlers/SubmitOrderBagCommandHandler.cs b/Netina.Core/EntityServices/OrderBagHandlers/SubmitOrderBagCommandHandler.cs index 7622a62..8386ca8 100644 --- a/Netina.Core/EntityServices/OrderBagHandlers/SubmitOrderBagCommandHandler.cs +++ b/Netina.Core/EntityServices/OrderBagHandlers/SubmitOrderBagCommandHandler.cs @@ -1,31 +1,24 @@ namespace Netina.Core.EntityServices.OrderBagHandlers; -public class SubmitOrderBagCommandHandler : IRequestHandler +public class SubmitOrderBagCommandHandler( + IMediator mediator, + IRepositoryWrapper repositoryWrapper, + ICurrentUserService currentUserService) + : IRequestHandler { - private readonly IMediator _mediator; - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly ICurrentUserService _currentUserService; - - public SubmitOrderBagCommandHandler(IMediator mediator, IRepositoryWrapper repositoryWrapper, ICurrentUserService currentUserService) - { - _mediator = mediator; - _repositoryWrapper = repositoryWrapper; - _currentUserService = currentUserService; - } - public async Task Handle(SubmitOrderBagCommand request, CancellationToken cancellationToken) { - if (_currentUserService.UserId == null) + if (currentUserService.UserId == null) throw new AppException("Customer id notfound", ApiResultStatusCode.BadRequest); - if (!Guid.TryParse(_currentUserService.UserId, out Guid userId)) + if (!Guid.TryParse(currentUserService.UserId, out Guid userId)) throw new AppException("Customer id wrong", ApiResultStatusCode.BadRequest); - var orderBag = await _mediator.Send(new GetUserOrderBagQuery(), cancellationToken); + var orderBag = await mediator.Send(new GetUserOrderBagQuery(), cancellationToken); foreach (var requestDto in request.RequestDtos) { - var product = await _repositoryWrapper.SetRepository() + var product = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(p => p.Id == requestDto.ProductId, cancellationToken); @@ -35,7 +28,7 @@ public class SubmitOrderBagCommandHandler : IRequestHandlerop.ProductId==orderProduct.ProductId)==null) { orderBag.OrderProducts.Remove(orderProduct); - _repositoryWrapper.SetRepository().Delete(orderProduct); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Delete(orderProduct); + await repositoryWrapper.SaveChangesAsync(cancellationToken); } } - _repositoryWrapper.SetRepository().Update(orderBag); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Update(orderBag); + await repositoryWrapper.SaveChangesAsync(cancellationToken); - var order = await _mediator.Send(new CalculateOrderCommand(orderBag.Id), cancellationToken); + var order = await mediator.Send(new CalculateOrderCommand(orderBag.Id), cancellationToken); return order.AdaptToSDto(); } diff --git a/Netina.Core/EntityServices/OrderBagHandlers/SubmitOrderDeliveryCommandHandler.cs b/Netina.Core/EntityServices/OrderBagHandlers/SubmitOrderDeliveryCommandHandler.cs index 15b3616..abff301 100644 --- a/Netina.Core/EntityServices/OrderBagHandlers/SubmitOrderDeliveryCommandHandler.cs +++ b/Netina.Core/EntityServices/OrderBagHandlers/SubmitOrderDeliveryCommandHandler.cs @@ -2,26 +2,19 @@ namespace Netina.Core.EntityServices.OrderBagHandlers; -public class SubmitOrderDeliveryCommandHandler : IRequestHandler +public class SubmitOrderDeliveryCommandHandler(IMediator mediator, IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IMediator _mediator; - private readonly IRepositoryWrapper _repositoryWrapper; - - public SubmitOrderDeliveryCommandHandler(IMediator mediator, IRepositoryWrapper repositoryWrapper) - { - _mediator = mediator; - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(SubmitOrderDeliveryCommand request, CancellationToken cancellationToken) { - var order = await _repositoryWrapper.SetRepository() + var order = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(o => o.Id == request.OrderId, cancellationToken); if (order == null) throw new AppException("Order not found", ApiResultStatusCode.NotFound); - var orderDelivery = await _repositoryWrapper.SetRepository() + var orderDelivery = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(od => od.OrderId == request.OrderId, cancellationToken); if (orderDelivery != null) @@ -29,7 +22,7 @@ public class SubmitOrderDeliveryCommandHandler : IRequestHandler() + var shipping = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(s => s.Id == request.ShippingId, cancellationToken); if (shipping == null) @@ -37,10 +30,10 @@ public class SubmitOrderDeliveryCommandHandler : IRequestHandler().Update(order); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Update(order); + await repositoryWrapper.SaveChangesAsync(cancellationToken); - var calculatedOrder = await _mediator.Send(new CalculateOrderCommand(order.Id), cancellationToken); + var calculatedOrder = await mediator.Send(new CalculateOrderCommand(order.Id), cancellationToken); return calculatedOrder.AdaptToSDto(); } } \ No newline at end of file diff --git a/Netina.Core/EntityServices/ReviewHandlers/ConfirmReviewCommandHandler.cs b/Netina.Core/EntityServices/ReviewHandlers/ConfirmReviewCommandHandler.cs index 7b47f4f..5930633 100644 --- a/Netina.Core/EntityServices/ReviewHandlers/ConfirmReviewCommandHandler.cs +++ b/Netina.Core/EntityServices/ReviewHandlers/ConfirmReviewCommandHandler.cs @@ -1,23 +1,18 @@ namespace Netina.Core.EntityServices.ReviewHandlers; -public class ConfirmReviewCommandHandler : IRequestHandler +public class ConfirmReviewCommandHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public ConfirmReviewCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(ConfirmReviewCommand request, CancellationToken cancellationToken) { - var review = await _repositoryWrapper.SetRepository().TableNoTracking + var review = await repositoryWrapper.SetRepository().TableNoTracking .FirstOrDefaultAsync(r => r.Id == request.Id, cancellationToken); if (review == null) throw new AppException("Review not found", ApiResultStatusCode.NotFound); review.ConfirmReview(); - _repositoryWrapper.SetRepository().Update(review); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Update(review); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return true; } } \ No newline at end of file diff --git a/Netina.Core/EntityServices/UserService.cs b/Netina.Core/EntityServices/UserService.cs index 5657c59..7986557 100644 --- a/Netina.Core/EntityServices/UserService.cs +++ b/Netina.Core/EntityServices/UserService.cs @@ -1,33 +1,19 @@ namespace Netina.Core.EntityServices; -public class UserService : IUserService +public class UserService( + ICurrentUserService currentUserService, + UserManager userManager, + RoleManager roleManager, + IExternalFilesService externalFilesService, + IRepositoryWrapper repositoryWrapper) + : IUserService { - private readonly ICurrentUserService _currentUserService; - private readonly UserManager _userManager; - private readonly RoleManager _roleManager; - private readonly IExternalFilesService _externalFilesService; - private readonly IRepositoryWrapper _repositoryWrapper; - - public UserService(ICurrentUserService currentUserService, - UserManager userManager, - RoleManager roleManager, - IExternalFilesService externalFilesService, - IRepositoryWrapper repositoryWrapper) - { - _currentUserService = currentUserService; - _userManager = userManager; - _roleManager = roleManager; - _externalFilesService = externalFilesService; - _repositoryWrapper = repositoryWrapper; - } - - public async Task GetUserProfileAsync(CancellationToken cancellationToken) { - if (!Guid.TryParse(_currentUserService.UserId, out var userId)) + if (!Guid.TryParse(currentUserService.UserId, out var userId)) throw new AppException("Wrong Token", ApiResultStatusCode.UnAuthorized); - var user = await _userManager.FindByIdAsync(userId.ToString()); + var user = await userManager.FindByIdAsync(userId.ToString()); if (user == null) throw new AppException("User NotFound", ApiResultStatusCode.NotFound); @@ -36,14 +22,14 @@ public class UserService : IUserService //var userSDto = user.AdaptToSDto(); response.User = new ApplicationUserSDto(); - var userRoles = await _userManager.GetRolesAsync(user); + var userRoles = await userManager.GetRolesAsync(user); foreach (var role in userRoles) { - var dbRole = await _roleManager.FindByNameAsync(role); + var dbRole = await roleManager.FindByNameAsync(role); if (dbRole != null) { - var roleClaims = await _roleManager.GetClaimsAsync(dbRole); + var roleClaims = await roleManager.GetClaimsAsync(dbRole); response.Permissions.AddRange(roleClaims.Where(c => c.Type == "Permission").Select(c => c.Value).ToList()); } } @@ -57,23 +43,23 @@ public class UserService : IUserService List users; if (phoneNumber == null || phoneNumber.IsNullOrEmpty()) - users = await _userManager.Users + users = await userManager.Users .Where(u => u.UserName != "09214802813") .Skip(page * 15).Take(15) .Select(ApplicationUserMapper.ProjectToSDto) .ToListAsync(cancellationToken); else - users = await _userManager.Users + users = await userManager.Users .Where(a => a.PhoneNumber == phoneNumber && a.UserName != "09214802813") .Skip(page * 15).Take(15) .Select(ApplicationUserMapper.ProjectToSDto) .ToListAsync(cancellationToken); foreach (var user in users) { - var roles = await _userManager.GetRolesAsync(user.AdaptToApplicationUser()); + var roles = await userManager.GetRolesAsync(user.AdaptToApplicationUser()); foreach (var roleName in roles) { - var role = await _roleManager.FindByNameAsync(roleName); + var role = await roleManager.FindByNameAsync(roleName); if (role != null) user.RoleName += role.PersianName + " "; } @@ -85,20 +71,20 @@ public class UserService : IUserService public async Task GetUserAsync(Guid userId, CancellationToken cancellationToken = default) { - var user = await _userManager.FindByIdAsync(userId.ToString()); + var user = await userManager.FindByIdAsync(userId.ToString()); if (user == null) throw new AppException("User not found", ApiResultStatusCode.NotFound); var dto = user.AdaptToSDto(); - dto.IsMarketer = await _repositoryWrapper.SetRepository() + dto.IsMarketer = await repositoryWrapper.SetRepository() .TableNoTracking .AnyAsync(m => m.UserId == userId, cancellationToken); - dto.IsManager = await _repositoryWrapper.SetRepository() + dto.IsManager = await repositoryWrapper.SetRepository() .TableNoTracking .AnyAsync(m => m.UserId == userId, cancellationToken); - var roles = await _userManager.GetRolesAsync(user); + var roles = await userManager.GetRolesAsync(user); foreach (var roleName in roles) { - var role = await _roleManager.FindByNameAsync(roleName); + var role = await roleManager.FindByNameAsync(roleName); if (role != null) dto.RoleIds.Add(role.Id); } @@ -113,7 +99,7 @@ public class UserService : IUserService PhoneNumber = phoneNumber, SignUpStatus = SignUpStatus.StartSignOn }; - var result = await _userManager.CreateAsync(user); + var result = await userManager.CreateAsync(user); if (!result.Succeeded) throw new AppException(string.Join('|', result.Errors)); return user; @@ -122,7 +108,7 @@ public class UserService : IUserService public async Task CreateUserAsync(UserActionRequestDto request, CancellationToken cancellationToken) { - var user = await _userManager.FindByNameAsync(request.PhoneNumber); + var user = await userManager.FindByNameAsync(request.PhoneNumber); if (user == null) { user = new ApplicationUser @@ -140,13 +126,13 @@ public class UserService : IUserService if (!request.Password.IsNullOrEmpty()) { - var result = await _userManager.CreateAsync(user, request.Password); + var result = await userManager.CreateAsync(user, request.Password); if (!result.Succeeded) throw new AppException(string.Join('|', result.Errors.Select(e => e.Description))); } else { - var result = await _userManager.CreateAsync(user); + var result = await userManager.CreateAsync(user); if (!result.Succeeded) throw new AppException(string.Join('|', result.Errors.Select(e => e.Description))); } @@ -155,31 +141,31 @@ public class UserService : IUserService { foreach (var roleId in request.RoleIds) { - var role = await _roleManager.FindByIdAsync(roleId.ToString()); + var role = await roleManager.FindByIdAsync(roleId.ToString()); if (role is { Name: not null }) - await _userManager.AddToRoleAsync(user, role.Name); + await userManager.AddToRoleAsync(user, role.Name); } } - var customer = await _repositoryWrapper.SetRepository() + var customer = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(c => c.UserId == user.Id, cancellationToken); if (customer != null) { - _repositoryWrapper.SetRepository() + repositoryWrapper.SetRepository() .Add(new Customer { UserId = user.Id }); - await _repositoryWrapper.SaveChangesAsync(default); + await repositoryWrapper.SaveChangesAsync(default); } - _repositoryWrapper.SetRepository() + repositoryWrapper.SetRepository() .Add(new Manager { UserId = user.Id }); - await _repositoryWrapper.SaveChangesAsync(default); + await repositoryWrapper.SaveChangesAsync(default); } return user; } @@ -189,7 +175,7 @@ public class UserService : IUserService if (request.UserId == Guid.Empty) throw new AppException("Wrong authorize token , UserId needed"); - var user = await _userManager.FindByIdAsync(request.UserId.ToString()); + var user = await userManager.FindByIdAsync(request.UserId.ToString()); if (user == null) throw new AppException("User not found", ApiResultStatusCode.NotFound); user.LastName = request.LastName; @@ -202,29 +188,29 @@ public class UserService : IUserService user.BirthDate = DateTimeExtensions.UnixTimeStampToDateTime(request.BirthDateTimeStamp); user.Gender = request.Gender; - var result = await _userManager.UpdateAsync(user); + var result = await userManager.UpdateAsync(user); if (!result.Succeeded) throw new AppException(string.Join('|', result.Errors.Select(e => e.Description))); if (!request.Password.IsNullOrEmpty()) { - if (await _userManager.HasPasswordAsync(user)) - await _userManager.RemovePasswordAsync(user); + if (await userManager.HasPasswordAsync(user)) + await userManager.RemovePasswordAsync(user); - var addPassResult = await _userManager.AddPasswordAsync(user, request.Password); + var addPassResult = await userManager.AddPasswordAsync(user, request.Password); if (!addPassResult.Succeeded) throw new AppException(string.Join('|', addPassResult.Errors.Select(e => e.Description))); } if (request.RoleIds.Count > 0) { - var userRoles = await _userManager.GetRolesAsync(user); - await _userManager.RemoveFromRolesAsync(user, userRoles); + var userRoles = await userManager.GetRolesAsync(user); + await userManager.RemoveFromRolesAsync(user, userRoles); foreach (var roleId in request.RoleIds) { - var role = await _roleManager.FindByIdAsync(roleId.ToString()); + var role = await roleManager.FindByIdAsync(roleId.ToString()); if (role is { Name: not null }) { - await _userManager.AddToRoleAsync(user, role.Name); + await userManager.AddToRoleAsync(user, role.Name); } } } @@ -234,10 +220,10 @@ public class UserService : IUserService public async Task EditUserProfileAsync(UserActionRequestDto request, CancellationToken cancellationToken) { - if (_currentUserService.UserId == null) + if (currentUserService.UserId == null) throw new AppException("Wrong authorize token , UserId needed"); - var user = await _userManager.FindByIdAsync(_currentUserService.UserId); + var user = await userManager.FindByIdAsync(currentUserService.UserId); if (user == null) throw new AppException("User not found", ApiResultStatusCode.NotFound); user.LastName = request.LastName; @@ -250,15 +236,15 @@ public class UserService : IUserService user.BirthDate = DateTimeExtensions.UnixTimeStampToDateTime(request.BirthDateTimeStamp); user.Gender = request.Gender; - var result = await _userManager.UpdateAsync(user); + var result = await userManager.UpdateAsync(user); if (!result.Succeeded) throw new AppException(string.Join('|', result.Errors.Select(e => e.Description))); if (!request.Password.IsNullOrEmpty()) { - if (await _userManager.HasPasswordAsync(user)) - await _userManager.RemovePasswordAsync(user); + if (await userManager.HasPasswordAsync(user)) + await userManager.RemovePasswordAsync(user); - var addPassResult = await _userManager.AddPasswordAsync(user, request.Password); + var addPassResult = await userManager.AddPasswordAsync(user, request.Password); if (!addPassResult.Succeeded) throw new AppException(string.Join('|', addPassResult.Errors.Select(e => e.Description))); } @@ -268,34 +254,34 @@ public class UserService : IUserService public async Task RemoveUserAsync(Guid userId, CancellationToken cancellationToken) { - var user = await _userManager.FindByIdAsync(userId.ToString()); + var user = await userManager.FindByIdAsync(userId.ToString()); if (user == null) throw new AppException("User not found", ApiResultStatusCode.NotFound); - var roles = await _userManager.GetRolesAsync(user); - await _userManager.RemoveFromRolesAsync(user, roles); - var removeResult = await _userManager.DeleteAsync(user); + var roles = await userManager.GetRolesAsync(user); + await userManager.RemoveFromRolesAsync(user, roles); + var removeResult = await userManager.DeleteAsync(user); if (!removeResult.Succeeded) throw new AppException(string.Join('|', removeResult.Errors.Select(e => e.Description))); - var customer = await _repositoryWrapper.SetRepository() + var customer = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(c => c.UserId == userId, cancellationToken); if (customer != null) { - _repositoryWrapper.SetRepository() + repositoryWrapper.SetRepository() .Delete(customer); - await _repositoryWrapper.SaveChangesAsync(default); + await repositoryWrapper.SaveChangesAsync(default); } - var manager = await _repositoryWrapper.SetRepository() + var manager = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(c => c.UserId == userId, cancellationToken); if (manager != null) { - _repositoryWrapper.SetRepository() + repositoryWrapper.SetRepository() .Delete(manager); - await _repositoryWrapper.SaveChangesAsync(default); + await repositoryWrapper.SaveChangesAsync(default); } return true; @@ -303,26 +289,26 @@ public class UserService : IUserService public async Task GetAdminChangeLogAsync(CancellationToken cancellationToken = default) { - if (!Guid.TryParse(_currentUserService.UserId, out var userId)) + if (!Guid.TryParse(currentUserService.UserId, out var userId)) throw new AppException("Wrong Token", ApiResultStatusCode.UnAuthorized); - var user = await _userManager.FindByIdAsync(userId.ToString()); + var user = await userManager.FindByIdAsync(userId.ToString()); if (user == null) throw new AppException("User NotFound", ApiResultStatusCode.NotFound); - var manager = await _repositoryWrapper.SetRepository() + var manager = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(m => m.UserId == userId, cancellationToken); - var currentVersion = await _externalFilesService.GetAdminChangeLogAsync(cancellationToken); + var currentVersion = await externalFilesService.GetAdminChangeLogAsync(cancellationToken); if (manager != null) { if (!(manager.LatestVersionUsed < currentVersion.VersionNumber)) return currentVersion; currentVersion.IsNewVersion = true; manager.LatestVersionUsed = currentVersion.VersionNumber; - _repositoryWrapper.SetRepository() + repositoryWrapper.SetRepository() .Update(manager); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + await repositoryWrapper.SaveChangesAsync(cancellationToken); } return currentVersion; @@ -331,7 +317,7 @@ public class UserService : IUserService public async Task> GetRolesAsync(int page = 0, CancellationToken cancellationToken = default) { - var roles = await _roleManager.Roles + var roles = await roleManager.Roles .Where(r => r.Name != "RootAdmin") .Skip(page * 15) .Take(15) @@ -343,9 +329,9 @@ public class UserService : IUserService { IQueryable roles; if (roleName != null) - roles = _roleManager.Roles.Where(r => r.Name != "RootAdmin" && r.Name != "Customer" && r.PersianName.Trim().ToLower().Contains(roleName)); + roles = roleManager.Roles.Where(r => r.Name != "RootAdmin" && r.Name != "Customer" && r.PersianName.Trim().ToLower().Contains(roleName)); else - roles = _roleManager.Roles.Where(r => r.Name != "RootAdmin" && r.Name != "Customer"); + roles = roleManager.Roles.Where(r => r.Name != "RootAdmin" && r.Name != "Customer"); if (page != null) roles = roles.Skip(page.Value * 15).Take(15); else @@ -355,13 +341,13 @@ public class UserService : IUserService public async Task GetRoleAsync(Guid roleId, CancellationToken cancellationToken = default) { - var role = (await _roleManager.FindByIdAsync(roleId.ToString())); + var role = (await roleManager.FindByIdAsync(roleId.ToString())); if (role == null) throw new AppException("نقش پیدا نشد", ApiResultStatusCode.NotFound); var roleDto = role.Adapt(); roleDto.RoleId = roleId; - roleDto.Permissions = (await _roleManager.GetClaimsAsync(role)) + roleDto.Permissions = (await roleManager.GetClaimsAsync(role)) .Where(c => c.Type == CustomClaimType.Permission) .Select(c => c.Value) .ToList(); @@ -380,12 +366,12 @@ public class UserService : IUserService Description = request.Description, Name = $"{request.EnglishName}" }; - var createRoleResult = await _roleManager.CreateAsync(applicationRole); + var createRoleResult = await roleManager.CreateAsync(applicationRole); if (!createRoleResult.Succeeded) throw new AppException(string.Join('|', createRoleResult.Errors)); foreach (var claim in request.Permissions) - await _roleManager.AddClaimAsync(applicationRole, new Claim(CustomClaimType.Permission, claim)); + await roleManager.AddClaimAsync(applicationRole, new Claim(CustomClaimType.Permission, claim)); return applicationRole; } @@ -393,7 +379,7 @@ public class UserService : IUserService { if (request.EnglishName.IsNullOrEmpty()) throw new AppException("لطفا نام انگلیسی را وارد کنید"); - var applicationRole = await _roleManager.FindByIdAsync(request.RoleId.ToString()); + var applicationRole = await roleManager.FindByIdAsync(request.RoleId.ToString()); if (applicationRole == null) throw new AppException("نقش پیدا نشد"); @@ -402,20 +388,20 @@ public class UserService : IUserService applicationRole.Description = request.Description; applicationRole.Name = $"{request.EnglishName}"; - var createRoleResult = await _roleManager.UpdateAsync(applicationRole); + var createRoleResult = await roleManager.UpdateAsync(applicationRole); if (!createRoleResult.Succeeded) throw new AppException(string.Join('|', createRoleResult.Errors)); - var roleClaims = (await _roleManager.GetClaimsAsync(applicationRole)).Where(c => c.Type == CustomClaimType.Permission).ToList(); + var roleClaims = (await roleManager.GetClaimsAsync(applicationRole)).Where(c => c.Type == CustomClaimType.Permission).ToList(); foreach (var roleClaim in roleClaims.ToList()) { - var removeResult = await _roleManager.RemoveClaimAsync(applicationRole, roleClaim); + var removeResult = await roleManager.RemoveClaimAsync(applicationRole, roleClaim); if (!removeResult.Succeeded) throw new AppException(string.Join(" | ", removeResult.Errors.Select(e => e.Description))); } foreach (var claim in request.Permissions) { - var addResult = await _roleManager.AddClaimAsync(applicationRole, new Claim(CustomClaimType.Permission, claim)); + var addResult = await roleManager.AddClaimAsync(applicationRole, new Claim(CustomClaimType.Permission, claim)); if (!addResult.Succeeded) throw new AppException(string.Join(" | ", addResult.Errors.Select(e => e.Description))); } @@ -425,18 +411,18 @@ public class UserService : IUserService public async Task RemoveRoleAsync(Guid roleId, CancellationToken cancellationToken = default) { - var applicationRole = await _roleManager.FindByIdAsync(roleId.ToString()); + var applicationRole = await roleManager.FindByIdAsync(roleId.ToString()); if (applicationRole == null) throw new AppException("User not found", ApiResultStatusCode.NotFound); - var claims = await _roleManager.GetClaimsAsync(applicationRole); + var claims = await roleManager.GetClaimsAsync(applicationRole); foreach (var claim in claims) - await _roleManager.RemoveClaimAsync(applicationRole, claim); - var users = await _userManager.GetUsersInRoleAsync(applicationRole.Name); + await roleManager.RemoveClaimAsync(applicationRole, claim); + var users = await userManager.GetUsersInRoleAsync(applicationRole.Name); foreach (var user in users) - await _userManager.RemoveFromRoleAsync(user, applicationRole.Name); + await userManager.RemoveFromRoleAsync(user, applicationRole.Name); - var removeResult = await _roleManager.DeleteAsync(applicationRole); + var removeResult = await roleManager.DeleteAsync(applicationRole); if (!removeResult.Succeeded) throw new AppException(string.Join('|', removeResult.Errors.Select(e => e.Description))); return true; diff --git a/Netina.Core/Models/Api/ApiResult.cs b/Netina.Core/Models/Api/ApiResult.cs index bec2426..4186ffa 100644 --- a/Netina.Core/Models/Api/ApiResult.cs +++ b/Netina.Core/Models/Api/ApiResult.cs @@ -1,18 +1,11 @@ namespace Netina.Core.Models.Api; -public class ApiResult +public class ApiResult(bool isSuccess, ApiResultStatusCode statusCode, string message = null) { - public ApiResult(bool isSuccess, ApiResultStatusCode statusCode, string message = null) - { - IsSuccess = isSuccess; - StatusCode = statusCode; - Message = message ?? statusCode.ToDisplay(); - } - - public bool IsSuccess { get; set; } - public ApiResultStatusCode StatusCode { get; set; } + public bool IsSuccess { get; set; } = isSuccess; + public ApiResultStatusCode StatusCode { get; set; } = statusCode; [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] - public string Message { get; set; } + public string Message { get; set; } = message ?? statusCode.ToDisplay(); #region Implicit Operators @@ -61,17 +54,12 @@ public class ApiResult #endregion } -public class ApiResult : ApiResult +public class ApiResult(bool isSuccess, ApiResultStatusCode statusCode, TData data, string message = null) + : ApiResult(isSuccess, statusCode, message) where TData : class { - public ApiResult(bool isSuccess, ApiResultStatusCode statusCode, TData data, string message = null) - : base(isSuccess, statusCode, message) - { - Data = data; - } - [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] - public TData Data { get; set; } + public TData Data { get; set; } = data; #region Implicit Operators diff --git a/Netina.Core/QuartzServices/JobScheduler.cs b/Netina.Core/QuartzServices/JobScheduler.cs index 26843cc..420cf38 100644 --- a/Netina.Core/QuartzServices/JobScheduler.cs +++ b/Netina.Core/QuartzServices/JobScheduler.cs @@ -3,20 +3,11 @@ using Quartz; namespace Netina.Core.QuartzServices; -public class JobScheduler +public class JobScheduler(IScheduler scheduler, ILogger logger) { - private readonly IScheduler _scheduler; - private readonly ILogger _logger; - - public JobScheduler(IScheduler scheduler, ILogger logger) - { - _scheduler = scheduler; - _logger = logger; - } - public void Start() { - _scheduler.Start(); + scheduler.Start(); IJobDetail job = JobBuilder.Create() .WithIdentity("SiteMapJob", "admin") @@ -33,10 +24,10 @@ public class JobScheduler DayOfWeek.Friday)) .StartNow() .Build(); - var offset = _scheduler.ScheduleJob(job, trigger); + var offset = scheduler.ScheduleJob(job, trigger); - _logger.LogInformation($"======== Table Schedulers Set For {offset.Result.ToString()} IN {DateTime.Now.ToString()} ==========="); + logger.LogInformation($"======== Table Schedulers Set For {offset.Result.ToString()} IN {DateTime.Now.ToString()} ==========="); } } \ No newline at end of file diff --git a/Netina.Core/QuartzServices/SiteMapScheduledJob.cs b/Netina.Core/QuartzServices/SiteMapScheduledJob.cs index 8c18586..924c5a0 100644 --- a/Netina.Core/QuartzServices/SiteMapScheduledJob.cs +++ b/Netina.Core/QuartzServices/SiteMapScheduledJob.cs @@ -3,20 +3,12 @@ using Quartz; namespace Netina.Core.QuartzServices; -public class SiteMapScheduledJob : IJob +public class SiteMapScheduledJob(ILogger logger, ISiteMapService siteMapService) + : IJob { - private readonly ILogger _logger; - private readonly ISiteMapService _siteMapService; - - public SiteMapScheduledJob(ILogger logger,ISiteMapService siteMapService) - { - _logger = logger; - _siteMapService = siteMapService; - } - public async Task Execute(IJobExecutionContext context) { - await _siteMapService.CreateSiteMapAsync(); - _logger.LogInformation($"Site Map Job Done At : {DateTime.Now}"); + await siteMapService.CreateSiteMapAsync(); + logger.LogInformation($"Site Map Job Done At : {DateTime.Now}"); } } \ No newline at end of file diff --git a/Netina.Domain/Dtos/SmallDtos/StorageFileSDto.cs b/Netina.Domain/Dtos/SmallDtos/StorageFileSDto.cs index 2d1ee26..f6b4c6d 100644 --- a/Netina.Domain/Dtos/SmallDtos/StorageFileSDto.cs +++ b/Netina.Domain/Dtos/SmallDtos/StorageFileSDto.cs @@ -1,6 +1,4 @@ -using Microsoft.IdentityModel.Tokens; - -namespace Netina.Domain.Dtos.SmallDtos; +namespace Netina.Domain.Dtos.SmallDtos; public class StorageFileSDto : BaseDto { diff --git a/Netina.Domain/Entities/Blogs/Blog.Aggregate.cs b/Netina.Domain/Entities/Blogs/Blog.Aggregate.cs index c815276..34a9f8c 100644 --- a/Netina.Domain/Entities/Blogs/Blog.Aggregate.cs +++ b/Netina.Domain/Entities/Blogs/Blog.Aggregate.cs @@ -1,6 +1,4 @@ -using Microsoft.IdentityModel.Tokens; - -namespace Netina.Domain.Entities.Blogs; +namespace Netina.Domain.Entities.Blogs; public partial class Blog { diff --git a/Netina.Domain/Entities/Brands/Brand.cs b/Netina.Domain/Entities/Brands/Brand.cs index b8eaf1b..d9c3967 100644 --- a/Netina.Domain/Entities/Brands/Brand.cs +++ b/Netina.Domain/Entities/Brands/Brand.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Domain.Entities.Brands; +namespace Netina.Domain.Entities.Brands; [AdaptTwoWays("[name]LDto", IgnoreAttributes = new[] { typeof(AdaptIgnoreAttribute) }, MapType = MapType.Map | MapType.MapToTarget | MapType.Projection)] [AdaptTwoWays("[name]SDto", IgnoreAttributes = new[] { typeof(AdaptIgnoreAttribute) }, MapType = MapType.Map | MapType.MapToTarget)] diff --git a/Netina.Domain/Entities/ProductCategories/ProductCategory.Aggregate.cs b/Netina.Domain/Entities/ProductCategories/ProductCategory.Aggregate.cs index ddb03c3..1df9afe 100644 --- a/Netina.Domain/Entities/ProductCategories/ProductCategory.Aggregate.cs +++ b/Netina.Domain/Entities/ProductCategories/ProductCategory.Aggregate.cs @@ -1,6 +1,4 @@ -using System.Web; - -namespace Netina.Domain.Entities.ProductCategories; +namespace Netina.Domain.Entities.ProductCategories; public partial class ProductCategory { diff --git a/Netina.Domain/Entities/Products/Product.Aggregate.cs b/Netina.Domain/Entities/Products/Product.Aggregate.cs index 4fd02e4..5344e7c 100644 --- a/Netina.Domain/Entities/Products/Product.Aggregate.cs +++ b/Netina.Domain/Entities/Products/Product.Aggregate.cs @@ -1,7 +1,4 @@ -using System.Web; -using System.Xml.Linq; - -namespace Netina.Domain.Entities.Products; +namespace Netina.Domain.Entities.Products; public partial class Product { diff --git a/Netina.Domain/MartenEntities/Settings/NavMenuSetting.cs b/Netina.Domain/MartenEntities/Settings/NavMenuSetting.cs index 9fef450..94809dc 100644 --- a/Netina.Domain/MartenEntities/Settings/NavMenuSetting.cs +++ b/Netina.Domain/MartenEntities/Settings/NavMenuSetting.cs @@ -9,11 +9,7 @@ public class NavMenuSetting public class NavMenuItem { - public NavMenuItem() - { - Id = Guid.NewGuid(); - } - public Guid Id { get; set; } + public Guid Id { get; set; } = Guid.NewGuid(); public string Title { get; set; } = string.Empty; public string Url { get; set; } = string.Empty; public Guid ParentId { get; set; } diff --git a/Netina.Infrastructure/RestServices/IKaveNegarRestApi.cs b/Netina.Infrastructure/RestServices/IKaveNegarRestApi.cs index 2d8a115..b51f6ce 100644 --- a/Netina.Infrastructure/RestServices/IKaveNegarRestApi.cs +++ b/Netina.Infrastructure/RestServices/IKaveNegarRestApi.cs @@ -1,6 +1,4 @@ -using Netina.Infrastructure.Models.RestApi.KaveNegar; - -namespace Netina.Infrastructure.RestServices; +namespace Netina.Infrastructure.RestServices; public interface IKaveNegarRestApi { diff --git a/Netina.Infrastructure/RestServices/IRestApiWrapper.cs b/Netina.Infrastructure/RestServices/IRestApiWrapper.cs index a0939cd..1fbb838 100644 --- a/Netina.Infrastructure/RestServices/IRestApiWrapper.cs +++ b/Netina.Infrastructure/RestServices/IRestApiWrapper.cs @@ -1,5 +1,4 @@ -using Netina.Common.Models; -using Netina.Infrastructure.Models; +using Netina.Infrastructure.Models; namespace Netina.Infrastructure.RestServices; diff --git a/Netina.Infrastructure/Services/DistrictService.cs b/Netina.Infrastructure/Services/DistrictService.cs index eaf3152..b7da3ec 100644 --- a/Netina.Infrastructure/Services/DistrictService.cs +++ b/Netina.Infrastructure/Services/DistrictService.cs @@ -1,6 +1,4 @@ -using Netina.Common.Models.Exception; -using Netina.Core.Abstracts; -using Netina.Domain.Models.Districts; +using Netina.Domain.Models.Districts; using Netina.Infrastructure.Models; using Newtonsoft.Json; diff --git a/Netina.Infrastructure/Services/ExternalFilesService.cs b/Netina.Infrastructure/Services/ExternalFilesService.cs index 53fd279..c55ca4d 100644 --- a/Netina.Infrastructure/Services/ExternalFilesService.cs +++ b/Netina.Infrastructure/Services/ExternalFilesService.cs @@ -1,23 +1,15 @@ -using Netina.Core.Abstracts; -using Netina.Domain.Dtos.ResponseDtos; -using Netina.Domain.Models.Settings; -using Netina.Infrastructure.RestServices; +using Netina.Domain.Dtos.ResponseDtos; namespace Netina.Infrastructure.Services; -public class ExternalFilesService : IExternalFilesService +public class ExternalFilesService(IRestApiWrapper restApiWrapper, IOptionsSnapshot snapshot) + : IExternalFilesService { - private readonly IRestApiWrapper _restApiWrapper; - private readonly SiteSettings _siteSetting; + private readonly SiteSettings _siteSetting = snapshot.Value; - public ExternalFilesService(IRestApiWrapper restApiWrapper,IOptionsSnapshot snapshot) - { - _restApiWrapper = restApiWrapper; - _siteSetting = snapshot.Value; - } public async Task GetAdminChangeLogAsync(CancellationToken cancellationToken = default) { - var changeLog = await _restApiWrapper.FileRestApi(_siteSetting.AdminPanelBaseUrl).GetAdminChangeLog(); + var changeLog = await restApiWrapper.FileRestApi(_siteSetting.AdminPanelBaseUrl).GetAdminChangeLog(); return changeLog; } } \ No newline at end of file diff --git a/Netina.Infrastructure/Services/Scrapers/DigikalaScraper.cs b/Netina.Infrastructure/Services/Scrapers/DigikalaScraper.cs index d69c51a..45bcdb3 100644 --- a/Netina.Infrastructure/Services/Scrapers/DigikalaScraper.cs +++ b/Netina.Infrastructure/Services/Scrapers/DigikalaScraper.cs @@ -1,6 +1,5 @@ using MediatR; using Microsoft.EntityFrameworkCore; -using Microsoft.IdentityModel.Tokens; using Netina.Domain.CommandQueries.Commands; using Netina.Domain.Dtos.ScraperDtos.Response; using Netina.Domain.Dtos.SmallDtos; @@ -10,23 +9,16 @@ using Netina.Repository.Repositories.Base.Contracts; namespace Netina.Infrastructure.Services.Scrapers; -public class DigikalaScraper : IDigikalaScraper +public class DigikalaScraper( + IRestApiWrapper apiWrapper, + IRepositoryWrapper repositoryWrapper, + IMediator mediator, + IUploadFileService uploadFileService) + : IDigikalaScraper { - private readonly IRestApiWrapper _apiWrapper; - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly IMediator _mediator; - private readonly IUploadFileService _uploadFileService; - - public DigikalaScraper(IRestApiWrapper apiWrapper, IRepositoryWrapper repositoryWrapper, IMediator mediator, IUploadFileService uploadFileService) - { - _apiWrapper = apiWrapper; - _repositoryWrapper = repositoryWrapper; - _mediator = mediator; - _uploadFileService = uploadFileService; - } public async Task> GetProductsByNameAsync(string productName) { - var products = await _apiWrapper.DigikalaRestApi.SearchProductAsync(productName); + var products = await apiWrapper.DigikalaRestApi.SearchProductAsync(productName); return products.data.products.Select(s => new ScraperProductDto { PersianName = s.title_fa, @@ -40,7 +32,7 @@ public class DigikalaScraper : IDigikalaScraper public async Task AddProductToShopAsync(string productId, string productName, CancellationToken cancellationToken = default) { - var response = await _apiWrapper.DigikalaRestApi.GetProductAsync(productId); + var response = await apiWrapper.DigikalaRestApi.GetProductAsync(productId); var digiProduct = response.data; var newSummery = digiProduct.seo.description.Replace("فروشگاه اینترنتی دیجی\u200cکالا", "فروشگاه اینترنتی وسمه"); @@ -63,7 +55,7 @@ public class DigikalaScraper : IDigikalaScraper FileUploadType = FileUploadType.Image, ContentType = "image/jpeg" }; - var uploadResponse = await _uploadFileService.UploadImageAsync(uploadFile); + var uploadResponse = await uploadFileService.UploadImageAsync(uploadFile); var files = new List { new StorageFileSDto @@ -73,26 +65,26 @@ public class DigikalaScraper : IDigikalaScraper IsPrimary = true, } }; - var nonBrand = await _repositoryWrapper.SetRepository() + var nonBrand = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(b => b.PersianName == "بدون برند", cancellationToken); if (nonBrand == null) { nonBrand = Brand.Create("بدون برند" , "NoBrand","محصولات بدون برند",false,string.Empty); - _repositoryWrapper.SetRepository() + repositoryWrapper.SetRepository() .Add(nonBrand); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + await repositoryWrapper.SaveChangesAsync(cancellationToken); } - var nonCat = await _repositoryWrapper.SetRepository() + var nonCat = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(b => b.Name == "دسته بندی نشده", cancellationToken); if (nonCat == null) { nonCat = ProductCategory.Create("دسته بندی نشده", "محصولات بدون دسته بندی", false); - _repositoryWrapper.SetRepository() + repositoryWrapper.SetRepository() .Add(nonCat); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + await repositoryWrapper.SaveChangesAsync(cancellationToken); } if (digiProduct.product.title_en.IsNullOrEmpty()) @@ -103,7 +95,7 @@ public class DigikalaScraper : IDigikalaScraper string.Empty, string.Empty, string.Empty, true, 0, 0, 0, false , 5, false, nonBrand.Id, nonCat.Id, new DiscountSDto(), specifications, files,new Dictionary(),new Dictionary()); - await _mediator.Send(request, cancellationToken); + await mediator.Send(request, cancellationToken); return true; } diff --git a/Netina.Infrastructure/Services/SmsService.cs b/Netina.Infrastructure/Services/SmsService.cs index 78caf85..b98aca6 100644 --- a/Netina.Infrastructure/Services/SmsService.cs +++ b/Netina.Infrastructure/Services/SmsService.cs @@ -1,25 +1,17 @@ namespace Netina.Infrastructure.Services; -public class SmsService : ISmsService +public class SmsService( + IRestApiWrapper restApiWrapper, + IOptionsSnapshot optionsSnapshot, + ILogger logger, + IHostEnvironment environment) + : ISmsService { - private readonly IRestApiWrapper _restApiWrapper; - private readonly ILogger _logger; - private readonly IHostEnvironment _environment; - private readonly SiteSettings _siteSettings; - public SmsService( - IRestApiWrapper restApiWrapper, - IOptionsSnapshot optionsSnapshot, - ILogger logger, - IHostEnvironment environment) - { - _restApiWrapper = restApiWrapper; - _logger = logger; - _environment = environment; - _siteSettings = optionsSnapshot.Value; - } + private readonly SiteSettings _siteSettings = optionsSnapshot.Value; + public async Task SendForgerPasswordAsync(string phoneNumber, string newPassword) { - var rest = await _restApiWrapper.KaveNegarRestApi.SendLookUp(_siteSettings.KaveNegarApiKey, phoneNumber, newPassword, + var rest = await restApiWrapper.KaveNegarRestApi.SendLookUp(_siteSettings.KaveNegarApiKey, phoneNumber, newPassword, null, null , null, null, "forgetPassword"); @@ -32,24 +24,24 @@ public class SmsService : ISmsService try { - var rest = await _restApiWrapper.KaveNegarRestApi.SendLookUp(_siteSettings.KaveNegarApiKey, phoneNumber, _siteSettings.LoginOtpTemplate,verifyCode); + var rest = await restApiWrapper.KaveNegarRestApi.SendLookUp(_siteSettings.KaveNegarApiKey, phoneNumber, _siteSettings.LoginOtpTemplate,verifyCode); - if (rest.Return.status != 200 && _environment.IsProduction()) + if (rest.Return.status != 200 && environment.IsProduction()) throw new BaseApiException(ApiResultStatusCode.SendSmsError, rest.Return.message); } catch (ApiException apiException) { - if (_environment.IsProduction()) + if (environment.IsProduction()) throw; else - _logger.LogError(apiException.Message); + logger.LogError(apiException.Message); } catch (Exception apiException) { - if (_environment.IsProduction()) + if (environment.IsProduction()) throw; else - _logger.LogError(apiException.Message); + logger.LogError(apiException.Message); } } @@ -57,18 +49,18 @@ public class SmsService : ISmsService { try { - var rest = await _restApiWrapper.KaveNegarRestApi.SendLookUp(_siteSettings.KaveNegarApiKey, phoneNumber,template,token,token2,token3,token10,token20); + var rest = await restApiWrapper.KaveNegarRestApi.SendLookUp(_siteSettings.KaveNegarApiKey, phoneNumber,template,token,token2,token3,token10,token20); if (rest.Return.status != 200) throw new BaseApiException(ApiResultStatusCode.SendSmsError, rest.Return.message); } catch (ApiException apiException) { - _logger.LogError(apiException.Message); + logger.LogError(apiException.Message); } catch (Exception apiException) { - _logger.LogError(apiException.Message); + logger.LogError(apiException.Message); } } diff --git a/Netina.Infrastructure/Services/StorageService.cs b/Netina.Infrastructure/Services/StorageService.cs index 1522ef1..debf187 100644 --- a/Netina.Infrastructure/Services/StorageService.cs +++ b/Netina.Infrastructure/Services/StorageService.cs @@ -1,24 +1,14 @@ -using Netina.Common.Extensions; -using Netina.Core.Abstracts; -using Netina.Domain.Dtos.SmallDtos; +using Netina.Domain.Dtos.SmallDtos; using Netina.Domain.Enums; -using Netina.Domain.Models.Settings; namespace Netina.Infrastructure.Services; -public class StorageService : IStorageService +public class StorageService(IOptionsSnapshot snapshot) : IStorageService { private IAmazonS3? _s3Client; - private readonly string _bucketName; - private readonly string _accessKey; - private readonly string _secretKey; - - public StorageService(IOptionsSnapshot snapshot) - { - _accessKey = snapshot.Value.StorageSetting.AccessKey; - _bucketName = snapshot.Value.StorageSetting.BucketKey; - _secretKey = snapshot.Value.StorageSetting.SecretKey; - } + private readonly string _bucketName = snapshot.Value.StorageSetting.BucketKey; + private readonly string _accessKey = snapshot.Value.StorageSetting.AccessKey; + private readonly string _secretKey = snapshot.Value.StorageSetting.SecretKey; private IAmazonS3 GetClientAsync() { diff --git a/Netina.Infrastructure/Services/UploadFileService.cs b/Netina.Infrastructure/Services/UploadFileService.cs index f2778bd..27fa15f 100644 --- a/Netina.Infrastructure/Services/UploadFileService.cs +++ b/Netina.Infrastructure/Services/UploadFileService.cs @@ -1,21 +1,12 @@ -using Netina.Common.Extensions; -using Netina.Common.Models.Api; -using Netina.Core.Abstracts; -using Netina.Core.Utilities; +using Netina.Core.Utilities; namespace Netina.Infrastructure.Services; -public class UploadFileService : IUploadFileService +public class UploadFileService(IStorageService storageService, IOptionsSnapshot optionsSnapshot) + : IUploadFileService { - private readonly IStorageService _storageService; - private readonly SiteSettings _siteSetting; + private readonly SiteSettings _siteSetting = optionsSnapshot.Value; - public UploadFileService(IStorageService storageService,IOptionsSnapshot optionsSnapshot) - { - _storageService = storageService; - _siteSetting = optionsSnapshot.Value; - - } public async Task UploadImageAsync(FileUploadRequest uploadRequest) { var bytes = Convert.FromBase64String(uploadRequest.StringBaseFile); @@ -30,13 +21,13 @@ public class UploadFileService : IUploadFileService if (uploadRequest.FileUploadType == FileUploadType.Logo) { uploadRequest.FileName = $"Main.{uploadRequest.FileName.Split('.').Last()}"; - medFileName = await _storageService.UploadObjectFromFileAsync(uploadRequest.FileName, $"{uploadRequest.FileUploadType.ToDisplay()}/Med", uploadRequest.ContentType, mediumFileStream,false); - await _storageService.UploadObjectFromFileAsync(medFileName, $"{uploadRequest.FileUploadType.ToDisplay()}/Thumb", uploadRequest.ContentType, thumbnailFileStream, false); + medFileName = await storageService.UploadObjectFromFileAsync(uploadRequest.FileName, $"{uploadRequest.FileUploadType.ToDisplay()}/Med", uploadRequest.ContentType, mediumFileStream,false); + await storageService.UploadObjectFromFileAsync(medFileName, $"{uploadRequest.FileUploadType.ToDisplay()}/Thumb", uploadRequest.ContentType, thumbnailFileStream, false); } else { - medFileName = await _storageService.UploadObjectFromFileAsync(uploadRequest.FileName, $"{uploadRequest.FileUploadType.ToDisplay()}/Med", uploadRequest.ContentType, mediumFileStream); - await _storageService.UploadObjectFromFileAsync(medFileName, $"{uploadRequest.FileUploadType.ToDisplay()}/Thumb", uploadRequest.ContentType, thumbnailFileStream, false); + medFileName = await storageService.UploadObjectFromFileAsync(uploadRequest.FileName, $"{uploadRequest.FileUploadType.ToDisplay()}/Med", uploadRequest.ContentType, mediumFileStream); + await storageService.UploadObjectFromFileAsync(medFileName, $"{uploadRequest.FileUploadType.ToDisplay()}/Thumb", uploadRequest.ContentType, thumbnailFileStream, false); } var response = new FileUploadResponse @@ -51,7 +42,7 @@ public class UploadFileService : IUploadFileService public async Task UploadFileByteAsync(FileUploadRequest uploadRequest) { - var medFileName = await _storageService.UploadObjectFromFileAsync(uploadRequest.FileName, $"{uploadRequest.FileUploadType.ToDisplay()}", uploadRequest.ContentType, uploadRequest.FileBytes,false); + var medFileName = await storageService.UploadObjectFromFileAsync(uploadRequest.FileName, $"{uploadRequest.FileUploadType.ToDisplay()}", uploadRequest.ContentType, uploadRequest.FileBytes,false); var response = new FileUploadResponse { FileName = medFileName, diff --git a/Netina.Infrastructure/Services/ZarinpalService.cs b/Netina.Infrastructure/Services/ZarinpalService.cs index d55f45b..064c42d 100644 --- a/Netina.Infrastructure/Services/ZarinpalService.cs +++ b/Netina.Infrastructure/Services/ZarinpalService.cs @@ -1,35 +1,26 @@ using MediatR; -using Microsoft.IdentityModel.Tokens; -using Netina.Common.Models.Exception; -using Netina.Core.Abstracts; using Netina.Core.BaseServices.Abstracts; using Netina.Domain.CommandQueries.Commands; using Netina.Domain.CommandQueries.Queries; using Netina.Domain.Enums; using Netina.Domain.MartenEntities.Settings; -using Netina.Domain.Models.Settings; using Netina.Infrastructure.Models.RestApi.Zarinpal; -using Netina.Infrastructure.RestServices; using Newtonsoft.Json; namespace Netina.Infrastructure.Services; -public class ZarinpalService : IPaymentService +public class ZarinpalService( + IRestApiWrapper restApiWrapper, + IOptionsSnapshot snapshot, + IMediator mediator, + ISettingService settingService) + : IPaymentService { - private readonly IRestApiWrapper _restApiWrapper; - private readonly IMediator _mediator; - private readonly ISettingService _settingService; - private readonly SiteSettings _siteSettings; - public ZarinpalService(IRestApiWrapper restApiWrapper, IOptionsSnapshot snapshot, IMediator mediator , ISettingService settingService) - { - _restApiWrapper = restApiWrapper; - _mediator = mediator; - _settingService = settingService; - _siteSettings = snapshot.Value; - } + private readonly SiteSettings _siteSettings = snapshot.Value; + public async Task GetPaymentLinkAsync(double amount, string factorNumber, Guid orderId, Guid userId, string phoneNumber, string fullName, CancellationToken cancellationToken = default) { - var paymentSetting = (await _settingService.GetSettingAsync("PaymentSetting", cancellationToken)) as PaymentSetting; + var paymentSetting = (await settingService.GetSettingAsync("PaymentSetting", cancellationToken)) as PaymentSetting; if (paymentSetting == null) throw new AppException("تنظیمات پرداخت انجام نشده است"); if (paymentSetting.ZarinPalApiKey.IsNullOrEmpty()) @@ -43,13 +34,13 @@ public class ZarinpalService : IPaymentService merchant_id = paymentSetting.ZarinPalApiKey, metadata = new ZarinaplPaymentLinkRequestMetadata { mobile = phoneNumber } }; - var responseJson = await _restApiWrapper.ZarinpalRestApi.GetPaymentLinkAsync(request); + var responseJson = await restApiWrapper.ZarinpalRestApi.GetPaymentLinkAsync(request); var response = JsonConvert.DeserializeObject(responseJson); if (response.data.code != 100) throw new AppException($"Exception in get link from zarinpal | {response.data.message}"); - var createPaymentResult = await _mediator.Send(new CreateOrUpdatePaymentCommand(null, factorNumber, amount, + var createPaymentResult = await mediator.Send(new CreateOrUpdatePaymentCommand(null, factorNumber, amount, request.description, string.Empty, string.Empty, response.data.authority, PaymentType.Online, PaymentStatus.InPaymentGateway, orderId, userId), cancellationToken); @@ -59,20 +50,20 @@ public class ZarinpalService : IPaymentService public async Task> VerifyPaymentAsync(string authority, CancellationToken cancellationToken = default) { - var paymentSetting = (await _settingService.GetSettingAsync("PaymentSetting", cancellationToken)) as PaymentSetting; + var paymentSetting = (await settingService.GetSettingAsync("PaymentSetting", cancellationToken)) as PaymentSetting; if (paymentSetting == null) throw new AppException("تنظیمات پرداخت انجام نشده است"); if (paymentSetting.ZarinPalApiKey.IsNullOrEmpty()) throw new AppException("کد مرچنت زرین پال وارد نشده است"); - var payment = await _mediator.Send(new GetPaymentQuery(Authority: authority), cancellationToken); + var payment = await mediator.Send(new GetPaymentQuery(Authority: authority), cancellationToken); var request = new ZarinaplVerifyPaymentRequest { amount = (int)payment.Amount, authority = payment.Authority, merchant_id = paymentSetting.ZarinPalApiKey }; - var response = await _restApiWrapper.ZarinpalRestApi.VerifyPaymentAsync(request); + var response = await restApiWrapper.ZarinpalRestApi.VerifyPaymentAsync(request); if (response.data.code != 100) throw new AppException($"Exception in get link from zarinpal | {response.data.message}"); @@ -80,11 +71,11 @@ public class ZarinpalService : IPaymentService payment.CardPan = response.data.card_pan; payment.TransactionCode = response.data.ref_id.ToString(); - await _mediator.Send(new CreateOrUpdatePaymentCommand(payment.Id, payment.FactorNumber, payment.Amount, payment.Description, + await mediator.Send(new CreateOrUpdatePaymentCommand(payment.Id, payment.FactorNumber, payment.Amount, payment.Description, payment.TransactionCode, payment.CardPan, payment.Authority, payment.Type, payment.Status, payment.OrderId, payment.CustomerId), cancellationToken); - await _mediator.Send(new SubmitOrderPaymentCommand(payment.OrderId, OrderPaymentMethod.OnlinePayment, true), + await mediator.Send(new SubmitOrderPaymentCommand(payment.OrderId, OrderPaymentMethod.OnlinePayment, true), cancellationToken); return new Tuple(payment.TransactionCode, payment.FactorNumber); diff --git a/Netina.Repository/Behaviors/ValidationBehavior.cs b/Netina.Repository/Behaviors/ValidationBehavior.cs index 1f8599c..8d0c2b3 100644 --- a/Netina.Repository/Behaviors/ValidationBehavior.cs +++ b/Netina.Repository/Behaviors/ValidationBehavior.cs @@ -3,19 +3,15 @@ using ValidationException = Netina.Common.Models.Exception.ValidationException; namespace Netina.Repository.Behaviors; -public class ValidationBehavior : IPipelineBehavior where TRequest : notnull +public class ValidationBehavior(IEnumerable> validators) + : IPipelineBehavior + where TRequest : notnull { - private readonly IEnumerable> _validators; - - public ValidationBehavior(IEnumerable> validators) - { - _validators = validators; - } public async Task Handle(TRequest request, RequestHandlerDelegate next, CancellationToken cancellationToken) { var context = new ValidationContext(request); List errors = new List(); - foreach (IValidator validator in _validators) + foreach (IValidator validator in validators) { var result = await validator.ValidateAsync(context, cancellationToken); if (!result.IsValid) diff --git a/Netina.Repository/Extensions/DbContextOptionCustomExtensionsInfo.cs b/Netina.Repository/Extensions/DbContextOptionCustomExtensionsInfo.cs index 4f3072f..a22ed7b 100644 --- a/Netina.Repository/Extensions/DbContextOptionCustomExtensionsInfo.cs +++ b/Netina.Repository/Extensions/DbContextOptionCustomExtensionsInfo.cs @@ -1,14 +1,10 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Infrastructure; namespace Netina.Repository.Extensions; -public class DbContextOptionCustomExtensionsInfo : DbContextOptionsExtensionInfo +public class DbContextOptionCustomExtensionsInfo(IDbContextOptionsExtension extension) + : DbContextOptionsExtensionInfo(extension) { - public DbContextOptionCustomExtensionsInfo(IDbContextOptionsExtension extension) : base(extension) - { - } - public override bool IsDatabaseProvider { get; } public override string LogFragment { get; } = string.Empty; diff --git a/Netina.Repository/Extensions/ModelBuilderExtensions.cs b/Netina.Repository/Extensions/ModelBuilderExtensions.cs index 3ad87e4..7558d0a 100644 --- a/Netina.Repository/Extensions/ModelBuilderExtensions.cs +++ b/Netina.Repository/Extensions/ModelBuilderExtensions.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Extensions; +namespace Netina.Repository.Extensions; public class ModelBuilderQueryFilter { diff --git a/Netina.Repository/Handlers/Accounting/CreateOrUpdatePaymentCommandHandler.cs b/Netina.Repository/Handlers/Accounting/CreateOrUpdatePaymentCommandHandler.cs index 39b7566..f835922 100644 --- a/Netina.Repository/Handlers/Accounting/CreateOrUpdatePaymentCommandHandler.cs +++ b/Netina.Repository/Handlers/Accounting/CreateOrUpdatePaymentCommandHandler.cs @@ -1,21 +1,15 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Accounting; +using Netina.Domain.Entities.Accounting; namespace Netina.Repository.Handlers.Accounting; -public class CreateOrUpdatePaymentCommandHandler : IRequestHandler +public class CreateOrUpdatePaymentCommandHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public CreateOrUpdatePaymentCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(CreateOrUpdatePaymentCommand request, CancellationToken cancellationToken) { if (request.Id != null) { - var ent = await _repositoryWrapper.SetRepository() + var ent = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(p => p.Id == request.Id, cancellationToken); if (ent == null) @@ -27,14 +21,14 @@ public class CreateOrUpdatePaymentCommandHandler : IRequestHandler() + repositoryWrapper.SetRepository() .Update(newEnt); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + await repositoryWrapper.SaveChangesAsync(cancellationToken); } else { - var orderPayment = await _repositoryWrapper.SetRepository() + var orderPayment = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(p => p.OrderId == request.OrderId && p.Type == request.Type,cancellationToken); if (orderPayment != null) @@ -45,20 +39,20 @@ public class CreateOrUpdatePaymentCommandHandler : IRequestHandler() + repositoryWrapper.SetRepository() .Update(newEnt); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + await repositoryWrapper.SaveChangesAsync(cancellationToken); } else { var payment = Payment.Create(request.FactorNumber, request.Amount, request.Description, request.TransactionCode, request.CardPan, request.Authority, request.Type, request.Status, request.OrderId, request.UserId); - _repositoryWrapper.SetRepository() + repositoryWrapper.SetRepository() .Add(payment); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + await repositoryWrapper.SaveChangesAsync(cancellationToken); } } return true; diff --git a/Netina.Repository/Handlers/Accounting/GetPaymentQueryHandler.cs b/Netina.Repository/Handlers/Accounting/GetPaymentQueryHandler.cs index 3f88cef..d71a695 100644 --- a/Netina.Repository/Handlers/Accounting/GetPaymentQueryHandler.cs +++ b/Netina.Repository/Handlers/Accounting/GetPaymentQueryHandler.cs @@ -1,22 +1,16 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Accounting; +using Netina.Domain.Entities.Accounting; namespace Netina.Repository.Handlers.Accounting; -public class GetPaymentQueryHandler : IRequestHandler +public class GetPaymentQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetPaymentQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(GetPaymentQuery request, CancellationToken cancellationToken) { PaymentSDto? payment = null; if (request.Authority != null) { - payment = await _repositoryWrapper.SetRepository() + payment = await repositoryWrapper.SetRepository() .TableNoTracking .Where(p => p.Authority == request.Authority) .Select(PaymentMapper.ProjectToSDto) @@ -27,7 +21,7 @@ public class GetPaymentQueryHandler : IRequestHandler() + payment = await repositoryWrapper.SetRepository() .TableNoTracking .Where(p => p.Id == request.Id) .Select(PaymentMapper.ProjectToSDto) diff --git a/Netina.Repository/Handlers/Accounting/GetPaymentsQueryHandler.cs b/Netina.Repository/Handlers/Accounting/GetPaymentsQueryHandler.cs index 9ccd533..c22fcc6 100644 --- a/Netina.Repository/Handlers/Accounting/GetPaymentsQueryHandler.cs +++ b/Netina.Repository/Handlers/Accounting/GetPaymentsQueryHandler.cs @@ -1,19 +1,13 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Accounting; +using Netina.Domain.Entities.Accounting; namespace Netina.Repository.Handlers.Accounting; -public class GetPaymentsQueryHandler : IRequestHandler> +public class GetPaymentsQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler> { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetPaymentsQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task> Handle(GetPaymentsQuery request, CancellationToken cancellationToken) { - return await _repositoryWrapper.SetRepository() + return await repositoryWrapper.SetRepository() .TableNoTracking .OrderByDescending(o=>o.CreatedAt) .Skip(20 * request.Page) diff --git a/Netina.Repository/Handlers/Addresses/CreateAddressCommandHandler.cs b/Netina.Repository/Handlers/Addresses/CreateAddressCommandHandler.cs index f9e5a74..b930fcd 100644 --- a/Netina.Repository/Handlers/Addresses/CreateAddressCommandHandler.cs +++ b/Netina.Repository/Handlers/Addresses/CreateAddressCommandHandler.cs @@ -1,20 +1,13 @@ namespace Netina.Repository.Handlers.Addresses; -public class CreateAddressCommandHandler : IRequestHandler +public class CreateAddressCommandHandler(IRepositoryWrapper repositoryWrapper, ICurrentUserService currentUserService) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly ICurrentUserService _currentUserService; - - public CreateAddressCommandHandler(IRepositoryWrapper repositoryWrapper,ICurrentUserService currentUserService) - { - _repositoryWrapper = repositoryWrapper; - _currentUserService = currentUserService; - } public async Task Handle(CreateAddressCommand request, CancellationToken cancellationToken) { - if (_currentUserService.UserId == null) + if (currentUserService.UserId == null) throw new AppException("User id notfound", ApiResultStatusCode.BadRequest); - if (!Guid.TryParse(_currentUserService.UserId, out Guid userId)) + if (!Guid.TryParse(currentUserService.UserId, out Guid userId)) throw new AppException("User id wrong", ApiResultStatusCode.BadRequest); @@ -22,8 +15,8 @@ public class CreateAddressCommandHandler : IRequestHandler().Add(ent); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Add(ent); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return false; } } \ No newline at end of file diff --git a/Netina.Repository/Handlers/Addresses/DeleteAddressCommandHandler.cs b/Netina.Repository/Handlers/Addresses/DeleteAddressCommandHandler.cs index ad5436b..5e12053 100644 --- a/Netina.Repository/Handlers/Addresses/DeleteAddressCommandHandler.cs +++ b/Netina.Repository/Handlers/Addresses/DeleteAddressCommandHandler.cs @@ -1,25 +1,18 @@ -using Microsoft.EntityFrameworkCore; +namespace Netina.Repository.Handlers.Addresses; -namespace Netina.Repository.Handlers.Addresses; - -public class DeleteAddressCommandHandler : IRequestHandler +public class DeleteAddressCommandHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public DeleteAddressCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(DeleteAddressCommand request, CancellationToken cancellationToken) { - var ent = await _repositoryWrapper.SetRepository() + var ent = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(u => u.Id == request.Id, cancellationToken); if (ent == null) throw new AppException("Address not found", ApiResultStatusCode.NotFound); - _repositoryWrapper.SetRepository() + repositoryWrapper.SetRepository() .Delete(ent); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return true; } } \ No newline at end of file diff --git a/Netina.Repository/Handlers/Addresses/GetUserAddressesQueryHandler.cs b/Netina.Repository/Handlers/Addresses/GetUserAddressesQueryHandler.cs index cd0633d..3018381 100644 --- a/Netina.Repository/Handlers/Addresses/GetUserAddressesQueryHandler.cs +++ b/Netina.Repository/Handlers/Addresses/GetUserAddressesQueryHandler.cs @@ -1,17 +1,8 @@ -using Microsoft.EntityFrameworkCore; +namespace Netina.Repository.Handlers.Addresses; -namespace Netina.Repository.Handlers.Addresses; - -public class GetUserAddressesQueryHandler : IRequestHandler> +public class GetUserAddressesQueryHandler(IRepositoryWrapper repositoryWrapper, ICurrentUserService currentUserService) + : IRequestHandler> { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly ICurrentUserService _currentUserService; - - public GetUserAddressesQueryHandler(IRepositoryWrapper repositoryWrapper, ICurrentUserService currentUserService) - { - _repositoryWrapper = repositoryWrapper; - _currentUserService = currentUserService; - } public async Task> Handle(GetUserAddressesQuery request, CancellationToken cancellationToken) { Guid userId; @@ -19,13 +10,13 @@ public class GetUserAddressesQueryHandler : IRequestHandler() + return await repositoryWrapper.SetRepository() .TableNoTracking .Where(ua => ua.UserId == userId) .Select(UserAddressMapper.ProjectToSDto) diff --git a/Netina.Repository/Handlers/Blogs/GetBlogsQueryHandler.cs b/Netina.Repository/Handlers/Blogs/GetBlogsQueryHandler.cs index 3a0457f..46324e6 100644 --- a/Netina.Repository/Handlers/Blogs/GetBlogsQueryHandler.cs +++ b/Netina.Repository/Handlers/Blogs/GetBlogsQueryHandler.cs @@ -1,23 +1,17 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Blogs; +using Netina.Domain.Entities.Blogs; namespace Netina.Repository.Handlers.Blogs; -public class GetBlogsQueryHandler : IRequestHandler +public class GetBlogsQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetBlogsQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle (GetBlogsQuery request, CancellationToken cancellationToken) { var response = new GetBlogsResponseDto(); int count = 20; if (request.Count != null) count = request.Count.Value; - var query = _repositoryWrapper.SetRepository().TableNoTracking; + var query = repositoryWrapper.SetRepository().TableNoTracking; if (request.CategoryId != null) query = query.Where(b => b.CategoryId == request.CategoryId); if (request.BlogName != null) diff --git a/Netina.Repository/Handlers/Brands/DeleteBrandCommandHandler.cs b/Netina.Repository/Handlers/Brands/DeleteBrandCommandHandler.cs index 8a253b8..4248fb3 100644 --- a/Netina.Repository/Handlers/Brands/DeleteBrandCommandHandler.cs +++ b/Netina.Repository/Handlers/Brands/DeleteBrandCommandHandler.cs @@ -1,24 +1,17 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Brands; +using Netina.Domain.Entities.Brands; namespace Netina.Repository.Handlers.Brands; -public class DeleteBrandCommandHandler : IRequestHandler +public class DeleteBrandCommandHandler(IRepositoryWrapper repositoryWrapper) : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public DeleteBrandCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(DeleteBrandCommand request, CancellationToken cancellationToken) { - var ent = await _repositoryWrapper.SetRepository().TableNoTracking + var ent = await repositoryWrapper.SetRepository().TableNoTracking .FirstOrDefaultAsync(b => b.Id == request.Id, cancellationToken); if (ent == null) throw new AppException("Brand not found"); - _repositoryWrapper.SetRepository().Delete(ent); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Delete(ent); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return true; } diff --git a/Netina.Repository/Handlers/Brands/GetBrandsQueryHandler.cs b/Netina.Repository/Handlers/Brands/GetBrandsQueryHandler.cs index 7b2f0cd..a01db4f 100644 --- a/Netina.Repository/Handlers/Brands/GetBrandsQueryHandler.cs +++ b/Netina.Repository/Handlers/Brands/GetBrandsQueryHandler.cs @@ -1,18 +1,12 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Brands; +using Netina.Domain.Entities.Brands; namespace Netina.Repository.Handlers.Brands; -public class GetBrandsQueryHandler : IRequestHandler> +public class GetBrandsQueryHandler(IRepositoryWrapper repositoryWrapper, IMediator mediator) + : IRequestHandler> { - private readonly IRepositoryWrapper _repositoryWrapper; - private readonly IMediator _mediator; + private readonly IMediator _mediator = mediator; - public GetBrandsQueryHandler(IRepositoryWrapper repositoryWrapper,IMediator mediator) - { - _repositoryWrapper = repositoryWrapper; - _mediator = mediator; - } public async Task> Handle(GetBrandsQuery request, CancellationToken cancellationToken) { IQueryable baseBrands; @@ -21,7 +15,7 @@ public class GetBrandsQueryHandler : IRequestHandler() + var brandGrouped = await repositoryWrapper.SetRepository() .TableNoTracking .Where(p => p.CategoryId == request.CategoryId) .GroupBy(p=>p.BrandId) @@ -30,7 +24,7 @@ public class GetBrandsQueryHandler : IRequestHandler() + var brand = await repositoryWrapper.SetRepository() .TableNoTracking .Where(b => b.Id == grouping.Key) .Select(BrandMapper.ProjectToSDto) @@ -45,7 +39,7 @@ public class GetBrandsQueryHandler : IRequestHandler() + baseBrands = repositoryWrapper.SetRepository() .TableNoTracking .Where(b => b.PersianName.Trim().Contains(request.BrandName.Trim())) .OrderByDescending(b => b.CreatedAt); @@ -53,7 +47,7 @@ public class GetBrandsQueryHandler : IRequestHandler().TableNoTracking + baseBrands = repositoryWrapper.SetRepository().TableNoTracking .OrderByDescending(b => b.CreatedAt); } diff --git a/Netina.Repository/Handlers/Discounts/CreateDiscountCommandHandler.cs b/Netina.Repository/Handlers/Discounts/CreateDiscountCommandHandler.cs index 689943d..56c8dae 100644 --- a/Netina.Repository/Handlers/Discounts/CreateDiscountCommandHandler.cs +++ b/Netina.Repository/Handlers/Discounts/CreateDiscountCommandHandler.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Handlers.Discounts; +namespace Netina.Repository.Handlers.Discounts; public class CreateDiscountCommandHandler(IRepositoryWrapper repositoryWrapper) : IRequestHandler diff --git a/Netina.Repository/Handlers/Discounts/DeleteDiscountCommandHandler.cs b/Netina.Repository/Handlers/Discounts/DeleteDiscountCommandHandler.cs index 65f77e6..9e8da04 100644 --- a/Netina.Repository/Handlers/Discounts/DeleteDiscountCommandHandler.cs +++ b/Netina.Repository/Handlers/Discounts/DeleteDiscountCommandHandler.cs @@ -1,24 +1,17 @@ -using Microsoft.EntityFrameworkCore; +namespace Netina.Repository.Handlers.Discounts; -namespace Netina.Repository.Handlers.Discounts; - -public class DeleteDiscountCommandHandler : IRequestHandler +public class DeleteDiscountCommandHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public DeleteDiscountCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(DeleteDiscountCommand request, CancellationToken cancellationToken) { - var ent = await _repositoryWrapper.SetRepository().TableNoTracking + var ent = await repositoryWrapper.SetRepository().TableNoTracking .FirstOrDefaultAsync(d => d.Id == request.Id, cancellationToken); if (ent == null) throw new AppException("Discount NotFound", ApiResultStatusCode.NotFound); - _repositoryWrapper.SetRepository().Delete(ent); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Delete(ent); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return true; } } \ No newline at end of file diff --git a/Netina.Repository/Handlers/Discounts/GetDiscountQueryHandler.cs b/Netina.Repository/Handlers/Discounts/GetDiscountQueryHandler.cs index e3d2897..bee997a 100644 --- a/Netina.Repository/Handlers/Discounts/GetDiscountQueryHandler.cs +++ b/Netina.Repository/Handlers/Discounts/GetDiscountQueryHandler.cs @@ -1,18 +1,11 @@ -using Microsoft.EntityFrameworkCore; +namespace Netina.Repository.Handlers.Discounts; -namespace Netina.Repository.Handlers.Discounts; - -public class GetDiscountQueryHandler : IRequestHandler +public class GetDiscountQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetDiscountQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(GetDiscountQuery request, CancellationToken cancellationToken) { - var ent = await _repositoryWrapper.SetRepository().TableNoTracking + var ent = await repositoryWrapper.SetRepository().TableNoTracking .Where(b => b.Id == request.Id) .Select(DiscountMapper.ProjectToLDto) .FirstOrDefaultAsync(cancellationToken); diff --git a/Netina.Repository/Handlers/Discounts/GetDiscountsQueryHandler.cs b/Netina.Repository/Handlers/Discounts/GetDiscountsQueryHandler.cs index da8f6d4..4e689c2 100644 --- a/Netina.Repository/Handlers/Discounts/GetDiscountsQueryHandler.cs +++ b/Netina.Repository/Handlers/Discounts/GetDiscountsQueryHandler.cs @@ -1,18 +1,11 @@ -using Microsoft.EntityFrameworkCore; +namespace Netina.Repository.Handlers.Discounts; -namespace Netina.Repository.Handlers.Discounts; - -public class GetDiscountsQueryHandler : IRequestHandler> +public class GetDiscountsQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler> { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetDiscountsQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task> Handle(GetDiscountsQuery request, CancellationToken cancellationToken) { - var discounts = await _repositoryWrapper.SetRepository().TableNoTracking + var discounts = await repositoryWrapper.SetRepository().TableNoTracking .Where(d=>!d.IsSpecialOffer) .OrderByDescending(b => b.CreatedAt) .Skip(request.Page * 15).Take(15) diff --git a/Netina.Repository/Handlers/Discounts/UpdateDiscountCommandHandler.cs b/Netina.Repository/Handlers/Discounts/UpdateDiscountCommandHandler.cs index e3f035e..1cc746d 100644 --- a/Netina.Repository/Handlers/Discounts/UpdateDiscountCommandHandler.cs +++ b/Netina.Repository/Handlers/Discounts/UpdateDiscountCommandHandler.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Handlers.Discounts; +namespace Netina.Repository.Handlers.Discounts; public class UpdateDiscountCommandHandler(IRepositoryWrapper repositoryWrapper) : IRequestHandler diff --git a/Netina.Repository/Handlers/Marketers/GetMarketersQueryHandler.cs b/Netina.Repository/Handlers/Marketers/GetMarketersQueryHandler.cs index ec3a1cd..997876a 100644 --- a/Netina.Repository/Handlers/Marketers/GetMarketersQueryHandler.cs +++ b/Netina.Repository/Handlers/Marketers/GetMarketersQueryHandler.cs @@ -1,18 +1,11 @@ -using Microsoft.EntityFrameworkCore; +namespace Netina.Repository.Handlers.Marketers; -namespace Netina.Repository.Handlers.Marketers; - -public class GetMarketersQueryHandler : IRequestHandler> +public class GetMarketersQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler> { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetMarketersQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task> Handle(GetMarketersQuery request, CancellationToken cancellationToken) { - var query = _repositoryWrapper.SetRepository() + var query = repositoryWrapper.SetRepository() .TableNoTracking; return await query.OrderByDescending(q => q.CreatedAt) diff --git a/Netina.Repository/Handlers/Newsletters/CreateNewsletterMemberCommandHandler.cs b/Netina.Repository/Handlers/Newsletters/CreateNewsletterMemberCommandHandler.cs index 0d3e140..76eb622 100644 --- a/Netina.Repository/Handlers/Newsletters/CreateNewsletterMemberCommandHandler.cs +++ b/Netina.Repository/Handlers/Newsletters/CreateNewsletterMemberCommandHandler.cs @@ -1,23 +1,15 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.IdentityModel.Tokens; +namespace Netina.Repository.Handlers.Newsletters; -namespace Netina.Repository.Handlers.Newsletters; - -public class CreateNewsletterMemberCommandHandler : IRequestHandler +public class CreateNewsletterMemberCommandHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public CreateNewsletterMemberCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(CreateNewsletterMemberCommand request, CancellationToken cancellationToken) { if (request.PhoneNumber.IsNullOrEmpty() && request.Email.IsNullOrEmpty()) throw new AppException("PhoneNumber and Email is null"); if (!request.PhoneNumber.IsNullOrEmpty()) { - var existedPhoneNumber = await _repositoryWrapper.SetRepository() + var existedPhoneNumber = await repositoryWrapper.SetRepository() .TableNoTracking .AnyAsync(c => c.PhoneNumber == request.PhoneNumber, cancellationToken); if (existedPhoneNumber == true) @@ -25,7 +17,7 @@ public class CreateNewsletterMemberCommandHandler : IRequestHandler() + var existedEmail = await repositoryWrapper.SetRepository() .TableNoTracking .AnyAsync(c => c.Email == request.Email, cancellationToken); if (existedEmail == true) @@ -33,9 +25,9 @@ public class CreateNewsletterMemberCommandHandler : IRequestHandler() + repositoryWrapper.SetRepository() .Add(ent); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return true; } } \ No newline at end of file diff --git a/Netina.Repository/Handlers/Newsletters/GetNewsletterMembersQueryHandler.cs b/Netina.Repository/Handlers/Newsletters/GetNewsletterMembersQueryHandler.cs index 1d7a40f..31d95bf 100644 --- a/Netina.Repository/Handlers/Newsletters/GetNewsletterMembersQueryHandler.cs +++ b/Netina.Repository/Handlers/Newsletters/GetNewsletterMembersQueryHandler.cs @@ -1,18 +1,11 @@ -using Microsoft.EntityFrameworkCore; +namespace Netina.Repository.Handlers.Newsletters; -namespace Netina.Repository.Handlers.Newsletters; - -public class GetNewsletterMembersQueryHandler : IRequestHandler> +public class GetNewsletterMembersQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler> { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetNewsletterMembersQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task> Handle(GetNewsletterMembersQuery request, CancellationToken cancellationToken) { - var dtos = await _repositoryWrapper.SetRepository() + var dtos = await repositoryWrapper.SetRepository() .TableNoTracking .OrderByDescending(n => n.CreatedAt) .Select(NewsletterMemberMapper.ProjectToSDto) diff --git a/Netina.Repository/Handlers/Newsletters/Validators/CreateNewsletterMemberCommandValidator.cs b/Netina.Repository/Handlers/Newsletters/Validators/CreateNewsletterMemberCommandValidator.cs index e50ee7f..ab68d70 100644 --- a/Netina.Repository/Handlers/Newsletters/Validators/CreateNewsletterMemberCommandValidator.cs +++ b/Netina.Repository/Handlers/Newsletters/Validators/CreateNewsletterMemberCommandValidator.cs @@ -1,5 +1,4 @@ using FluentValidation; -using Microsoft.IdentityModel.Tokens; namespace Netina.Repository.Handlers.Newsletters.Validators; diff --git a/Netina.Repository/Handlers/Orders/CreateBaseOrderCommandHandler.cs b/Netina.Repository/Handlers/Orders/CreateBaseOrderCommandHandler.cs index 601abf7..a42539e 100644 --- a/Netina.Repository/Handlers/Orders/CreateBaseOrderCommandHandler.cs +++ b/Netina.Repository/Handlers/Orders/CreateBaseOrderCommandHandler.cs @@ -1,21 +1,15 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Orders; +using Netina.Domain.Entities.Orders; namespace Netina.Repository.Handlers.Orders; -public class CreateBaseOrderCommandHandler : IRequestHandler +public class CreateBaseOrderCommandHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public CreateBaseOrderCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(CreateBaseOrderCommand request, CancellationToken cancellationToken) { if (request.UserId == default) throw new AppException("Customer id is null"); - var customer = await _repositoryWrapper.SetRepository() + var customer = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(c => c.UserId == request.UserId, cancellationToken); if (customer == null) @@ -24,16 +18,16 @@ public class CreateBaseOrderCommandHandler : IRequestHandler() + repositoryWrapper.SetRepository() .Add(customer); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + await repositoryWrapper.SaveChangesAsync(cancellationToken); } var order = Order.Create(customer.Id); - _repositoryWrapper.SetRepository() + repositoryWrapper.SetRepository() .Add(order); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return order; } diff --git a/Netina.Repository/Handlers/Orders/DeleteOrderCommandHandler.cs b/Netina.Repository/Handlers/Orders/DeleteOrderCommandHandler.cs index d510445..d81daa1 100644 --- a/Netina.Repository/Handlers/Orders/DeleteOrderCommandHandler.cs +++ b/Netina.Repository/Handlers/Orders/DeleteOrderCommandHandler.cs @@ -1,25 +1,18 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Orders; +using Netina.Domain.Entities.Orders; namespace Netina.Repository.Handlers.Orders; -public class DeleteOrderCommandHandler : IRequestHandler +public class DeleteOrderCommandHandler(IRepositoryWrapper repositoryWrapper) : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public DeleteOrderCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(DeleteOrderCommand request, CancellationToken cancellationToken) { - var order = await _repositoryWrapper.SetRepository() + var order = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(o => o.Id == request.OrderId, cancellationToken); if (order == null) throw new AppException("Order not found", ApiResultStatusCode.NotFound); - _repositoryWrapper.SetRepository().Delete(order); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Delete(order); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return true; } } \ No newline at end of file diff --git a/Netina.Repository/Handlers/Orders/GetOrderLDtoQueryHandler.cs b/Netina.Repository/Handlers/Orders/GetOrderLDtoQueryHandler.cs index 18d4998..e1f6f63 100644 --- a/Netina.Repository/Handlers/Orders/GetOrderLDtoQueryHandler.cs +++ b/Netina.Repository/Handlers/Orders/GetOrderLDtoQueryHandler.cs @@ -1,21 +1,15 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Orders; +using Netina.Domain.Entities.Orders; namespace Netina.Repository.Handlers.Orders; -public class GetOrderLDtoQueryHandler: IRequestHandler +public class GetOrderLDtoQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetOrderLDtoQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(GetOrderLDtoQuery request, CancellationToken cancellationToken) { if (request.Id == default) throw new AppException("Order id is null"); - var order = await _repositoryWrapper.SetRepository() + var order = await repositoryWrapper.SetRepository() .TableNoTracking .Where(o => o.Id == request.Id) .Select(OrderMapper.ProjectToLDto) diff --git a/Netina.Repository/Handlers/Orders/GetOrderQueryHandler.cs b/Netina.Repository/Handlers/Orders/GetOrderQueryHandler.cs index c511402..a3b938d 100644 --- a/Netina.Repository/Handlers/Orders/GetOrderQueryHandler.cs +++ b/Netina.Repository/Handlers/Orders/GetOrderQueryHandler.cs @@ -1,33 +1,26 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Orders; +using Netina.Domain.Entities.Orders; namespace Netina.Repository.Handlers.Orders; -public class GetOrderQueryHandler : IRequestHandler +public class GetOrderQueryHandler(IRepositoryWrapper repositoryWrapper) : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetOrderQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(GetOrderQuery request, CancellationToken cancellationToken) { - var order = await _repositoryWrapper.SetRepository() + var order = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(o => o.Id == request.Id, cancellationToken); if (order == null) throw new AppException("Order not found", ApiResultStatusCode.NotFound); - var orderProducts = await _repositoryWrapper.SetRepository() + var orderProducts = await repositoryWrapper.SetRepository() .TableNoTracking .Where(op => op.OrderId == order.Id) .ToListAsync(cancellationToken); orderProducts.ForEach(op => order.AddOrderProduct(op)); - var orderDelivery= await _repositoryWrapper.SetRepository() + var orderDelivery= await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(od => od.OrderId == request.Id, cancellationToken); if (orderDelivery != null) diff --git a/Netina.Repository/Handlers/Orders/GetOrdersQueryHandler.cs b/Netina.Repository/Handlers/Orders/GetOrdersQueryHandler.cs index 4997560..16d021e 100644 --- a/Netina.Repository/Handlers/Orders/GetOrdersQueryHandler.cs +++ b/Netina.Repository/Handlers/Orders/GetOrdersQueryHandler.cs @@ -1,20 +1,14 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Orders; +using Netina.Domain.Entities.Orders; namespace Netina.Repository.Handlers.Orders; -public class GetOrdersQueryHandler : IRequestHandler> +public class GetOrdersQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler> { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetOrdersQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task> Handle(GetOrdersQuery request, CancellationToken cancellationToken) { - IQueryable orders = _repositoryWrapper + IQueryable orders = repositoryWrapper .SetRepository() .TableNoTracking; diff --git a/Netina.Repository/Handlers/Orders/GetUserOrdersQueryHandler.cs b/Netina.Repository/Handlers/Orders/GetUserOrdersQueryHandler.cs index 455cd91..744ea01 100644 --- a/Netina.Repository/Handlers/Orders/GetUserOrdersQueryHandler.cs +++ b/Netina.Repository/Handlers/Orders/GetUserOrdersQueryHandler.cs @@ -1,28 +1,20 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Orders; +using Netina.Domain.Entities.Orders; namespace Netina.Repository.Handlers.Orders; -public class GetUserOrdersQueryHandler : IRequestHandler> +public class GetUserOrdersQueryHandler(ICurrentUserService currentUserService, IRepositoryWrapper repositoryWrapper) + : IRequestHandler> { - private readonly ICurrentUserService _currentUserService; - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetUserOrdersQueryHandler(ICurrentUserService currentUserService,IRepositoryWrapper repositoryWrapper) - { - _currentUserService = currentUserService; - _repositoryWrapper = repositoryWrapper; - } public async Task> Handle(GetUserOrdersQuery request, CancellationToken cancellationToken) { Guid customerId = Guid.Empty; if (request.CustomerId == default) { - if (_currentUserService.UserId == null) + if (currentUserService.UserId == null) throw new AppException("Token is wrong", ApiResultStatusCode.UnAuthorized); - if (!Guid.TryParse(_currentUserService.UserId, out Guid userId)) + if (!Guid.TryParse(currentUserService.UserId, out Guid userId)) throw new AppException("Token is wrong", ApiResultStatusCode.UnAuthorized); - var customer = await _repositoryWrapper.SetRepository() + var customer = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(c => c.UserId == userId, cancellationToken); if (customer == null) @@ -32,7 +24,7 @@ public class GetUserOrdersQueryHandler : IRequestHandler() + var orders = await repositoryWrapper.SetRepository() .TableNoTracking .Where(o => o.CustomerId == customerId) .Select(OrderMapper.ProjectToSDto) diff --git a/Netina.Repository/Handlers/ProductCategories/GetProductCategoriesQueryHandler.cs b/Netina.Repository/Handlers/ProductCategories/GetProductCategoriesQueryHandler.cs index 9cf674f..ee9a722 100644 --- a/Netina.Repository/Handlers/ProductCategories/GetProductCategoriesQueryHandler.cs +++ b/Netina.Repository/Handlers/ProductCategories/GetProductCategoriesQueryHandler.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Handlers.ProductCategories; +namespace Netina.Repository.Handlers.ProductCategories; public class GetProductCategoriesQueryHandler(IRepositoryWrapper repositoryWrapper) : IRequestHandler> diff --git a/Netina.Repository/Handlers/ProductCategories/GetProductCategoryChildrenQueryHandler.cs b/Netina.Repository/Handlers/ProductCategories/GetProductCategoryChildrenQueryHandler.cs index 783cea4..2f89544 100644 --- a/Netina.Repository/Handlers/ProductCategories/GetProductCategoryChildrenQueryHandler.cs +++ b/Netina.Repository/Handlers/ProductCategories/GetProductCategoryChildrenQueryHandler.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Handlers.ProductCategories; +namespace Netina.Repository.Handlers.ProductCategories; public class GetProductCategoryChildrenQueryHandler(IRepositoryWrapper repositoryWrapper) : IRequestHandler> diff --git a/Netina.Repository/Handlers/ProductCategories/GetProductCategoryQueryHandler.cs b/Netina.Repository/Handlers/ProductCategories/GetProductCategoryQueryHandler.cs index 4650a15..67f18ba 100644 --- a/Netina.Repository/Handlers/ProductCategories/GetProductCategoryQueryHandler.cs +++ b/Netina.Repository/Handlers/ProductCategories/GetProductCategoryQueryHandler.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Handlers.ProductCategories; +namespace Netina.Repository.Handlers.ProductCategories; public class GetProductCategoryQueryHandler(IRepositoryWrapper repositoryWrapper) : IRequestHandler diff --git a/Netina.Repository/Handlers/Products/ChangeProductCostCommandHandler.cs b/Netina.Repository/Handlers/Products/ChangeProductCostCommandHandler.cs index 60b23e5..aa80221 100644 --- a/Netina.Repository/Handlers/Products/ChangeProductCostCommandHandler.cs +++ b/Netina.Repository/Handlers/Products/ChangeProductCostCommandHandler.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Handlers.Products; +namespace Netina.Repository.Handlers.Products; public class ChangeProductCostCommandHandler(IRepositoryWrapper repositoryWrapper) : IRequestHandler diff --git a/Netina.Repository/Handlers/Products/ChangeProductDisplayedCommandHandler.cs b/Netina.Repository/Handlers/Products/ChangeProductDisplayedCommandHandler.cs index d43ae23..a812c07 100644 --- a/Netina.Repository/Handlers/Products/ChangeProductDisplayedCommandHandler.cs +++ b/Netina.Repository/Handlers/Products/ChangeProductDisplayedCommandHandler.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Handlers.Products; +namespace Netina.Repository.Handlers.Products; public class ChangeProductDisplayedCommandHandler(IRepositoryWrapper repositoryWrapper) : IRequestHandler diff --git a/Netina.Repository/Handlers/Products/DeleteProductCommandHandler.cs b/Netina.Repository/Handlers/Products/DeleteProductCommandHandler.cs index 574bf3a..6533216 100644 --- a/Netina.Repository/Handlers/Products/DeleteProductCommandHandler.cs +++ b/Netina.Repository/Handlers/Products/DeleteProductCommandHandler.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Handlers.Products; +namespace Netina.Repository.Handlers.Products; public class DeleteProductCommandHandler(IRepositoryWrapper repositoryWrapper) : IRequestHandler diff --git a/Netina.Repository/Handlers/Products/GetProductsQueryHandler.cs b/Netina.Repository/Handlers/Products/GetProductsQueryHandler.cs index 680559e..b7362e9 100644 --- a/Netina.Repository/Handlers/Products/GetProductsQueryHandler.cs +++ b/Netina.Repository/Handlers/Products/GetProductsQueryHandler.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Handlers.Products; +namespace Netina.Repository.Handlers.Products; public class GetProductsQueryHandler( IRepositoryWrapper repositoryWrapper, diff --git a/Netina.Repository/Handlers/Reviews/CreateReviewCommandHandler.cs b/Netina.Repository/Handlers/Reviews/CreateReviewCommandHandler.cs index cda3f9c..fc565fe 100644 --- a/Netina.Repository/Handlers/Reviews/CreateReviewCommandHandler.cs +++ b/Netina.Repository/Handlers/Reviews/CreateReviewCommandHandler.cs @@ -1,21 +1,15 @@ -using Microsoft.EntityFrameworkCore; -using AppException = Netina.Common.Models.Exception.AppException; +using AppException = Netina.Common.Models.Exception.AppException; namespace Netina.Repository.Handlers.Reviews; -public class CreateReviewCommandHandler : IRequestHandler +public class CreateReviewCommandHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public CreateReviewCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(CreateReviewCommand request, CancellationToken cancellationToken) { var review = Review.Create(request.Title, request.Comment, request.Rate, request.IsBuyer, request.ProductId, request.UserId); - var product = await _repositoryWrapper.SetRepository() + var product = await repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(p => p.Id == request.ProductId, cancellationToken); if (product == null) @@ -23,11 +17,11 @@ public class CreateReviewCommandHandler : IRequestHandler().Update(product); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Update(product); + await repositoryWrapper.SaveChangesAsync(cancellationToken); - _repositoryWrapper.SetRepository().Add(review); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Add(review); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return review.AdaptToSDto(); } diff --git a/Netina.Repository/Handlers/Reviews/DeleteReviewCommandHandler.cs b/Netina.Repository/Handlers/Reviews/DeleteReviewCommandHandler.cs index a71c664..f1932fe 100644 --- a/Netina.Repository/Handlers/Reviews/DeleteReviewCommandHandler.cs +++ b/Netina.Repository/Handlers/Reviews/DeleteReviewCommandHandler.cs @@ -1,24 +1,17 @@ -using Microsoft.EntityFrameworkCore; +namespace Netina.Repository.Handlers.Reviews; -namespace Netina.Repository.Handlers.Reviews; - -public class DeleteReviewCommandHandler : IRequestHandler +public class DeleteReviewCommandHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public DeleteReviewCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(DeleteReviewCommand request, CancellationToken cancellationToken) { - var review = await _repositoryWrapper.SetRepository().TableNoTracking + var review = await repositoryWrapper.SetRepository().TableNoTracking .FirstOrDefaultAsync(r => r.Id == request.Id, cancellationToken); if (review == null) throw new AppException("Review not found", ApiResultStatusCode.NotFound); - _repositoryWrapper.SetRepository().Delete(review); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Delete(review); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return true; } } \ No newline at end of file diff --git a/Netina.Repository/Handlers/Reviews/GetReviewQueryHandler.cs b/Netina.Repository/Handlers/Reviews/GetReviewQueryHandler.cs index 9dd46a5..d61d816 100644 --- a/Netina.Repository/Handlers/Reviews/GetReviewQueryHandler.cs +++ b/Netina.Repository/Handlers/Reviews/GetReviewQueryHandler.cs @@ -1,18 +1,10 @@ -using Microsoft.EntityFrameworkCore; +namespace Netina.Repository.Handlers.Reviews; -namespace Netina.Repository.Handlers.Reviews; - -public class GetReviewQueryHandler : IRequestHandler +public class GetReviewQueryHandler(IRepositoryWrapper repositoryWrapper) : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetReviewQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(GetReviewQuery request, CancellationToken cancellationToken) { - var review = await _repositoryWrapper.SetRepository() + var review = await repositoryWrapper.SetRepository() .TableNoTracking .Where(r => r.Id == request.Id) .Select(ReviewMapper.ProjectToLDto) diff --git a/Netina.Repository/Handlers/Reviews/GetReviewsQueryHandler.cs b/Netina.Repository/Handlers/Reviews/GetReviewsQueryHandler.cs index 4cc9dab..cf14554 100644 --- a/Netina.Repository/Handlers/Reviews/GetReviewsQueryHandler.cs +++ b/Netina.Repository/Handlers/Reviews/GetReviewsQueryHandler.cs @@ -1,18 +1,11 @@ -using Microsoft.EntityFrameworkCore; +namespace Netina.Repository.Handlers.Reviews; -namespace Netina.Repository.Handlers.Reviews; - -public class GetReviewsQueryHandler : IRequestHandler> +public class GetReviewsQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler> { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetReviewsQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task> Handle(GetReviewsQuery request, CancellationToken cancellationToken) { - return await _repositoryWrapper.SetRepository() + return await repositoryWrapper.SetRepository() .TableNoTracking .OrderByDescending(r => r.CreatedAt) .Skip(request.Page * 15) diff --git a/Netina.Repository/Handlers/Warehouses/CreateShippingCommandHandler.cs b/Netina.Repository/Handlers/Warehouses/CreateShippingCommandHandler.cs index 229ab7c..9976a57 100644 --- a/Netina.Repository/Handlers/Warehouses/CreateShippingCommandHandler.cs +++ b/Netina.Repository/Handlers/Warehouses/CreateShippingCommandHandler.cs @@ -2,20 +2,15 @@ namespace Netina.Repository.Handlers.Warehouses; -public class CreateShippingCommandHandler : IRequestHandler +public class CreateShippingCommandHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public CreateShippingCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(CreateShippingCommand request, CancellationToken cancellationToken) { var ent = Shipping.Create(request.Name, request.WarehouseName, request.IsExpressShipping, request.IsShipBySeller, request.IsOriginalWarehouse,request.DeliveryCost,request.WorkingDays); - _repositoryWrapper.SetRepository().Add(ent); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Add(ent); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return ent.AdaptToSDto(); } } \ No newline at end of file diff --git a/Netina.Repository/Handlers/Warehouses/DeleteShippingCommandHandler.cs b/Netina.Repository/Handlers/Warehouses/DeleteShippingCommandHandler.cs index 1995015..ca7783f 100644 --- a/Netina.Repository/Handlers/Warehouses/DeleteShippingCommandHandler.cs +++ b/Netina.Repository/Handlers/Warehouses/DeleteShippingCommandHandler.cs @@ -1,25 +1,19 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Warehouses; +using Netina.Domain.Entities.Warehouses; namespace Netina.Repository.Handlers.Warehouses; -public class DeleteShippingCommandHandler : IRequestHandler +public class DeleteShippingCommandHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public DeleteShippingCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(DeleteShippingCommand request, CancellationToken cancellationToken) { - var ent = await _repositoryWrapper.SetRepository().TableNoTracking + var ent = await repositoryWrapper.SetRepository().TableNoTracking .FirstOrDefaultAsync(s => s.Id == request.Id, cancellationToken); if (ent == null) throw new AppException("Shipping not found", ApiResultStatusCode.NotFound); - _repositoryWrapper.SetRepository().Delete(ent); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Delete(ent); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return true; } } \ No newline at end of file diff --git a/Netina.Repository/Handlers/Warehouses/GetShippingQueryHandler.cs b/Netina.Repository/Handlers/Warehouses/GetShippingQueryHandler.cs index e92a2e0..ae381be 100644 --- a/Netina.Repository/Handlers/Warehouses/GetShippingQueryHandler.cs +++ b/Netina.Repository/Handlers/Warehouses/GetShippingQueryHandler.cs @@ -1,19 +1,13 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Warehouses; +using Netina.Domain.Entities.Warehouses; namespace Netina.Repository.Handlers.Warehouses; -public class GetShippingQueryHandler : IRequestHandler +public class GetShippingQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetShippingQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(GetShippingQuery request, CancellationToken cancellationToken) { - var shippingMethod = await _repositoryWrapper.SetRepository().TableNoTracking.Where(b => b.Id == request.Id) + var shippingMethod = await repositoryWrapper.SetRepository().TableNoTracking.Where(b => b.Id == request.Id) .Select(ShippingMapper.ProjectToSDto) .FirstOrDefaultAsync(cancellationToken); if (shippingMethod == null) diff --git a/Netina.Repository/Handlers/Warehouses/GetShippingsQueryHandler.cs b/Netina.Repository/Handlers/Warehouses/GetShippingsQueryHandler.cs index 5e8f082..c2f0ce7 100644 --- a/Netina.Repository/Handlers/Warehouses/GetShippingsQueryHandler.cs +++ b/Netina.Repository/Handlers/Warehouses/GetShippingsQueryHandler.cs @@ -1,19 +1,13 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Warehouses; +using Netina.Domain.Entities.Warehouses; namespace Netina.Repository.Handlers.Warehouses; -public class GetShippingsQueryHandler : IRequestHandler> +public class GetShippingsQueryHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler> { - private readonly IRepositoryWrapper _repositoryWrapper; - - public GetShippingsQueryHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task> Handle(GetShippingsQuery request, CancellationToken cancellationToken) { - return await _repositoryWrapper + return await repositoryWrapper .SetRepository() .TableNoTracking.OrderByDescending(b => b.CreatedAt) .Skip(request.Page * 20) diff --git a/Netina.Repository/Handlers/Warehouses/UpdateShippingCommandHandler.cs b/Netina.Repository/Handlers/Warehouses/UpdateShippingCommandHandler.cs index a7bfe41..3447618 100644 --- a/Netina.Repository/Handlers/Warehouses/UpdateShippingCommandHandler.cs +++ b/Netina.Repository/Handlers/Warehouses/UpdateShippingCommandHandler.cs @@ -1,19 +1,13 @@ -using Microsoft.EntityFrameworkCore; -using Netina.Domain.Entities.Warehouses; +using Netina.Domain.Entities.Warehouses; namespace Netina.Repository.Handlers.Warehouses; -public class UpdateShippingCommandHandler : IRequestHandler +public class UpdateShippingCommandHandler(IRepositoryWrapper repositoryWrapper) + : IRequestHandler { - private readonly IRepositoryWrapper _repositoryWrapper; - - public UpdateShippingCommandHandler(IRepositoryWrapper repositoryWrapper) - { - _repositoryWrapper = repositoryWrapper; - } public async Task Handle(UpdateShippingCommand request, CancellationToken cancellationToken) { - var ent = await _repositoryWrapper.SetRepository().TableNoTracking + var ent = await repositoryWrapper.SetRepository().TableNoTracking .FirstOrDefaultAsync(s => s.Id == request.Id, cancellationToken); if (ent == null) throw new AppException("Shipping not found", ApiResultStatusCode.NotFound); @@ -23,8 +17,8 @@ public class UpdateShippingCommandHandler : IRequestHandler().Update(newEnt); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); + repositoryWrapper.SetRepository().Update(newEnt); + await repositoryWrapper.SaveChangesAsync(cancellationToken); return true; } } \ No newline at end of file diff --git a/Netina.Repository/Models/ApplicationContext.cs b/Netina.Repository/Models/ApplicationContext.cs index bb21cd6..46c8f9c 100644 --- a/Netina.Repository/Models/ApplicationContext.cs +++ b/Netina.Repository/Models/ApplicationContext.cs @@ -1,20 +1,12 @@ using Microsoft.AspNetCore.Identity.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore; -using System.Reflection.Emit; namespace Netina.Repository.Models; -public class ApplicationContext : IdentityDbContext +public class ApplicationContext(DbContextOptions options, ILogger logger) + : IdentityDbContext(options) { - private readonly ILogger _logger; - private readonly Assembly _projectAssembly; - - public ApplicationContext(DbContextOptions options, ILogger logger) : base(options) - { - _logger = logger; - _projectAssembly = options.GetExtension().ProjectAssembly; - } + private readonly Assembly _projectAssembly = options.GetExtension().ProjectAssembly; protected override void OnModelCreating(ModelBuilder builder) { @@ -22,9 +14,9 @@ public class ApplicationContext : IdentityDbContext(_logger, entitiesAssembly); + builder.RegisterAllEntities(logger, entitiesAssembly); stopwatch.Stop(); - _logger.LogInformation($"!!!!!!! RegisterAllEntities : {stopwatch.ElapsedMilliseconds}ms !!!!!!!"); + logger.LogInformation($"!!!!!!! RegisterAllEntities : {stopwatch.ElapsedMilliseconds}ms !!!!!!!"); builder.HasPostgresExtension("pg_trgm"); diff --git a/Netina.Repository/Repositories/Base/BaseRepository.cs b/Netina.Repository/Repositories/Base/BaseRepository.cs index 58b8db0..40c0ccd 100644 --- a/Netina.Repository/Repositories/Base/BaseRepository.cs +++ b/Netina.Repository/Repositories/Base/BaseRepository.cs @@ -1,16 +1,9 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Repositories.Base +namespace Netina.Repository.Repositories.Base { - public class BaseRepository : Repository, IBaseRepository where T : class, IApiEntity + public class BaseRepository(ApplicationContext dbContext, ICurrentUserService currentUserService) + : Repository(dbContext), IBaseRepository + where T : class, IApiEntity { - private readonly ICurrentUserService _currentUserService; - - public BaseRepository(ApplicationContext dbContext, ICurrentUserService currentUserService) : base(dbContext) - { - _currentUserService = currentUserService; - } - public virtual async ValueTask GetByIdAsync(CancellationToken cancellationToken, params object[] ids) { var founded = await Entities.FindAsync(ids, cancellationToken); @@ -71,9 +64,9 @@ namespace Netina.Repository.Repositories.Base .CurrentValue = DateTime.Now; Entities.Entry(entity).Property(e => e.IsRemoved) .CurrentValue = true; - if (_currentUserService.UserName != null) + if (currentUserService.UserName != null) Entities.Entry(entity).Property(e => e.RemovedBy) - .CurrentValue = _currentUserService.UserName; + .CurrentValue = currentUserService.UserName; Entities.Update(entity); } @@ -87,9 +80,9 @@ namespace Netina.Repository.Repositories.Base .CurrentValue = DateTime.Now; Entities.Entry(entity).Property(e => e.IsRemoved) .CurrentValue = true; - if (_currentUserService.UserName != null) + if (currentUserService.UserName != null) Entities.Entry(entity).Property(e => e.RemovedBy) - .CurrentValue = _currentUserService.UserName; + .CurrentValue = currentUserService.UserName; Entities.Update(entity); } } diff --git a/Netina.Repository/Repositories/Base/Contracts/IReadRepository.cs b/Netina.Repository/Repositories/Base/Contracts/IReadRepository.cs index 889b4e8..ec61233 100644 --- a/Netina.Repository/Repositories/Base/Contracts/IReadRepository.cs +++ b/Netina.Repository/Repositories/Base/Contracts/IReadRepository.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Repositories.Base.Contracts +namespace Netina.Repository.Repositories.Base.Contracts { public interface IReadRepository where T : class, IApiEntity { diff --git a/Netina.Repository/Repositories/Base/Contracts/IRepository.cs b/Netina.Repository/Repositories/Base/Contracts/IRepository.cs index f453e9a..0089daf 100644 --- a/Netina.Repository/Repositories/Base/Contracts/IRepository.cs +++ b/Netina.Repository/Repositories/Base/Contracts/IRepository.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Repositories.Base.Contracts +namespace Netina.Repository.Repositories.Base.Contracts { internal interface IRepository where T : class, IApiEntity { diff --git a/Netina.Repository/Repositories/Base/ReadRepository.cs b/Netina.Repository/Repositories/Base/ReadRepository.cs index 84793b4..ce15629 100644 --- a/Netina.Repository/Repositories/Base/ReadRepository.cs +++ b/Netina.Repository/Repositories/Base/ReadRepository.cs @@ -1,14 +1,9 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Repositories.Base +namespace Netina.Repository.Repositories.Base { - public class ReadRepository : Repository, IDisposable, IReadRepository where T : class, IApiEntity + public class ReadRepository(ApplicationContext dbContext) + : Repository(dbContext), IDisposable, IReadRepository + where T : class, IApiEntity { - public ReadRepository( - ApplicationContext dbContext) : base(dbContext) - { - } - public new void Dispose() { DbContext?.Dispose(); diff --git a/Netina.Repository/Repositories/Base/Repository.cs b/Netina.Repository/Repositories/Base/Repository.cs index fcbf2fb..74b16cf 100644 --- a/Netina.Repository/Repositories/Base/Repository.cs +++ b/Netina.Repository/Repositories/Base/Repository.cs @@ -1,6 +1,4 @@ -using Microsoft.EntityFrameworkCore; - -namespace Netina.Repository.Repositories.Base +namespace Netina.Repository.Repositories.Base { public class Repository : IRepository where T : class, IApiEntity { diff --git a/Netina.Repository/Repositories/Base/RepositoryWrapper.cs b/Netina.Repository/Repositories/Base/RepositoryWrapper.cs index 380e9f7..c7b76a8 100644 --- a/Netina.Repository/Repositories/Base/RepositoryWrapper.cs +++ b/Netina.Repository/Repositories/Base/RepositoryWrapper.cs @@ -1,20 +1,13 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.ChangeTracking; +using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Storage; namespace Netina.Repository.Repositories.Base; -public class RepositoryWrapper : IRepositoryWrapper +public class RepositoryWrapper(ApplicationContext context, ICurrentUserService currentUserService) + : IRepositoryWrapper { - private readonly ApplicationContext _context; - private readonly ICurrentUserService _currentUserService; private IDbContextTransaction? _currentTransaction; - public RepositoryWrapper(ApplicationContext context, ICurrentUserService currentUserService) - { - _context = context; - _currentUserService = currentUserService; - } - public IBaseRepository SetRepository() where T : ApiEntity => new BaseRepository(_context, _currentUserService); + public IBaseRepository SetRepository() where T : ApiEntity => new BaseRepository(context, currentUserService); public async Task RollBackAsync(CancellationToken cancellationToken) @@ -31,17 +24,17 @@ public class RepositoryWrapper : IRepositoryWrapper } public async Task BeginTransaction(CancellationToken cancellationToken) { - _currentTransaction = await _context.Database.BeginTransactionAsync(cancellationToken); + _currentTransaction = await context.Database.BeginTransactionAsync(cancellationToken); } public async Task SaveChangesAsync(CancellationToken cancellationToken = default) { SetAuditables(); - await _context.SaveChangesAsync(cancellationToken); + await context.SaveChangesAsync(cancellationToken); } private void SetAuditables() { - IEnumerable> entries = _context.ChangeTracker.Entries(); + IEnumerable> entries = context.ChangeTracker.Entries(); foreach (EntityEntry entity in entries) { if (entity.State == EntityState.Added) @@ -54,15 +47,15 @@ public class RepositoryWrapper : IRepositoryWrapper { entity.Property(e => e.ModifiedAt) .CurrentValue = DateTime.Now; - if (_currentUserService.UserName != null) + if (currentUserService.UserName != null) entity.Property(e => e.ModifiedBy) - .CurrentValue = _currentUserService.UserName; + .CurrentValue = currentUserService.UserName; } } } public void Dispose() { _currentTransaction?.Dispose(); - _context?.Dispose(); + context?.Dispose(); } } diff --git a/Netina.Repository/Repositories/Base/WriteRepository.cs b/Netina.Repository/Repositories/Base/WriteRepository.cs index 132d775..c2a1834 100644 --- a/Netina.Repository/Repositories/Base/WriteRepository.cs +++ b/Netina.Repository/Repositories/Base/WriteRepository.cs @@ -1,17 +1,10 @@  -using Microsoft.EntityFrameworkCore; - namespace Netina.Repository.Repositories.Base { - public class WriteRepository : Repository, IDisposable, IWriteRepository where T : class, IApiEntity + public class WriteRepository(ApplicationContext dbContext, ICurrentUserService currentUserService) + : Repository(dbContext), IDisposable, IWriteRepository + where T : class, IApiEntity { - private readonly ICurrentUserService _currentUserService; - - public WriteRepository(ApplicationContext dbContext,ICurrentUserService currentUserService) : base(dbContext) - { - _currentUserService = currentUserService; - } - public void Dispose() { DbContext?.Dispose(); @@ -56,9 +49,9 @@ namespace Netina.Repository.Repositories.Base .CurrentValue = DateTime.Now; Entities.Entry(entity).Property(e => e.IsRemoved) .CurrentValue = true; - if (_currentUserService.UserName != null) + if (currentUserService.UserName != null) Entities.Entry(entity).Property(e => e.RemovedBy) - .CurrentValue = _currentUserService.UserName; + .CurrentValue = currentUserService.UserName; Entities.Update(entity); } @@ -72,9 +65,9 @@ namespace Netina.Repository.Repositories.Base .CurrentValue = DateTime.Now; Entities.Entry(entity).Property(e => e.IsRemoved) .CurrentValue = true; - if (_currentUserService.UserName != null) + if (currentUserService.UserName != null) Entities.Entry(entity).Property(e => e.RemovedBy) - .CurrentValue = _currentUserService.UserName; + .CurrentValue = currentUserService.UserName; Entities.Update(entity); } } diff --git a/Netina.Repository/Repositories/UnitOfWork/UnitOfWork.cs b/Netina.Repository/Repositories/UnitOfWork/UnitOfWork.cs index b6271e7..95230af 100644 --- a/Netina.Repository/Repositories/UnitOfWork/UnitOfWork.cs +++ b/Netina.Repository/Repositories/UnitOfWork/UnitOfWork.cs @@ -1,17 +1,11 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.ChangeTracking; +using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Storage; namespace Netina.Repository.Repositories.UnitOfWork; -public class UnitOfWork : IUnitOfWork +public class UnitOfWork(ApplicationContext applicationContext) : IUnitOfWork { - private readonly ApplicationContext _applicationContext; private IDbContextTransaction? _currentTransaction ; - public UnitOfWork(ApplicationContext applicationContext) - { - _applicationContext = applicationContext; - } public async Task RollBackAsync() { @@ -27,17 +21,17 @@ public class UnitOfWork : IUnitOfWork } public async Task BeginTransaction() { - _currentTransaction = await _applicationContext.Database.BeginTransactionAsync(); + _currentTransaction = await applicationContext.Database.BeginTransactionAsync(); } public async Task SaveChangesAsync(CancellationToken cancellationToken = default) { SetAuditables(); - await _applicationContext.SaveChangesAsync(cancellationToken); + await applicationContext.SaveChangesAsync(cancellationToken); } private void SetAuditables() { - IEnumerable> entries = _applicationContext.ChangeTracker.Entries(); + IEnumerable> entries = applicationContext.ChangeTracker.Entries(); foreach (EntityEntry entity in entries) { if (entity.State == EntityState.Added) diff --git a/Tools/NetinaShop.WordPressDBConverter/Program.cs b/Tools/NetinaShop.WordPressDBConverter/Program.cs index 49efb0d..95a526d 100644 --- a/Tools/NetinaShop.WordPressDBConverter/Program.cs +++ b/Tools/NetinaShop.WordPressDBConverter/Program.cs @@ -1,16 +1,10 @@ using Netina.Common.Extensions; using Netina.Domain.Dtos.RequestDtos.SeedDtos; -using Netina.Domain.Entities.Blogs; using Netina.WordPressDBConverter.Models; using Newtonsoft.Json; using Netina.Common.Models.Api; using Netina.Domain.Dtos.SmallDtos; -using Netina.Domain.Enums; using Netina.WordPressDBConverter.Services.RestServices; -using Refit; -using System.Reflection.Metadata; -using HtmlAgilityPack; -using System.Net.Http; using System.Text.RegularExpressions;