From f19c76066c33440d3c3b083004b45afae264c44f Mon Sep 17 00:00:00 2001 From: "Amir.H Khademi" Date: Sat, 20 Apr 2024 16:05:03 +0330 Subject: [PATCH] feat : change OTP verify code , change digikala service , change get order invoice --- .version | 2 +- .../appsettings.DevelopmentVesmeh.json | 2 +- Netina.Api/Controller/ScraperController.cs | 5 +- Netina.Api/Netina.Api.csproj | 4 +- Netina.Api/Program.cs | 4 +- Netina.Common/Netina.Common.csproj | 8 +-- .../GetOrderInvoiceCommandHandler.cs | 7 +- Netina.Core/Netina.Core.csproj | 2 +- Netina.Domain/Dtos/SmallDtos/PaymentSDto.cs | 4 +- Netina.Domain/Netina.Domain.csproj | 8 +-- .../RestServices/IDigikalaRestApi.cs | 2 +- .../Services/Scrapers/DigikalaScraper.cs | 70 ++++++++----------- Netina.Infrastructure/Services/SmsService.cs | 2 +- .../Program.cs | 4 +- 14 files changed, 51 insertions(+), 73 deletions(-) diff --git a/.version b/.version index cc4ce69..e002a5f 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -0.22.25.44 \ No newline at end of file +0.22.25.45 \ No newline at end of file diff --git a/Netina.Api/AppSettings/appsettings.DevelopmentVesmeh.json b/Netina.Api/AppSettings/appsettings.DevelopmentVesmeh.json index 4a20ce6..885ee77 100644 --- a/Netina.Api/AppSettings/appsettings.DevelopmentVesmeh.json +++ b/Netina.Api/AppSettings/appsettings.DevelopmentVesmeh.json @@ -21,7 +21,7 @@ "WebSiteUrl": "https://vesmeh.com", "AdminPanelBaseUrl": "https://admin.vesmeh.com", "StorageBaseUrl": "https://storage.vesmeh.com", - "KaveNegarApiKey": "3735494B4143727A794346457461576A2B4B6668414973424E333561505A694B", + "KaveNegarApiKey": "65334B6A70303233432B7A6530795A51683134524945742F74397161785568512B794966623245744C2F773D", "UserSetting": { "Username": "09214802813", "Email": "avvampier@gmail.com", diff --git a/Netina.Api/Controller/ScraperController.cs b/Netina.Api/Controller/ScraperController.cs index 1ff3d67..dac2f76 100644 --- a/Netina.Api/Controller/ScraperController.cs +++ b/Netina.Api/Controller/ScraperController.cs @@ -1,7 +1,4 @@ -using Netina.Core.Abstracts; -using Netina.Domain.Models.Claims; - -namespace Netina.Api.Controller; +namespace Netina.Api.Controller; public class ScraperController : ICarterModule { diff --git a/Netina.Api/Netina.Api.csproj b/Netina.Api/Netina.Api.csproj index 76c107a..4cd5895 100644 --- a/Netina.Api/Netina.Api.csproj +++ b/Netina.Api/Netina.Api.csproj @@ -6,8 +6,8 @@ enable true Linux - 0.22.25.44 - 0.22.25.44 + 0.22.25.45 + 0.22.25.45 diff --git a/Netina.Api/Program.cs b/Netina.Api/Program.cs index 70e76bd..800275b 100644 --- a/Netina.Api/Program.cs +++ b/Netina.Api/Program.cs @@ -6,7 +6,7 @@ builder.Host.UseSerilog(); LoggerConfig.ConfigureSerilog(); string env = builder.Environment.IsDevelopment() == true ? "Development" : "Production"; builder.Host.UseContentRoot(Directory.GetCurrentDirectory()); -string projectName = "Vesmeh"; +string projectName = "Hamyan"; if (builder.Environment.IsDevelopment()) builder.Configuration.AddJsonFile($"AppSettings/appsettings.json").AddJsonFile($"AppSettings/appsettings.{env}{projectName}.json"); @@ -39,7 +39,7 @@ builder.Services.AddMarten(configuration,builder.Environment); builder.Services.AddCarter(); -Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("Ngo9BigBOggjHTQxAR8/V1NAaF1cXmhKYVtpR2Nbe05yflRGalxSVBYiSV9jS3pTdUViWHtfcHRWQGlcUQ=="); +Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("MjM3OEAzMTM5MmUzMTJlMzBVeS82aFZBTTBzSG56NU1iekJscW9VN0s1UGJMcHBMRlFYMGduOUgxaUFvPQ=="); builder.Host.ConfigureContainer(builder => diff --git a/Netina.Common/Netina.Common.csproj b/Netina.Common/Netina.Common.csproj index 7f66b1e..dbe9777 100644 --- a/Netina.Common/Netina.Common.csproj +++ b/Netina.Common/Netina.Common.csproj @@ -1,6 +1,6 @@  - + - + diff --git a/Netina.Core/EntityServices/OrderHandlers/GetOrderInvoiceCommandHandler.cs b/Netina.Core/EntityServices/OrderHandlers/GetOrderInvoiceCommandHandler.cs index 579b8af..2bb3b8b 100644 --- a/Netina.Core/EntityServices/OrderHandlers/GetOrderInvoiceCommandHandler.cs +++ b/Netina.Core/EntityServices/OrderHandlers/GetOrderInvoiceCommandHandler.cs @@ -1,9 +1,4 @@ -using Netina.Common.Extensions; -using Netina.Domain.CommandQueries.Commands; -using Netina.Domain.CommandQueries.Queries; -using Netina.Domain.Dtos.LargDtos; -using Netina.Domain.Enums; -using Netina.Repository.Repositories.Base.Contracts; +using Netina.Domain.Dtos.LargDtos; using Syncfusion.Drawing; using Syncfusion.Pdf; using Syncfusion.Pdf.Graphics; diff --git a/Netina.Core/Netina.Core.csproj b/Netina.Core/Netina.Core.csproj index f0280d2..3743c49 100644 --- a/Netina.Core/Netina.Core.csproj +++ b/Netina.Core/Netina.Core.csproj @@ -14,7 +14,7 @@ - + diff --git a/Netina.Domain/Dtos/SmallDtos/PaymentSDto.cs b/Netina.Domain/Dtos/SmallDtos/PaymentSDto.cs index 85709e4..099cff6 100644 --- a/Netina.Domain/Dtos/SmallDtos/PaymentSDto.cs +++ b/Netina.Domain/Dtos/SmallDtos/PaymentSDto.cs @@ -1,6 +1,4 @@ -using Netina.Common.Models.Mapper; -using Netina.Domain.Entities.Accounting; -using Netina.Domain.Enums; +using Netina.Domain.Entities.Accounting; namespace Netina.Domain.Dtos.SmallDtos; diff --git a/Netina.Domain/Netina.Domain.csproj b/Netina.Domain/Netina.Domain.csproj index dd95c3f..ab7293a 100644 --- a/Netina.Domain/Netina.Domain.csproj +++ b/Netina.Domain/Netina.Domain.csproj @@ -1,6 +1,6 @@  - + - + diff --git a/Netina.Infrastructure/RestServices/IDigikalaRestApi.cs b/Netina.Infrastructure/RestServices/IDigikalaRestApi.cs index b91ba02..65cd59e 100644 --- a/Netina.Infrastructure/RestServices/IDigikalaRestApi.cs +++ b/Netina.Infrastructure/RestServices/IDigikalaRestApi.cs @@ -7,6 +7,6 @@ public interface IDigikalaRestApi [Get("/v1/search/")] Task SearchProductAsync([Query] string q); - [Get("/v1/product/{productId}/")] + [Get("/v2/product/{productId}/")] Task GetProductAsync(string productId); } \ No newline at end of file diff --git a/Netina.Infrastructure/Services/Scrapers/DigikalaScraper.cs b/Netina.Infrastructure/Services/Scrapers/DigikalaScraper.cs index e9390d8..aace95c 100644 --- a/Netina.Infrastructure/Services/Scrapers/DigikalaScraper.cs +++ b/Netina.Infrastructure/Services/Scrapers/DigikalaScraper.cs @@ -1,16 +1,10 @@ using MediatR; using Microsoft.EntityFrameworkCore; -using Microsoft.IdentityModel.Tokens; -using Netina.Common.Models.Api; -using Netina.Common.Models.Exception; -using Netina.Core.Abstracts; using Netina.Domain.CommandQueries.Commands; using Netina.Domain.Dtos.ScraperDtos.Response; using Netina.Domain.Dtos.SmallDtos; using Netina.Domain.Entities.Brands; using Netina.Domain.Entities.ProductCategories; -using Netina.Domain.Entities.Products; -using Netina.Infrastructure.RestServices; using Netina.Repository.Repositories.Base.Contracts; namespace Netina.Infrastructure.Services.Scrapers; @@ -22,7 +16,7 @@ public class DigikalaScraper : IDigikalaScraper private readonly IMediator _mediator; private readonly IUploadFileService _uploadFileService; - public DigikalaScraper(IRestApiWrapper apiWrapper, IRepositoryWrapper repositoryWrapper,IMediator mediator, IUploadFileService uploadFileService) + public DigikalaScraper(IRestApiWrapper apiWrapper, IRepositoryWrapper repositoryWrapper, IMediator mediator, IUploadFileService uploadFileService) { _apiWrapper = apiWrapper; _repositoryWrapper = repositoryWrapper; @@ -46,12 +40,9 @@ public class DigikalaScraper : IDigikalaScraper public async Task AddProductToShopAsync(string productId, string productName, CancellationToken cancellationToken = default) { var response = await _apiWrapper.DigikalaRestApi.GetProductAsync(productId); - var digiProduct = response.data; var dbProduct = await _repositoryWrapper.SetRepository() - .TableNoTracking - .FirstOrDefaultAsync(p => p.PersianName.ToLower().Trim().Contains(productName.ToLower().Trim()), cancellationToken); - var newSummery = digiProduct.seo.description.Replace("فروشگاه اینترنتی دیجی\u200cکالا", "فروشگاه اینترنتی وسمه"); - if (dbProduct != null && !dbProduct.Summery.IsNullOrEmpty()) - newSummery = dbProduct.Summery; + var digiProduct = response.data; + var newSummery = digiProduct.seo.description.Replace("فروشگاه اینترنتی دیجی\u200cکالا", "فروشگاه اینترنتی وسمه"); + var specifications = new List(); foreach (var specification in digiProduct.product.specifications) { @@ -81,39 +72,36 @@ public class DigikalaScraper : IDigikalaScraper IsPrimary = true, } }; - if (dbProduct != null) + var nonBrand = await _repositoryWrapper.SetRepository() + .TableNoTracking + .FirstOrDefaultAsync(b => b.PersianName == "بدون برند", cancellationToken); + if (nonBrand == null) { - - var request = new UpdateProductCommand(dbProduct.Id, digiProduct.product.title_fa, digiProduct.product.title_en, - newSummery, - dbProduct.ExpertCheck, dbProduct.Tags, dbProduct.Warranty, dbProduct.BeDisplayed, dbProduct.Cost, - dbProduct.PackingCost, dbProduct.Stock, dbProduct.HasExpressDelivery - , dbProduct.MaxOrderCount, false, dbProduct.BrandId, dbProduct.CategoryId, new DiscountSDto(), specifications, files); - await _mediator.Send(request, cancellationToken); + nonBrand = Brand.Create("بدون برند" , "NoBrand","محصولات بدون برند",false,string.Empty); + _repositoryWrapper.SetRepository() + .Add(nonBrand); + await _repositoryWrapper.SaveChangesAsync(cancellationToken); } - else + + var nonCat = await _repositoryWrapper.SetRepository() + .TableNoTracking + .FirstOrDefaultAsync(b => b.Name == "دسته بندی نشده", cancellationToken); + if (nonCat == null) { - var nonBrand = await _repositoryWrapper.SetRepository() - .TableNoTracking - .FirstOrDefaultAsync(b => b.PersianName == "بدون برند", cancellationToken); - if (nonBrand == null) - throw new AppException("NoneBrand is not exist"); - - var nonCat = await _repositoryWrapper.SetRepository() - .TableNoTracking - .FirstOrDefaultAsync(b => b.Name == "دسته بندی نشده", cancellationToken); - if (nonCat == null) - throw new AppException("NoneCategory is not exist"); - - - var request = new CreateProductCommand(productName, digiProduct.product.title_en, - digiProduct.seo.description, - string.Empty, string.Empty, string.Empty,true, 0, - 0, 0, false - , 5, false, nonBrand.Id, nonCat.Id, new DiscountSDto(), specifications, files); - await _mediator.Send(request, cancellationToken); + nonCat = ProductCategory.Create("دسته بندی نشده", "محصولات بدون دسته بندی", false); + _repositoryWrapper.SetRepository() + .Add(nonCat); + await _repositoryWrapper.SaveChangesAsync(cancellationToken); } + + var request = new CreateProductCommand(digiProduct.product.title_fa, digiProduct.product.title_en, + newSummery, + string.Empty, string.Empty, string.Empty, true, 0, + 0, 0, false + , 5, false, nonBrand.Id, nonCat.Id, new DiscountSDto(), specifications, files); + await _mediator.Send(request, cancellationToken); + return true; } } \ No newline at end of file diff --git a/Netina.Infrastructure/Services/SmsService.cs b/Netina.Infrastructure/Services/SmsService.cs index 14510b8..8e2cc5f 100644 --- a/Netina.Infrastructure/Services/SmsService.cs +++ b/Netina.Infrastructure/Services/SmsService.cs @@ -37,7 +37,7 @@ public class SmsService : ISmsService try { var rest = await _restApiWrapper.KaveNegarRestApi.SendLookUp(_siteSettings.KaveNegarApiKey, phoneNumber, - verifyCode, null, null, null, "login-brizco"); + verifyCode, null, null, null, "login-netina"); if (rest.Return.status != 200 && _environment.IsProduction()) throw new BaseApiException(ApiResultStatusCode.SendSmsError, rest.Return.message); diff --git a/Tools/NetinaShop.WordPressDBConverter/Program.cs b/Tools/NetinaShop.WordPressDBConverter/Program.cs index 00b0f14..632d69c 100644 --- a/Tools/NetinaShop.WordPressDBConverter/Program.cs +++ b/Tools/NetinaShop.WordPressDBConverter/Program.cs @@ -93,7 +93,7 @@ foreach (var wordPressPostDto in posts.Where(p => p.post_type == "post")) SeedBlogRequestDto blog; Guid categoryId = default; string postTags = string.Empty; - var postTermRelations = termRelationships.Where(p => p.object_id == wordPressPostDto.ID); + var postTermRelations = termRelationships.Where(p => p.object_id == wordPressPostDto.ID).ToList(); foreach (var postTermRelation in postTermRelations) { var taxanomy = termTaxonomies.FirstOrDefault(f => f.term_taxonomy_id == postTermRelation.term_taxonomy_id); @@ -151,7 +151,7 @@ foreach (var wordPressPostDto in posts.Where(p => p.post_type == "post")) blogs.Add(blog); - await RestWrapper.Instance.SeedRestApi.SeedBlogsAsync(new List{blog}, "kKAYskyG8xPxKnJrHkuYxub4Ao2bnz7AOmNtwDT0RaqzaG7ZvbvaP29tCrC8wJ823RczJFXOIQT2bDOec4F38A=="); + await RestWrapper.Instance.SeedRestApi.SeedBlogsAsync(new List { blog }, "kKAYskyG8xPxKnJrHkuYxub4Ao2bnz7AOmNtwDT0RaqzaG7ZvbvaP29tCrC8wJ823RczJFXOIQT2bDOec4F38A=="); Console.WriteLine($"{thumbCounter++ } / {blogs.Count} Blog Added Success !"); }