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 !");
}