From 4100e2f8fa1a2623c2d5f9d069425850e9b77f22 Mon Sep 17 00:00:00 2001 From: "Amir.H Khademi" Date: Tue, 13 Feb 2024 12:22:58 +0330 Subject: [PATCH] fix : fix submit delivery and discount step , feat ver 0.5.6.14 --- .version | 2 +- .../Configurations/LoggerConfig.cs | 2 +- NetinaShop.Core/CoreServices/PageService.cs | 19 +- .../CalculateOrderDiscountCommandHandler.cs | 2 +- .../SubmitDiscountCommandHandler.cs | 2 +- .../SubmitOrderDeliveryCommandHandler.cs | 39 +- .../CalculateOrderCommandHandler.cs | 4 +- NetinaShop.Domain/Dtos/LargDtos/OrderLDto.cs | 13 +- .../Dtos/SmallDtos/BasePageEntitySDto.cs | 5 +- .../Entities/Orders/Order.Aggregate.cs | 10 +- NetinaShop.Domain/Entities/Orders/Order.cs | 3 +- .../Entities/Pages/BasePageEntity.cs | 4 +- NetinaShop.Domain/Mappers/OrderMapper.g.cs | 756 ++++---- .../Handlers/Orders/GetOrderQueryHandler.cs | 11 +- ...0240212202112_EditOrderDelivey.Designer.cs | 1679 +++++++++++++++++ .../20240212202112_EditOrderDelivey.cs | 41 + .../ApplicationContextModelSnapshot.cs | 9 +- 17 files changed, 2150 insertions(+), 451 deletions(-) create mode 100644 NetinaShop.Repository/Migrations/20240212202112_EditOrderDelivey.Designer.cs create mode 100644 NetinaShop.Repository/Migrations/20240212202112_EditOrderDelivey.cs diff --git a/.version b/.version index 662635e..c249261 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -0.5.4.13 \ No newline at end of file +0.5.6.14 \ No newline at end of file diff --git a/NetinaShop.Api/WebFramework/Configurations/LoggerConfig.cs b/NetinaShop.Api/WebFramework/Configurations/LoggerConfig.cs index b33d772..b899f0e 100644 --- a/NetinaShop.Api/WebFramework/Configurations/LoggerConfig.cs +++ b/NetinaShop.Api/WebFramework/Configurations/LoggerConfig.cs @@ -13,7 +13,7 @@ public static class LoggerConfig o.MinimumEventLevel = LogEventLevel.Error; o.Dsn = "https://592b7fbb29464442a8e996247abe857f@watcher.igarson.app/7"; }) - .MinimumLevel.Override("Microsoft.EntityFrameworkCore", Serilog.Events.LogEventLevel.Information) + .MinimumLevel.Override("Microsoft.EntityFrameworkCore", Serilog.Events.LogEventLevel.Error) .CreateLogger(); } } \ No newline at end of file diff --git a/NetinaShop.Core/CoreServices/PageService.cs b/NetinaShop.Core/CoreServices/PageService.cs index 592334b..62befc3 100644 --- a/NetinaShop.Core/CoreServices/PageService.cs +++ b/NetinaShop.Core/CoreServices/PageService.cs @@ -1,4 +1,7 @@ -using Microsoft.AspNetCore.Mvc.RazorPages; +using System.Reflection; +using System.Text.Json; +using Microsoft.AspNetCore.Mvc.RazorPages; +using NetinaShop.Domain; using NetinaShop.Domain.Entities.Pages; using NetinaShop.Repository.Repositories.Entity.Abstracts; @@ -24,11 +27,11 @@ public class PageService : IPageService else if (type != null) page = await _martenRepository.GetEntityAsync(entity => entity.Type == type, cancellationToken); if (page == null) - throw new AppException("Page not found",ApiResultStatusCode.NotFound); + throw new AppException("Page not found", ApiResultStatusCode.NotFound); + var entityType = Assembly.GetAssembly(typeof(DomainConfig))?.GetType(page.Type); var dto = new BasePageEntitySDto { - Content = page.Content, Description = page.Description, Id = page.Id, @@ -36,7 +39,7 @@ public class PageService : IPageService IsHtmlBasePage = page.IsHtmlBasePage, Name = page.Name, Slug = page.Slug, - Data = JsonConvert.DeserializeObject(page.Data) + Data = page.Data }; return dto; @@ -48,9 +51,10 @@ public class PageService : IPageService var pages = await _martenRepository.GetEntitiesAsync(cancellationToken); foreach (var page in pages) { + + var type = Assembly.GetAssembly(typeof(DomainConfig))?.GetType(page.Type); var dto = new BasePageEntitySDto { - Content = page.Content, Description = page.Description, Id = page.Id, @@ -58,7 +62,7 @@ public class PageService : IPageService IsHtmlBasePage = page.IsHtmlBasePage, Name = page.Name, Slug = page.Slug, - Data = JsonConvert.DeserializeObject(page.Data) + Data = page.Data }; sDtos.Add(dto); } @@ -77,8 +81,9 @@ public class PageService : IPageService Name = entity.Name, Type = entity.Type, Slug = entity.Slug, - Data = JsonConvert.SerializeObject(entity.Data) }; + var type = Assembly.GetAssembly(typeof(DomainConfig))?.GetType(entity.Type); + basePage.Data = JsonConvert.SerializeObject(((JsonElement)entity.Data).Deserialize(type)); await _martenRepository.AddOrUpdateEntityAsync(basePage, cancellationToken); return true; } diff --git a/NetinaShop.Core/EntityServices/DiscountHandlers/CalculateOrderDiscountCommandHandler.cs b/NetinaShop.Core/EntityServices/DiscountHandlers/CalculateOrderDiscountCommandHandler.cs index 08f5718..df746d9 100644 --- a/NetinaShop.Core/EntityServices/DiscountHandlers/CalculateOrderDiscountCommandHandler.cs +++ b/NetinaShop.Core/EntityServices/DiscountHandlers/CalculateOrderDiscountCommandHandler.cs @@ -18,7 +18,7 @@ public class CalculateOrderDiscountCommandHandler : IRequestHandler d.Code == request.DiscountCode, cancellationToken); if (discount == null) - throw new AppException("Discount not found", ApiResultStatusCode.NotFound); + throw new AppException("تخفیف وجود منقضی شده است یا وجود ندارد", ApiResultStatusCode.NotFound); double discountPrice = 0; diff --git a/NetinaShop.Core/EntityServices/OrderBagHandlers/SubmitDiscountCommandHandler.cs b/NetinaShop.Core/EntityServices/OrderBagHandlers/SubmitDiscountCommandHandler.cs index 6733ba6..22673c5 100644 --- a/NetinaShop.Core/EntityServices/OrderBagHandlers/SubmitDiscountCommandHandler.cs +++ b/NetinaShop.Core/EntityServices/OrderBagHandlers/SubmitDiscountCommandHandler.cs @@ -21,7 +21,7 @@ public class SubmitDiscountCommandHandler : IRequestHandler d.Code == request.DiscountCode, cancellationToken); if (discount == null || discount.IsExpired()) - throw new AppException("Discount is expired or not found", ApiResultStatusCode.NotFound); + throw new AppException("تخفیف منقضی شده است یا وجود ندارد", ApiResultStatusCode.NotFound); order.SetDiscount(request.DiscountCode); _repositoryWrapper.SetRepository().Update(order); await _repositoryWrapper.SaveChangesAsync(cancellationToken); diff --git a/NetinaShop.Core/EntityServices/OrderBagHandlers/SubmitOrderDeliveryCommandHandler.cs b/NetinaShop.Core/EntityServices/OrderBagHandlers/SubmitOrderDeliveryCommandHandler.cs index bcfc045..eb1e008 100644 --- a/NetinaShop.Core/EntityServices/OrderBagHandlers/SubmitOrderDeliveryCommandHandler.cs +++ b/NetinaShop.Core/EntityServices/OrderBagHandlers/SubmitOrderDeliveryCommandHandler.cs @@ -1,4 +1,5 @@ -using NetinaShop.Domain.Entities.Warehouses; +using NetinaShop.Domain.Entities.Orders; +using NetinaShop.Domain.Entities.Warehouses; namespace NetinaShop.Core.EntityServices.OrderBagHandlers; @@ -14,32 +15,32 @@ public class SubmitOrderDeliveryCommandHandler : IRequestHandler Handle(SubmitOrderDeliveryCommand request, CancellationToken cancellationToken) { - var order = await _mediator.Send(new GetOrderQuery(request.OrderId), cancellationToken); + 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() + .TableNoTracking + .FirstOrDefaultAsync(od => od.OrderId == request.OrderId, cancellationToken); + if (orderDelivery != null) + { + order.AddOrderDelivery(orderDelivery.AddressId, orderDelivery.DeliveryCost, orderDelivery.ShippingId, orderDelivery.OrderId, orderDelivery.Id); + } + var shipping = await _repositoryWrapper.SetRepository() .TableNoTracking .FirstOrDefaultAsync(s => s.Id == request.ShippingId, cancellationToken); if (shipping == null) throw new AppException("Shipping not found", ApiResultStatusCode.NotFound); - if (order.OrderDeliveries.Count > 0) - { - foreach (var orderDelivery in order.OrderDeliveries) - { - var newEnt = OrderDelivery.Create(request.AddressId, shipping.DeliveryCost, request.ShippingId, - request.OrderId); - newEnt.CreatedAt = orderDelivery.CreatedAt; - newEnt.CreatedBy = orderDelivery.CreatedBy; - newEnt.Id = orderDelivery.Id; - _repositoryWrapper.SetRepository() - .Update(newEnt); - await _repositoryWrapper.SaveChangesAsync(cancellationToken); - } - order.OrderDeliveries.Clear(); - } - else - order.AddOrderDelivery(request.AddressId, shipping.DeliveryCost, request.ShippingId, request.OrderId); + + order.AddOrderDelivery(request.AddressId, shipping.DeliveryCost, request.ShippingId, request.OrderId); _repositoryWrapper.SetRepository().Update(order); await _repositoryWrapper.SaveChangesAsync(cancellationToken); + var calculatedOrder = await _mediator.Send(new CalculateOrderCommand(order.Id), cancellationToken); return calculatedOrder.AdaptToSDto(); } diff --git a/NetinaShop.Core/EntityServices/OrderHandlers/CalculateOrderCommandHandler.cs b/NetinaShop.Core/EntityServices/OrderHandlers/CalculateOrderCommandHandler.cs index 9f1eaa5..00aeb49 100644 --- a/NetinaShop.Core/EntityServices/OrderHandlers/CalculateOrderCommandHandler.cs +++ b/NetinaShop.Core/EntityServices/OrderHandlers/CalculateOrderCommandHandler.cs @@ -24,7 +24,7 @@ public class CalculateOrderCommandHandler : IRequestHandler op.DeliveryCost); + var deliveryPrice = order.OrderDelivery?.DeliveryCost ?? 0; double discountPrice = order.OrderProducts.Sum(op=>(op.ProductFee - op.ProductFeeWithDiscount) * op.Count); if (!order.DiscountCode.IsNullOrEmpty()) { @@ -36,7 +36,7 @@ public class CalculateOrderCommandHandler : IRequestHandler().Update(order); await _repositoryWrapper.SaveChangesAsync(cancellationToken); return order; diff --git a/NetinaShop.Domain/Dtos/LargDtos/OrderLDto.cs b/NetinaShop.Domain/Dtos/LargDtos/OrderLDto.cs index 783c45b..cda3e9a 100644 --- a/NetinaShop.Domain/Dtos/LargDtos/OrderLDto.cs +++ b/NetinaShop.Domain/Dtos/LargDtos/OrderLDto.cs @@ -22,18 +22,9 @@ public class OrderLDto : BaseDto public List OrderProducts { get; set; } = new(); - public List OrderDeliveries { get; set; } = new(); - public List Payments { get; set; } = new(); - public OrderDeliverySDto OrderDelivery - { - get - { - if (OrderDeliveries.Count > 0) - return OrderDeliveries.FirstOrDefault() ?? new OrderDeliverySDto(); - return new OrderDeliverySDto(); - } - } + + public OrderDeliverySDto? OrderDelivery { get; internal set; } } diff --git a/NetinaShop.Domain/Dtos/SmallDtos/BasePageEntitySDto.cs b/NetinaShop.Domain/Dtos/SmallDtos/BasePageEntitySDto.cs index 14f8e9e..b21766c 100644 --- a/NetinaShop.Domain/Dtos/SmallDtos/BasePageEntitySDto.cs +++ b/NetinaShop.Domain/Dtos/SmallDtos/BasePageEntitySDto.cs @@ -1,4 +1,5 @@ using NetinaShop.Domain.Entities.Pages; +using Newtonsoft.Json; namespace NetinaShop.Domain.Dtos.SmallDtos; @@ -10,5 +11,7 @@ public class BasePageEntitySDto : BaseDto public bool IsCustomPage { get; set; } public bool IsHtmlBasePage { get; set; } public string Slug { get; set; } = string.Empty; - public object? Data { get; set; } + public string Data { get; set; } = string.Empty; + + public T GetData() => JsonConvert.DeserializeObject(Data); } \ No newline at end of file diff --git a/NetinaShop.Domain/Entities/Orders/Order.Aggregate.cs b/NetinaShop.Domain/Entities/Orders/Order.Aggregate.cs index 53a25ce..d673f43 100644 --- a/NetinaShop.Domain/Entities/Orders/Order.Aggregate.cs +++ b/NetinaShop.Domain/Entities/Orders/Order.Aggregate.cs @@ -75,9 +75,17 @@ public partial class Order public void AddOrderDelivery(Guid addressId, double deliveryCost, Guid shippingId, Guid orderId) { var orderDelivery = OrderDelivery.Create(addressId, deliveryCost, shippingId, orderId); - OrderDeliveries.Add(orderDelivery); + if (OrderDelivery != null) + orderDelivery.Id = OrderDelivery.Id; + OrderDelivery = orderDelivery; } + public void AddOrderDelivery(Guid addressId, double deliveryCost, Guid shippingId, Guid orderId,Guid orderDeliveryId) + { + var orderDelivery = OrderDelivery.Create(addressId, deliveryCost, shippingId, orderId); + orderDelivery.Id = orderDeliveryId; + OrderDelivery = orderDelivery; + } public void SetTotalPrice(double totalProductPrice, double packingPrice, double servicePrice, diff --git a/NetinaShop.Domain/Entities/Orders/Order.cs b/NetinaShop.Domain/Entities/Orders/Order.cs index b09973d..29c0fc7 100644 --- a/NetinaShop.Domain/Entities/Orders/Order.cs +++ b/NetinaShop.Domain/Entities/Orders/Order.cs @@ -69,9 +69,10 @@ public partial class Order : ApiEntity public Guid UserId { get; internal set; } public ApplicationUser? User { get; internal set; } + public OrderDelivery? OrderDelivery { get; set; } + public List OrderProducts { get; internal set; } = new(); - public List OrderDeliveries { get; internal set; } = new(); public List Payments { get; internal set; } = new(); } \ No newline at end of file diff --git a/NetinaShop.Domain/Entities/Pages/BasePageEntity.cs b/NetinaShop.Domain/Entities/Pages/BasePageEntity.cs index edc8b37..e6d33c5 100644 --- a/NetinaShop.Domain/Entities/Pages/BasePageEntity.cs +++ b/NetinaShop.Domain/Entities/Pages/BasePageEntity.cs @@ -1,4 +1,6 @@ -namespace NetinaShop.Domain.Entities.Pages; +using System.Text.Json; + +namespace NetinaShop.Domain.Entities.Pages; public class BasePageEntity { diff --git a/NetinaShop.Domain/Mappers/OrderMapper.g.cs b/NetinaShop.Domain/Mappers/OrderMapper.g.cs index cfa471b..fedb7d7 100644 --- a/NetinaShop.Domain/Mappers/OrderMapper.g.cs +++ b/NetinaShop.Domain/Mappers/OrderMapper.g.cs @@ -34,219 +34,233 @@ namespace NetinaShop.Domain.Mappers PreparingMinute = p1.PreparingMinute, DiscountCode = p1.DiscountCode, User = new ApplicationUser() {PhoneNumber = p1.UserPhoneNumber}, + OrderDelivery = p1.OrderDelivery == null ? null : new OrderDelivery() + { + AddressId = p1.OrderDelivery.AddressId, + Address = p1.OrderDelivery.Address == null ? null : (UserAddress)Convert.ChangeType((object)p1.OrderDelivery.Address, typeof(UserAddress)), + DeliveryCost = p1.OrderDelivery.DeliveryCost, + ShippingId = p1.OrderDelivery.ShippingId, + Shipping = new Shipping() {Id = p1.OrderDelivery.ShippingId}, + OrderId = p1.OrderDelivery.OrderId, + Order = new Order() {Id = p1.OrderDelivery.OrderId}, + Id = p1.OrderDelivery.Id, + CreatedAt = p1.OrderDelivery.CreatedAt + }, OrderProducts = funcMain1(p1.OrderProducts), - OrderDeliveries = funcMain2(p1.OrderDeliveries), - Payments = funcMain3(p1.Payments), + Payments = funcMain2(p1.Payments), Id = p1.Id, CreatedAt = p1.CreatedAt }; } - public static Order AdaptTo(this OrderLDto p5, Order p6) + public static Order AdaptTo(this OrderLDto p4, Order p5) { - if (p5 == null) + if (p4 == null) { return null; } - Order result = p6 ?? new Order(); + Order result = p5 ?? new Order(); - result.FactorCode = p5.FactorCode; - result.TotalProductsPrice = (double)p5.TotalProductsPrice; - result.PackingPrice = (double)p5.PackingPrice; - result.ServicePrice = (double)p5.ServicePrice; - result.DeliveryPrice = (double)p5.DeliveryPrice; - result.DiscountPrice = (double)p5.DiscountPrice; - result.TaxesPrice = (double)p5.TaxesPrice; - result.TotalPrice = (double)p5.TotalPrice; - result.IsPayed = p5.IsPayed; - result.OrderStatus = p5.OrderStatus; - result.DoneAt = p5.DoneAt; - result.OrderAt = p5.OrderAt; - result.PreparingMinute = p5.PreparingMinute; - result.DiscountCode = p5.DiscountCode; - result.User = funcMain4(new Never(), result.User, p5); - result.OrderProducts = funcMain5(p5.OrderProducts, result.OrderProducts); - result.OrderDeliveries = funcMain6(p5.OrderDeliveries, result.OrderDeliveries); - result.Payments = funcMain7(p5.Payments, result.Payments); - result.Id = p5.Id; - result.CreatedAt = p5.CreatedAt; + result.FactorCode = p4.FactorCode; + result.TotalProductsPrice = (double)p4.TotalProductsPrice; + result.PackingPrice = (double)p4.PackingPrice; + result.ServicePrice = (double)p4.ServicePrice; + result.DeliveryPrice = (double)p4.DeliveryPrice; + result.DiscountPrice = (double)p4.DiscountPrice; + result.TaxesPrice = (double)p4.TaxesPrice; + result.TotalPrice = (double)p4.TotalPrice; + result.IsPayed = p4.IsPayed; + result.OrderStatus = p4.OrderStatus; + result.DoneAt = p4.DoneAt; + result.OrderAt = p4.OrderAt; + result.PreparingMinute = p4.PreparingMinute; + result.DiscountCode = p4.DiscountCode; + result.User = funcMain3(new Never(), result.User, p4); + result.OrderDelivery = funcMain4(p4.OrderDelivery, result.OrderDelivery); + result.OrderProducts = funcMain7(p4.OrderProducts, result.OrderProducts); + result.Payments = funcMain8(p4.Payments, result.Payments); + result.Id = p4.Id; + result.CreatedAt = p4.CreatedAt; return result; } - public static Expression> ProjectToOrder => p15 => new Order() + public static Expression> ProjectToOrder => p18 => new Order() { - FactorCode = p15.FactorCode, - TotalProductsPrice = (double)p15.TotalProductsPrice, - PackingPrice = (double)p15.PackingPrice, - ServicePrice = (double)p15.ServicePrice, - DeliveryPrice = (double)p15.DeliveryPrice, - DiscountPrice = (double)p15.DiscountPrice, - TaxesPrice = (double)p15.TaxesPrice, - TotalPrice = (double)p15.TotalPrice, - IsPayed = p15.IsPayed, - OrderStatus = p15.OrderStatus, - DoneAt = p15.DoneAt, - OrderAt = p15.OrderAt, - PreparingMinute = p15.PreparingMinute, - DiscountCode = p15.DiscountCode, - User = new ApplicationUser() {PhoneNumber = p15.UserPhoneNumber}, - OrderProducts = p15.OrderProducts.Select(p16 => new OrderProduct() + FactorCode = p18.FactorCode, + TotalProductsPrice = (double)p18.TotalProductsPrice, + PackingPrice = (double)p18.PackingPrice, + ServicePrice = (double)p18.ServicePrice, + DeliveryPrice = (double)p18.DeliveryPrice, + DiscountPrice = (double)p18.DiscountPrice, + TaxesPrice = (double)p18.TaxesPrice, + TotalPrice = (double)p18.TotalPrice, + IsPayed = p18.IsPayed, + OrderStatus = p18.OrderStatus, + DoneAt = p18.DoneAt, + OrderAt = p18.OrderAt, + PreparingMinute = p18.PreparingMinute, + DiscountCode = p18.DiscountCode, + User = new ApplicationUser() {PhoneNumber = p18.UserPhoneNumber}, + OrderDelivery = p18.OrderDelivery == null ? null : new OrderDelivery() { - Count = p16.Count, - ProductFee = p16.ProductFee, - ProductFeeWithDiscount = p16.ProductFeeWithDiscount, - HasDiscount = p16.HasDiscount, - ProductCost = p16.ProductCost, - PackingFee = p16.PackingFee, - PackingCost = p16.PackingCost, - OrderProductStatus = p16.OrderProductStatus, - ProductId = p16.ProductId, + AddressId = p18.OrderDelivery.AddressId, + Address = p18.OrderDelivery.Address == null ? null : (UserAddress)Convert.ChangeType((object)p18.OrderDelivery.Address, typeof(UserAddress)), + DeliveryCost = p18.OrderDelivery.DeliveryCost, + ShippingId = p18.OrderDelivery.ShippingId, + Shipping = new Shipping() {Id = p18.OrderDelivery.ShippingId}, + OrderId = p18.OrderDelivery.OrderId, + Order = new Order() {Id = p18.OrderDelivery.OrderId}, + Id = p18.OrderDelivery.Id, + CreatedAt = p18.OrderDelivery.CreatedAt + }, + OrderProducts = p18.OrderProducts.Select(p19 => new OrderProduct() + { + Count = p19.Count, + ProductFee = p19.ProductFee, + ProductFeeWithDiscount = p19.ProductFeeWithDiscount, + HasDiscount = p19.HasDiscount, + ProductCost = p19.ProductCost, + PackingFee = p19.PackingFee, + PackingCost = p19.PackingCost, + OrderProductStatus = p19.OrderProductStatus, + ProductId = p19.ProductId, Product = new Product() { - Cost = p16.ProductCost, - Id = p16.ProductId + Cost = p19.ProductCost, + Id = p19.ProductId }, - OrderId = p16.OrderId, - Order = new Order() {Id = p16.OrderId}, - Id = p16.Id, - CreatedAt = p16.CreatedAt - }).ToList(), - OrderDeliveries = p15.OrderDeliveries.Select(p17 => new OrderDelivery() - { - Address = p17.Address == null ? null : (UserAddress)Convert.ChangeType((object)p17.Address, typeof(UserAddress)), - ShippingId = p17.ShippingId, - Shipping = new Shipping() {Id = p17.ShippingId}, - OrderId = p17.OrderId, - Order = new Order() {Id = p17.OrderId}, - Id = p17.Id, - CreatedAt = p17.CreatedAt - }).ToList(), - Payments = p15.Payments.Select(p18 => new Payment() - { - FactorNumber = p18.FactorNumber, - Amount = p18.Amount, - Description = p18.Description, - TransactionCode = p18.TransactionCode, - CardPan = p18.CardPan, - Authority = p18.Authority, - Type = p18.Type, - Status = p18.Status, - OrderId = p18.OrderId, - Order = new Order() {Id = p18.OrderId}, - UserId = p18.UserId, - User = new ApplicationUser() - { - Id = p18.UserId, - PhoneNumber = p18.UserPhoneNumber - }, - Id = p18.Id, - CreatedAt = p18.CreatedAt - }).ToList(), - Id = p15.Id, - CreatedAt = p15.CreatedAt - }; - public static OrderLDto AdaptToLDto(this Order p19) - { - return p19 == null ? null : new OrderLDto() - { - FactorCode = p19.FactorCode, - TotalPrice = (long)p19.TotalPrice, - DeliveryPrice = (long)p19.DeliveryPrice, - TaxesPrice = (long)p19.TaxesPrice, - ServicePrice = (long)p19.ServicePrice, - PackingPrice = (long)p19.PackingPrice, - TotalProductsPrice = (long)p19.TotalProductsPrice, - DiscountPrice = (long)p19.DiscountPrice, - IsPayed = p19.IsPayed, - OrderStatus = p19.OrderStatus, - DoneAt = p19.DoneAt, - OrderAt = p19.OrderAt, - PreparingMinute = p19.PreparingMinute, - DiscountCode = p19.DiscountCode, - UserFullName = p19.User != null ? p19.User.FirstName + " " + p19.User.LastName : string.Empty, - UserPhoneNumber = p19.User != null ? p19.User.PhoneNumber : string.Empty, - OrderProducts = funcMain8(p19.OrderProducts), - OrderDeliveries = funcMain9(p19.OrderDeliveries), - Payments = funcMain10(p19.Payments), + OrderId = p19.OrderId, + Order = new Order() {Id = p19.OrderId}, Id = p19.Id, CreatedAt = p19.CreatedAt + }).ToList(), + Payments = p18.Payments.Select(p20 => new Payment() + { + FactorNumber = p20.FactorNumber, + Amount = p20.Amount, + Description = p20.Description, + TransactionCode = p20.TransactionCode, + CardPan = p20.CardPan, + Authority = p20.Authority, + Type = p20.Type, + Status = p20.Status, + OrderId = p20.OrderId, + Order = new Order() {Id = p20.OrderId}, + UserId = p20.UserId, + User = new ApplicationUser() + { + Id = p20.UserId, + PhoneNumber = p20.UserPhoneNumber + }, + Id = p20.Id, + CreatedAt = p20.CreatedAt + }).ToList(), + Id = p18.Id, + CreatedAt = p18.CreatedAt + }; + public static OrderLDto AdaptToLDto(this Order p21) + { + return p21 == null ? null : new OrderLDto() + { + FactorCode = p21.FactorCode, + TotalPrice = (long)p21.TotalPrice, + DeliveryPrice = (long)p21.DeliveryPrice, + TaxesPrice = (long)p21.TaxesPrice, + ServicePrice = (long)p21.ServicePrice, + PackingPrice = (long)p21.PackingPrice, + TotalProductsPrice = (long)p21.TotalProductsPrice, + DiscountPrice = (long)p21.DiscountPrice, + IsPayed = p21.IsPayed, + OrderStatus = p21.OrderStatus, + DoneAt = p21.DoneAt, + OrderAt = p21.OrderAt, + PreparingMinute = p21.PreparingMinute, + DiscountCode = p21.DiscountCode, + UserFullName = p21.User != null ? p21.User.FirstName + " " + p21.User.LastName : string.Empty, + UserPhoneNumber = p21.User != null ? p21.User.PhoneNumber : string.Empty, + OrderProducts = funcMain9(p21.OrderProducts), + Payments = funcMain10(p21.Payments), + OrderDelivery = p21.OrderDelivery == null ? null : new OrderDeliverySDto() + { + Address = p21.OrderDelivery.Address == null ? null : p21.OrderDelivery.Address.ToString(), + ShippingMethod = p21.OrderDelivery.Shipping != null ? p21.OrderDelivery.Shipping.Name : string.Empty, + DeliveryCost = p21.OrderDelivery.DeliveryCost, + AddressId = p21.OrderDelivery.AddressId, + OrderId = p21.OrderDelivery.OrderId, + ShippingId = p21.OrderDelivery.ShippingId, + Id = p21.OrderDelivery.Id, + CreatedAt = p21.OrderDelivery.CreatedAt + }, + Id = p21.Id, + CreatedAt = p21.CreatedAt }; } - public static OrderLDto AdaptTo(this Order p23, OrderLDto p24) + public static OrderLDto AdaptTo(this Order p24, OrderLDto p25) { - if (p23 == null) + if (p24 == null) { return null; } - OrderLDto result = p24 ?? new OrderLDto(); + OrderLDto result = p25 ?? new OrderLDto(); - result.FactorCode = p23.FactorCode; - result.TotalPrice = (long)p23.TotalPrice; - result.DeliveryPrice = (long)p23.DeliveryPrice; - result.TaxesPrice = (long)p23.TaxesPrice; - result.ServicePrice = (long)p23.ServicePrice; - result.PackingPrice = (long)p23.PackingPrice; - result.TotalProductsPrice = (long)p23.TotalProductsPrice; - result.DiscountPrice = (long)p23.DiscountPrice; - result.IsPayed = p23.IsPayed; - result.OrderStatus = p23.OrderStatus; - result.DoneAt = p23.DoneAt; - result.OrderAt = p23.OrderAt; - result.PreparingMinute = p23.PreparingMinute; - result.DiscountCode = p23.DiscountCode; - result.UserFullName = p23.User != null ? p23.User.FirstName + " " + p23.User.LastName : string.Empty; - result.UserPhoneNumber = p23.User != null ? p23.User.PhoneNumber : string.Empty; - result.OrderProducts = funcMain11(p23.OrderProducts, result.OrderProducts); - result.OrderDeliveries = funcMain12(p23.OrderDeliveries, result.OrderDeliveries); - result.Payments = funcMain13(p23.Payments, result.Payments); - result.Id = p23.Id; - result.CreatedAt = p23.CreatedAt; + result.FactorCode = p24.FactorCode; + result.TotalPrice = (long)p24.TotalPrice; + result.DeliveryPrice = (long)p24.DeliveryPrice; + result.TaxesPrice = (long)p24.TaxesPrice; + result.ServicePrice = (long)p24.ServicePrice; + result.PackingPrice = (long)p24.PackingPrice; + result.TotalProductsPrice = (long)p24.TotalProductsPrice; + result.DiscountPrice = (long)p24.DiscountPrice; + result.IsPayed = p24.IsPayed; + result.OrderStatus = p24.OrderStatus; + result.DoneAt = p24.DoneAt; + result.OrderAt = p24.OrderAt; + result.PreparingMinute = p24.PreparingMinute; + result.DiscountCode = p24.DiscountCode; + result.UserFullName = p24.User != null ? p24.User.FirstName + " " + p24.User.LastName : string.Empty; + result.UserPhoneNumber = p24.User != null ? p24.User.PhoneNumber : string.Empty; + result.OrderProducts = funcMain11(p24.OrderProducts, result.OrderProducts); + result.Payments = funcMain12(p24.Payments, result.Payments); + result.OrderDelivery = funcMain13(p24.OrderDelivery, result.OrderDelivery); + result.Id = p24.Id; + result.CreatedAt = p24.CreatedAt; return result; } - public static Expression> ProjectToLDto => p31 => new OrderLDto() + public static Expression> ProjectToLDto => p32 => new OrderLDto() { - FactorCode = p31.FactorCode, - TotalPrice = (long)p31.TotalPrice, - DeliveryPrice = (long)p31.DeliveryPrice, - TaxesPrice = (long)p31.TaxesPrice, - ServicePrice = (long)p31.ServicePrice, - PackingPrice = (long)p31.PackingPrice, - TotalProductsPrice = (long)p31.TotalProductsPrice, - DiscountPrice = (long)p31.DiscountPrice, - IsPayed = p31.IsPayed, - OrderStatus = p31.OrderStatus, - DoneAt = p31.DoneAt, - OrderAt = p31.OrderAt, - PreparingMinute = p31.PreparingMinute, - DiscountCode = p31.DiscountCode, - UserFullName = p31.User != null ? p31.User.FirstName + " " + p31.User.LastName : string.Empty, - UserPhoneNumber = p31.User != null ? p31.User.PhoneNumber : string.Empty, - OrderProducts = p31.OrderProducts.Select(p32 => new OrderProductSDto() + FactorCode = p32.FactorCode, + TotalPrice = (long)p32.TotalPrice, + DeliveryPrice = (long)p32.DeliveryPrice, + TaxesPrice = (long)p32.TaxesPrice, + ServicePrice = (long)p32.ServicePrice, + PackingPrice = (long)p32.PackingPrice, + TotalProductsPrice = (long)p32.TotalProductsPrice, + DiscountPrice = (long)p32.DiscountPrice, + IsPayed = p32.IsPayed, + OrderStatus = p32.OrderStatus, + DoneAt = p32.DoneAt, + OrderAt = p32.OrderAt, + PreparingMinute = p32.PreparingMinute, + DiscountCode = p32.DiscountCode, + UserFullName = p32.User != null ? p32.User.FirstName + " " + p32.User.LastName : string.Empty, + UserPhoneNumber = p32.User != null ? p32.User.PhoneNumber : string.Empty, + OrderProducts = p32.OrderProducts.Select(p33 => new OrderProductSDto() { - Count = p32.Count, - ProductFee = p32.ProductFee, - ProductFeeWithDiscount = p32.ProductFeeWithDiscount, - HasDiscount = p32.HasDiscount, - ProductCost = p32.ProductCost, - PackingFee = p32.PackingFee, - PackingCost = p32.PackingCost, - OrderProductStatus = p32.OrderProductStatus, - ProductId = p32.ProductId, - ProductName = p32.Product != null ? p32.Product.PersianName : string.Empty, - OrderId = p32.OrderId, - Id = p32.Id, - CreatedAt = p32.CreatedAt - }).ToList(), - OrderDeliveries = p31.OrderDeliveries.Select(p33 => new OrderDeliverySDto() - { - Address = p33.Address == null ? null : p33.Address.ToString(), - ShippingMethod = p33.Shipping != null ? p33.Shipping.Name : string.Empty, + Count = p33.Count, + ProductFee = p33.ProductFee, + ProductFeeWithDiscount = p33.ProductFeeWithDiscount, + HasDiscount = p33.HasDiscount, + ProductCost = p33.ProductCost, + PackingFee = p33.PackingFee, + PackingCost = p33.PackingCost, + OrderProductStatus = p33.OrderProductStatus, + ProductId = p33.ProductId, + ProductName = p33.Product != null ? p33.Product.PersianName : string.Empty, OrderId = p33.OrderId, - ShippingId = p33.ShippingId, Id = p33.Id, CreatedAt = p33.CreatedAt - }).ToList(), - Payments = p31.Payments.Select(p34 => new PaymentSDto() + }).ToList(), + Payments = p32.Payments.Select(p34 => new PaymentSDto() { FactorNumber = p34.FactorNumber, Amount = p34.Amount, @@ -263,8 +277,19 @@ namespace NetinaShop.Domain.Mappers Id = p34.Id, CreatedAt = p34.CreatedAt }).ToList(), - Id = p31.Id, - CreatedAt = p31.CreatedAt + OrderDelivery = p32.OrderDelivery == null ? null : new OrderDeliverySDto() + { + Address = p32.OrderDelivery.Address == null ? null : p32.OrderDelivery.Address.ToString(), + ShippingMethod = p32.OrderDelivery.Shipping != null ? p32.OrderDelivery.Shipping.Name : string.Empty, + DeliveryCost = p32.OrderDelivery.DeliveryCost, + AddressId = p32.OrderDelivery.AddressId, + OrderId = p32.OrderDelivery.OrderId, + ShippingId = p32.OrderDelivery.ShippingId, + Id = p32.OrderDelivery.Id, + CreatedAt = p32.OrderDelivery.CreatedAt + }, + Id = p32.Id, + CreatedAt = p32.CreatedAt }; public static Order AdaptToOrder(this OrderSDto p35) { @@ -447,50 +472,20 @@ namespace NetinaShop.Domain.Mappers } - private static List funcMain2(List p3) + private static List funcMain2(List p3) { if (p3 == null) { return null; } - List result = new List(p3.Count); + List result = new List(p3.Count); int i = 0; int len = p3.Count; while (i < len) { - OrderDeliverySDto item = p3[i]; - result.Add(item == null ? null : new OrderDelivery() - { - Address = item.Address == null ? null : (UserAddress)Convert.ChangeType((object)item.Address, typeof(UserAddress)), - ShippingId = item.ShippingId, - Shipping = new Shipping() {Id = item.ShippingId}, - OrderId = item.OrderId, - Order = new Order() {Id = item.OrderId}, - Id = item.Id, - CreatedAt = item.CreatedAt - }); - i++; - } - return result; - - } - - private static List funcMain3(List p4) - { - if (p4 == null) - { - return null; - } - List result = new List(p4.Count); - - int i = 0; - int len = p4.Count; - - while (i < len) - { - PaymentSDto item = p4[i]; + PaymentSDto item = p3[i]; result.Add(item == null ? null : new Payment() { FactorNumber = item.FactorNumber, @@ -518,29 +513,50 @@ namespace NetinaShop.Domain.Mappers } - private static ApplicationUser funcMain4(Never p7, ApplicationUser p8, OrderLDto p5) + private static ApplicationUser funcMain3(Never p6, ApplicationUser p7, OrderLDto p4) { - ApplicationUser result = p8 ?? new ApplicationUser(); + ApplicationUser result = p7 ?? new ApplicationUser(); - result.PhoneNumber = p5.UserPhoneNumber; + result.PhoneNumber = p4.UserPhoneNumber; return result; } - private static List funcMain5(List p9, List p10) + private static OrderDelivery funcMain4(OrderDeliverySDto p8, OrderDelivery p9) { - if (p9 == null) + if (p8 == null) { return null; } - List result = new List(p9.Count); + OrderDelivery result = p9 ?? new OrderDelivery(); + + result.AddressId = p8.AddressId; + result.Address = p8.Address == null ? null : (UserAddress)Convert.ChangeType((object)p8.Address, typeof(UserAddress)); + result.DeliveryCost = p8.DeliveryCost; + result.ShippingId = p8.ShippingId; + result.Shipping = funcMain5(new Never(), result.Shipping, p8); + result.OrderId = p8.OrderId; + result.Order = funcMain6(new Never(), result.Order, p8); + result.Id = p8.Id; + result.CreatedAt = p8.CreatedAt; + return result; + + } + + private static List funcMain7(List p14, List p15) + { + if (p14 == null) + { + return null; + } + List result = new List(p14.Count); int i = 0; - int len = p9.Count; + int len = p14.Count; while (i < len) { - OrderProductSDto item = p9[i]; + OrderProductSDto item = p14[i]; result.Add(item == null ? null : new OrderProduct() { Count = item.Count, @@ -568,50 +584,20 @@ namespace NetinaShop.Domain.Mappers } - private static List funcMain6(List p11, List p12) + private static List funcMain8(List p16, List p17) { - if (p11 == null) + if (p16 == null) { return null; } - List result = new List(p11.Count); + List result = new List(p16.Count); int i = 0; - int len = p11.Count; + int len = p16.Count; while (i < len) { - OrderDeliverySDto item = p11[i]; - result.Add(item == null ? null : new OrderDelivery() - { - Address = item.Address == null ? null : (UserAddress)Convert.ChangeType((object)item.Address, typeof(UserAddress)), - ShippingId = item.ShippingId, - Shipping = new Shipping() {Id = item.ShippingId}, - OrderId = item.OrderId, - Order = new Order() {Id = item.OrderId}, - Id = item.Id, - CreatedAt = item.CreatedAt - }); - i++; - } - return result; - - } - - private static List funcMain7(List p13, List p14) - { - if (p13 == null) - { - return null; - } - List result = new List(p13.Count); - - int i = 0; - int len = p13.Count; - - while (i < len) - { - PaymentSDto item = p13[i]; + PaymentSDto item = p16[i]; result.Add(item == null ? null : new Payment() { FactorNumber = item.FactorNumber, @@ -639,122 +625,20 @@ namespace NetinaShop.Domain.Mappers } - private static List funcMain8(List p20) - { - if (p20 == null) - { - return null; - } - List result = new List(p20.Count); - - int i = 0; - int len = p20.Count; - - while (i < len) - { - OrderProduct item = p20[i]; - result.Add(item == null ? null : new OrderProductSDto() - { - Count = item.Count, - ProductFee = item.ProductFee, - ProductFeeWithDiscount = item.ProductFeeWithDiscount, - HasDiscount = item.HasDiscount, - ProductCost = item.ProductCost, - PackingFee = item.PackingFee, - PackingCost = item.PackingCost, - OrderProductStatus = item.OrderProductStatus, - ProductId = item.ProductId, - ProductName = item.Product != null ? item.Product.PersianName : string.Empty, - OrderId = item.OrderId, - Id = item.Id, - CreatedAt = item.CreatedAt - }); - i++; - } - return result; - - } - - private static List funcMain9(List p21) - { - if (p21 == null) - { - return null; - } - List result = new List(p21.Count); - - int i = 0; - int len = p21.Count; - - while (i < len) - { - OrderDelivery item = p21[i]; - result.Add(item == null ? null : new OrderDeliverySDto() - { - Address = item.Address == null ? null : item.Address.ToString(), - ShippingMethod = item.Shipping != null ? item.Shipping.Name : string.Empty, - OrderId = item.OrderId, - ShippingId = item.ShippingId, - Id = item.Id, - CreatedAt = item.CreatedAt - }); - i++; - } - return result; - - } - - private static List funcMain10(List p22) + private static List funcMain9(List p22) { if (p22 == null) { return null; } - List result = new List(p22.Count); + List result = new List(p22.Count); int i = 0; int len = p22.Count; while (i < len) { - Payment item = p22[i]; - result.Add(item == null ? null : new PaymentSDto() - { - FactorNumber = item.FactorNumber, - Amount = item.Amount, - Description = item.Description, - TransactionCode = item.TransactionCode, - CardPan = item.CardPan, - Authority = item.Authority, - Type = item.Type, - Status = item.Status, - OrderId = item.OrderId, - UserId = item.UserId, - UserFullName = item.User != null ? item.User.FirstName + " " + item.User.LastName : string.Empty, - UserPhoneNumber = item.User != null ? item.User.PhoneNumber : string.Empty, - Id = item.Id, - CreatedAt = item.CreatedAt - }); - i++; - } - return result; - - } - - private static List funcMain11(List p25, List p26) - { - if (p25 == null) - { - return null; - } - List result = new List(p25.Count); - - int i = 0; - int len = p25.Count; - - while (i < len) - { - OrderProduct item = p25[i]; + OrderProduct item = p22[i]; result.Add(item == null ? null : new OrderProductSDto() { Count = item.Count, @@ -777,49 +661,20 @@ namespace NetinaShop.Domain.Mappers } - private static List funcMain12(List p27, List p28) + private static List funcMain10(List p23) { - if (p27 == null) + if (p23 == null) { return null; } - List result = new List(p27.Count); + List result = new List(p23.Count); int i = 0; - int len = p27.Count; + int len = p23.Count; while (i < len) { - OrderDelivery item = p27[i]; - result.Add(item == null ? null : new OrderDeliverySDto() - { - Address = item.Address == null ? null : item.Address.ToString(), - ShippingMethod = item.Shipping != null ? item.Shipping.Name : string.Empty, - OrderId = item.OrderId, - ShippingId = item.ShippingId, - Id = item.Id, - CreatedAt = item.CreatedAt - }); - i++; - } - return result; - - } - - private static List funcMain13(List p29, List p30) - { - if (p29 == null) - { - return null; - } - List result = new List(p29.Count); - - int i = 0; - int len = p29.Count; - - while (i < len) - { - Payment item = p29[i]; + Payment item = p23[i]; result.Add(item == null ? null : new PaymentSDto() { FactorNumber = item.FactorNumber, @@ -843,6 +698,99 @@ namespace NetinaShop.Domain.Mappers } + private static List funcMain11(List p26, List p27) + { + if (p26 == null) + { + return null; + } + List result = new List(p26.Count); + + int i = 0; + int len = p26.Count; + + while (i < len) + { + OrderProduct item = p26[i]; + result.Add(item == null ? null : new OrderProductSDto() + { + Count = item.Count, + ProductFee = item.ProductFee, + ProductFeeWithDiscount = item.ProductFeeWithDiscount, + HasDiscount = item.HasDiscount, + ProductCost = item.ProductCost, + PackingFee = item.PackingFee, + PackingCost = item.PackingCost, + OrderProductStatus = item.OrderProductStatus, + ProductId = item.ProductId, + ProductName = item.Product != null ? item.Product.PersianName : string.Empty, + OrderId = item.OrderId, + Id = item.Id, + CreatedAt = item.CreatedAt + }); + i++; + } + return result; + + } + + private static List funcMain12(List p28, List p29) + { + if (p28 == null) + { + return null; + } + List result = new List(p28.Count); + + int i = 0; + int len = p28.Count; + + while (i < len) + { + Payment item = p28[i]; + result.Add(item == null ? null : new PaymentSDto() + { + FactorNumber = item.FactorNumber, + Amount = item.Amount, + Description = item.Description, + TransactionCode = item.TransactionCode, + CardPan = item.CardPan, + Authority = item.Authority, + Type = item.Type, + Status = item.Status, + OrderId = item.OrderId, + UserId = item.UserId, + UserFullName = item.User != null ? item.User.FirstName + " " + item.User.LastName : string.Empty, + UserPhoneNumber = item.User != null ? item.User.PhoneNumber : string.Empty, + Id = item.Id, + CreatedAt = item.CreatedAt + }); + i++; + } + return result; + + } + + private static OrderDeliverySDto funcMain13(OrderDelivery p30, OrderDeliverySDto p31) + { + if (p30 == null) + { + return null; + } + OrderDeliverySDto result = p31 ?? new OrderDeliverySDto(); + + result.Address = p30.Address == null ? null : p30.Address.ToString(); + result.ShippingMethod = p30.Shipping != null ? p30.Shipping.Name : string.Empty; + result.DeliveryCost = p30.DeliveryCost; + result.AddressId = p30.AddressId; + result.OrderId = p30.OrderId; + result.ShippingId = p30.ShippingId; + result.Id = p30.Id; + result.CreatedAt = p30.CreatedAt; + return result; + + } + private static ApplicationUser funcMain14(Never p38, ApplicationUser p39, OrderSDto p36) { ApplicationUser result = p39 ?? new ApplicationUser(); @@ -852,5 +800,23 @@ namespace NetinaShop.Domain.Mappers return result; } + + private static Shipping funcMain5(Never p10, Shipping p11, OrderDeliverySDto p8) + { + Shipping result = p11 ?? new Shipping(); + + result.Id = p8.ShippingId; + return result; + + } + + private static Order funcMain6(Never p12, Order p13, OrderDeliverySDto p8) + { + Order result = p13 ?? new Order(); + + result.Id = p8.OrderId; + return result; + + } } } \ No newline at end of file diff --git a/NetinaShop.Repository/Handlers/Orders/GetOrderQueryHandler.cs b/NetinaShop.Repository/Handlers/Orders/GetOrderQueryHandler.cs index dd4c43f..acdbe1f 100644 --- a/NetinaShop.Repository/Handlers/Orders/GetOrderQueryHandler.cs +++ b/NetinaShop.Repository/Handlers/Orders/GetOrderQueryHandler.cs @@ -27,12 +27,13 @@ public class GetOrderQueryHandler : IRequestHandler orderProducts.ForEach(op => order.AddOrderProduct(op)); - var orderDeliveries = await _repositoryWrapper.SetRepository() + var orderDelivery= await _repositoryWrapper.SetRepository() .TableNoTracking - .Where(od => od.OrderId == request.Id) - .ToListAsync(cancellationToken); - - orderDeliveries.ForEach(od=>order.AddOrderDelivery(od.AddressId,od.DeliveryCost,od.ShippingId,od.OrderId)); + .FirstOrDefaultAsync(od => od.OrderId == request.Id, cancellationToken); + if (orderDelivery != null) + { + order.AddOrderDelivery(orderDelivery.AddressId, orderDelivery.DeliveryCost, orderDelivery.ShippingId, orderDelivery.OrderId, orderDelivery.Id); + } return order; } diff --git a/NetinaShop.Repository/Migrations/20240212202112_EditOrderDelivey.Designer.cs b/NetinaShop.Repository/Migrations/20240212202112_EditOrderDelivey.Designer.cs new file mode 100644 index 0000000..86c50df --- /dev/null +++ b/NetinaShop.Repository/Migrations/20240212202112_EditOrderDelivey.Designer.cs @@ -0,0 +1,1679 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using NetinaShop.Repository.Models; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace NetinaShop.Repository.Migrations +{ + [DbContext(typeof(ApplicationContext))] + [Migration("20240212202112_EditOrderDelivey")] + partial class EditOrderDelivey + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("public") + .HasAnnotation("ProductVersion", "8.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("RoleClaims", "public"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClaimType") + .HasColumnType("text"); + + b.Property("ClaimValue") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("Claims", "public"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("ProviderKey") + .HasColumnType("text"); + + b.Property("ProviderDisplayName") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("LoginProvider", "ProviderKey"); + + b.HasIndex("UserId"); + + b.ToTable("Logins", "public"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("RoleId") + .HasColumnType("uuid"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId"); + + b.ToTable("UserRoles", "public"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uuid"); + + b.Property("LoginProvider") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Value") + .HasColumnType("text"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("Tokens", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Accounting.Payment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("double precision"); + + b.Property("Authority") + .IsRequired() + .HasColumnType("text"); + + b.Property("CardPan") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("FactorNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("OrderId") + .HasColumnType("uuid"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TransactionCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("Type") + .HasColumnType("integer"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.HasIndex("UserId"); + + b.ToTable("Payments", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Blogs.Blog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CategoryId") + .HasColumnType("uuid"); + + b.Property("Content") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("IsSuggested") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("ReadingTime") + .HasColumnType("integer"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.Property("Summery") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tags") + .IsRequired() + .HasColumnType("text"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("CategoryId"); + + b.ToTable("Blogs", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Blogs.BlogCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("BlogCategories", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Brands.Brand", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("HasSpecialPage") + .HasColumnType("boolean"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("PageUrl") + .IsRequired() + .HasColumnType("text"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Brands", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Discounts.Discount", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AmountType") + .HasColumnType("integer"); + + b.Property("Code") + .IsRequired() + .HasColumnType("text"); + + b.Property("Count") + .HasColumnType("integer"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("DiscountAmount") + .HasColumnType("bigint"); + + b.Property("DiscountPercent") + .HasColumnType("integer"); + + b.Property("Discriminator") + .IsRequired() + .HasMaxLength(21) + .HasColumnType("character varying(21)"); + + b.Property("ExpireDate") + .HasColumnType("timestamp without time zone"); + + b.Property("HasCode") + .HasColumnType("boolean"); + + b.Property("HasPriceCeiling") + .HasColumnType("boolean"); + + b.Property("HasPriceFloor") + .HasColumnType("boolean"); + + b.Property("IsForInvitation") + .HasColumnType("boolean"); + + b.Property("IsInfinity") + .HasColumnType("boolean"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("IsSpecialOffer") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("PriceCeiling") + .HasColumnType("bigint"); + + b.Property("PriceFloor") + .HasColumnType("bigint"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Type") + .HasColumnType("integer"); + + b.Property("UseCount") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Discounts", "public"); + + b.HasDiscriminator("Discriminator").HasValue("Discount"); + + b.UseTphMappingStrategy(); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Orders.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("DeliveryPrice") + .HasColumnType("double precision"); + + b.Property("DiscountCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("DiscountId") + .HasColumnType("uuid"); + + b.Property("DiscountPrice") + .HasColumnType("double precision"); + + b.Property("DoneAt") + .HasColumnType("timestamp without time zone"); + + b.Property("FactorCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("IsPayed") + .HasColumnType("boolean"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("OrderAt") + .HasColumnType("timestamp without time zone"); + + b.Property("OrderStatus") + .HasColumnType("integer"); + + b.Property("PackingPrice") + .HasColumnType("double precision"); + + b.Property("PayedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("PaymentMethod") + .HasColumnType("integer"); + + b.Property("PreparingMinute") + .HasColumnType("integer"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.Property("ServicePrice") + .HasColumnType("double precision"); + + b.Property("TaxesPrice") + .HasColumnType("double precision"); + + b.Property("TotalPrice") + .HasColumnType("double precision"); + + b.Property("TotalProductsPrice") + .HasColumnType("double precision"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("DiscountId"); + + b.HasIndex("UserId"); + + b.ToTable("Orders", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Orders.OrderDelivery", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressId") + .HasColumnType("uuid"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("DeliveryCost") + .HasColumnType("double precision"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("OrderId") + .HasColumnType("uuid"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.Property("ShippingId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AddressId"); + + b.HasIndex("OrderId") + .IsUnique(); + + b.HasIndex("ShippingId"); + + b.ToTable("OrderDeliveries", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Orders.OrderProduct", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Count") + .HasColumnType("integer"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("HasDiscount") + .HasColumnType("boolean"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("OrderId") + .HasColumnType("uuid"); + + b.Property("OrderProductStatus") + .HasColumnType("integer"); + + b.Property("PackingCost") + .HasColumnType("double precision"); + + b.Property("PackingFee") + .HasColumnType("double precision"); + + b.Property("ProductCategoryId") + .HasColumnType("uuid"); + + b.Property("ProductCost") + .HasColumnType("double precision"); + + b.Property("ProductFee") + .HasColumnType("double precision"); + + b.Property("ProductFeeWithDiscount") + .HasColumnType("double precision"); + + b.Property("ProductId") + .HasColumnType("uuid"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.HasIndex("ProductId"); + + b.ToTable("OrderProducts", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.ProductCategories.ProductCategory", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("IsMain") + .HasColumnType("boolean"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("ParentId") + .HasColumnType("uuid"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ParentId"); + + b.ToTable("ProductCategories", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Products.Product", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BeDisplayed") + .HasColumnType("boolean"); + + b.Property("BrandId") + .HasColumnType("uuid"); + + b.Property("CategoryId") + .HasColumnType("uuid"); + + b.Property("Cost") + .HasColumnType("double precision"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("EnglishName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExpertCheck") + .IsRequired() + .HasColumnType("text"); + + b.Property("HasExpressDelivery") + .HasColumnType("boolean"); + + b.Property("IsEnable") + .HasColumnType("boolean"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("MaxOrderCount") + .HasColumnType("integer"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("PackingCost") + .HasColumnType("double precision"); + + b.Property("PersianName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Rate") + .HasColumnType("real"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.Property("ReviewCount") + .HasColumnType("integer"); + + b.Property("Stock") + .HasColumnType("integer"); + + b.Property("Summery") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tags") + .IsRequired() + .HasColumnType("text"); + + b.Property("Viewed") + .HasColumnType("integer"); + + b.Property("Warranty") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("BrandId"); + + b.HasIndex("CategoryId"); + + b.ToTable("Products", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Products.Review", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("IsBuyer") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("ProductId") + .HasColumnType("uuid"); + + b.Property("Rate") + .HasColumnType("real"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ProductId"); + + b.HasIndex("UserId"); + + b.ToTable("Reviews", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Products.Specification", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("Detail") + .IsRequired() + .HasColumnType("text"); + + b.Property("IsFeature") + .HasColumnType("boolean"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("ParentId") + .HasColumnType("uuid"); + + b.Property("ProductId") + .HasColumnType("uuid"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ParentId"); + + b.HasIndex("ProductId"); + + b.ToTable("Specifications", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.StorageFiles.StorageFile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("Discriminator") + .IsRequired() + .HasMaxLength(34) + .HasColumnType("character varying(34)"); + + b.Property("FileLocation") + .IsRequired() + .HasColumnType("text"); + + b.Property("FileName") + .IsRequired() + .HasColumnType("text"); + + b.Property("FileType") + .HasColumnType("integer"); + + b.Property("IsHeader") + .HasColumnType("boolean"); + + b.Property("IsPrimary") + .HasColumnType("boolean"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("StorageFiles", "public"); + + b.HasDiscriminator("Discriminator").HasValue("StorageFile"); + + b.UseTphMappingStrategy(); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Users.ApplicationRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Description") + .IsRequired() + .HasColumnType("text"); + + b.Property("EnglishName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("PersianName") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName") + .IsUnique() + .HasDatabaseName("RoleNameIndex"); + + b.ToTable("Roles", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Users.ApplicationUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AccessFailedCount") + .HasColumnType("integer"); + + b.Property("BirthDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasColumnType("text"); + + b.Property("Email") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("EmailConfirmed") + .HasColumnType("boolean"); + + b.Property("FirstName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Gender") + .HasColumnType("integer"); + + b.Property("LastName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LockoutEnabled") + .HasColumnType("boolean"); + + b.Property("LockoutEnd") + .HasColumnType("timestamp with time zone"); + + b.Property("NationalId") + .IsRequired() + .HasColumnType("text"); + + b.Property("NormalizedEmail") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("NormalizedUserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.Property("PasswordHash") + .HasColumnType("text"); + + b.Property("PhoneNumber") + .HasColumnType("text"); + + b.Property("PhoneNumberConfirmed") + .HasColumnType("boolean"); + + b.Property("SecurityStamp") + .HasColumnType("text"); + + b.Property("SignUpStatus") + .HasColumnType("integer"); + + b.Property("TwoFactorEnabled") + .HasColumnType("boolean"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedEmail") + .HasDatabaseName("EmailIndex"); + + b.HasIndex("NormalizedUserName") + .IsUnique() + .HasDatabaseName("UserNameIndex"); + + b.ToTable("Users", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Users.UserAddress", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Address") + .IsRequired() + .HasColumnType("text"); + + b.Property("BuildingUnit") + .IsRequired() + .HasColumnType("text"); + + b.Property("City") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("LocationLat") + .HasColumnType("real"); + + b.Property("LocationLong") + .HasColumnType("real"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("Plaque") + .IsRequired() + .HasColumnType("text"); + + b.Property("PostalCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("Province") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReceiverFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReceiverPhoneNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserAddresses", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Users.UserFavoriteProduct", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("ProductId") + .HasColumnType("uuid"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ProductId"); + + b.HasIndex("UserId"); + + b.ToTable("UserFavoriteProducts", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Warehouses.Shipping", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreatedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("CreatedBy") + .HasColumnType("text"); + + b.Property("DeliveryCost") + .HasColumnType("double precision"); + + b.Property("IsExpressShipping") + .HasColumnType("boolean"); + + b.Property("IsOriginalWarehouse") + .HasColumnType("boolean"); + + b.Property("IsRemoved") + .HasColumnType("boolean"); + + b.Property("IsShipBySeller") + .HasColumnType("boolean"); + + b.Property("ModifiedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("ModifiedBy") + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("RemovedAt") + .HasColumnType("timestamp without time zone"); + + b.Property("RemovedBy") + .HasColumnType("text"); + + b.Property("WarehouseName") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorkingDays") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("Shippings", "public"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Discounts.CategoryDiscount", b => + { + b.HasBaseType("NetinaShop.Domain.Entities.Discounts.Discount"); + + b.Property("CategoryId") + .HasColumnType("uuid"); + + b.HasIndex("CategoryId"); + + b.HasDiscriminator().HasValue("CategoryDiscount"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Discounts.ProductDiscount", b => + { + b.HasBaseType("NetinaShop.Domain.Entities.Discounts.Discount"); + + b.Property("ProductId") + .HasColumnType("uuid"); + + b.HasIndex("ProductId"); + + b.HasDiscriminator().HasValue("ProductDiscount"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Blogs.BlogStorageFile", b => + { + b.HasBaseType("NetinaShop.Domain.Entities.StorageFiles.StorageFile"); + + b.Property("BlogId") + .HasColumnType("uuid"); + + b.HasIndex("BlogId"); + + b.HasDiscriminator().HasValue("BlogStorageFile"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Brands.BrandStorageFile", b => + { + b.HasBaseType("NetinaShop.Domain.Entities.StorageFiles.StorageFile"); + + b.Property("BrandId") + .HasColumnType("uuid"); + + b.HasIndex("BrandId"); + + b.HasDiscriminator().HasValue("BrandStorageFile"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.ProductCategories.ProductCategoryStorageFile", b => + { + b.HasBaseType("NetinaShop.Domain.Entities.StorageFiles.StorageFile"); + + b.Property("CategoryId") + .HasColumnType("uuid"); + + b.HasIndex("CategoryId"); + + b.HasDiscriminator().HasValue("ProductCategoryStorageFile"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Products.ProductStorageFile", b => + { + b.HasBaseType("NetinaShop.Domain.Entities.StorageFiles.StorageFile"); + + b.Property("ProductId") + .HasColumnType("uuid"); + + b.HasIndex("ProductId"); + + b.HasDiscriminator().HasValue("ProductStorageFile"); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b => + { + b.HasOne("NetinaShop.Domain.Entities.Users.ApplicationRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Restrict); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b => + { + b.HasOne("NetinaShop.Domain.Entities.Users.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b => + { + b.HasOne("NetinaShop.Domain.Entities.Users.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b => + { + b.HasOne("NetinaShop.Domain.Entities.Users.ApplicationRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("NetinaShop.Domain.Entities.Users.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict); + }); + + modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b => + { + b.HasOne("NetinaShop.Domain.Entities.Users.ApplicationUser", null) + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Accounting.Payment", b => + { + b.HasOne("NetinaShop.Domain.Entities.Orders.Order", "Order") + .WithMany("Payments") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("NetinaShop.Domain.Entities.Users.ApplicationUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Order"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Blogs.Blog", b => + { + b.HasOne("NetinaShop.Domain.Entities.Blogs.BlogCategory", "Category") + .WithMany("Blogs") + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Category"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Orders.Order", b => + { + b.HasOne("NetinaShop.Domain.Entities.Discounts.Discount", null) + .WithMany("Orders") + .HasForeignKey("DiscountId"); + + b.HasOne("NetinaShop.Domain.Entities.Users.ApplicationUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("User"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Orders.OrderDelivery", b => + { + b.HasOne("NetinaShop.Domain.Entities.Users.UserAddress", "Address") + .WithMany() + .HasForeignKey("AddressId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("NetinaShop.Domain.Entities.Orders.Order", "Order") + .WithOne("OrderDelivery") + .HasForeignKey("NetinaShop.Domain.Entities.Orders.OrderDelivery", "OrderId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("NetinaShop.Domain.Entities.Warehouses.Shipping", "Shipping") + .WithMany() + .HasForeignKey("ShippingId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Address"); + + b.Navigation("Order"); + + b.Navigation("Shipping"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Orders.OrderProduct", b => + { + b.HasOne("NetinaShop.Domain.Entities.Orders.Order", "Order") + .WithMany("OrderProducts") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("NetinaShop.Domain.Entities.Products.Product", "Product") + .WithMany("OrderProducts") + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Order"); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.ProductCategories.ProductCategory", b => + { + b.HasOne("NetinaShop.Domain.Entities.ProductCategories.ProductCategory", "Parent") + .WithMany() + .HasForeignKey("ParentId"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Products.Product", b => + { + b.HasOne("NetinaShop.Domain.Entities.Brands.Brand", "Brand") + .WithMany("Products") + .HasForeignKey("BrandId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("NetinaShop.Domain.Entities.ProductCategories.ProductCategory", "Category") + .WithMany("Products") + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Brand"); + + b.Navigation("Category"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Products.Review", b => + { + b.HasOne("NetinaShop.Domain.Entities.Products.Product", "Product") + .WithMany("Reviews") + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("NetinaShop.Domain.Entities.Users.ApplicationUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Product"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Products.Specification", b => + { + b.HasOne("NetinaShop.Domain.Entities.Products.Specification", "Parent") + .WithMany("Children") + .HasForeignKey("ParentId"); + + b.HasOne("NetinaShop.Domain.Entities.Products.Product", "Product") + .WithMany("Specifications") + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Parent"); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Users.UserAddress", b => + { + b.HasOne("NetinaShop.Domain.Entities.Users.ApplicationUser", "User") + .WithMany("Addresses") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("User"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Users.UserFavoriteProduct", b => + { + b.HasOne("NetinaShop.Domain.Entities.Products.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("NetinaShop.Domain.Entities.Users.ApplicationUser", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Product"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Discounts.CategoryDiscount", b => + { + b.HasOne("NetinaShop.Domain.Entities.ProductCategories.ProductCategory", "Category") + .WithMany() + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Category"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Discounts.ProductDiscount", b => + { + b.HasOne("NetinaShop.Domain.Entities.Products.Product", "Product") + .WithMany() + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Blogs.BlogStorageFile", b => + { + b.HasOne("NetinaShop.Domain.Entities.Blogs.Blog", "Blog") + .WithMany("Files") + .HasForeignKey("BlogId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Blog"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Brands.BrandStorageFile", b => + { + b.HasOne("NetinaShop.Domain.Entities.Brands.Brand", "Brand") + .WithMany("Files") + .HasForeignKey("BrandId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Brand"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.ProductCategories.ProductCategoryStorageFile", b => + { + b.HasOne("NetinaShop.Domain.Entities.ProductCategories.ProductCategory", "Category") + .WithMany("Files") + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Category"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Products.ProductStorageFile", b => + { + b.HasOne("NetinaShop.Domain.Entities.Products.Product", "Product") + .WithMany("Files") + .HasForeignKey("ProductId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Blogs.Blog", b => + { + b.Navigation("Files"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Blogs.BlogCategory", b => + { + b.Navigation("Blogs"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Brands.Brand", b => + { + b.Navigation("Files"); + + b.Navigation("Products"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Discounts.Discount", b => + { + b.Navigation("Orders"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Orders.Order", b => + { + b.Navigation("OrderDelivery"); + + b.Navigation("OrderProducts"); + + b.Navigation("Payments"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.ProductCategories.ProductCategory", b => + { + b.Navigation("Files"); + + b.Navigation("Products"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Products.Product", b => + { + b.Navigation("Files"); + + b.Navigation("OrderProducts"); + + b.Navigation("Reviews"); + + b.Navigation("Specifications"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Products.Specification", b => + { + b.Navigation("Children"); + }); + + modelBuilder.Entity("NetinaShop.Domain.Entities.Users.ApplicationUser", b => + { + b.Navigation("Addresses"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/NetinaShop.Repository/Migrations/20240212202112_EditOrderDelivey.cs b/NetinaShop.Repository/Migrations/20240212202112_EditOrderDelivey.cs new file mode 100644 index 0000000..58373a6 --- /dev/null +++ b/NetinaShop.Repository/Migrations/20240212202112_EditOrderDelivey.cs @@ -0,0 +1,41 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace NetinaShop.Repository.Migrations +{ + /// + public partial class EditOrderDelivey : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_OrderDeliveries_OrderId", + schema: "public", + table: "OrderDeliveries"); + + migrationBuilder.CreateIndex( + name: "IX_OrderDeliveries_OrderId", + schema: "public", + table: "OrderDeliveries", + column: "OrderId", + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_OrderDeliveries_OrderId", + schema: "public", + table: "OrderDeliveries"); + + migrationBuilder.CreateIndex( + name: "IX_OrderDeliveries_OrderId", + schema: "public", + table: "OrderDeliveries", + column: "OrderId"); + } + } +} diff --git a/NetinaShop.Repository/Migrations/ApplicationContextModelSnapshot.cs b/NetinaShop.Repository/Migrations/ApplicationContextModelSnapshot.cs index 0708b2e..8fc30ba 100644 --- a/NetinaShop.Repository/Migrations/ApplicationContextModelSnapshot.cs +++ b/NetinaShop.Repository/Migrations/ApplicationContextModelSnapshot.cs @@ -571,7 +571,8 @@ namespace NetinaShop.Repository.Migrations b.HasIndex("AddressId"); - b.HasIndex("OrderId"); + b.HasIndex("OrderId") + .IsUnique(); b.HasIndex("ShippingId"); @@ -1432,8 +1433,8 @@ namespace NetinaShop.Repository.Migrations .OnDelete(DeleteBehavior.Restrict); b.HasOne("NetinaShop.Domain.Entities.Orders.Order", "Order") - .WithMany("OrderDeliveries") - .HasForeignKey("OrderId") + .WithOne("OrderDelivery") + .HasForeignKey("NetinaShop.Domain.Entities.Orders.OrderDelivery", "OrderId") .OnDelete(DeleteBehavior.Restrict); b.HasOne("NetinaShop.Domain.Entities.Warehouses.Shipping", "Shipping") @@ -1635,7 +1636,7 @@ namespace NetinaShop.Repository.Migrations modelBuilder.Entity("NetinaShop.Domain.Entities.Orders.Order", b => { - b.Navigation("OrderDeliveries"); + b.Navigation("OrderDelivery"); b.Navigation("OrderProducts");