From 749c7789ea508c1d17251d02055b62a50560f136 Mon Sep 17 00:00:00 2001 From: malik masis Date: Thu, 17 Mar 2022 16:17:51 +0300 Subject: [PATCH 1/3] Removed OrderStatus table and added it as a column Returned back enum approach instead of Enumeration --- .../Orders/OrderDto.cs | 3 +- .../Orders/OrderAppService.cs | 15 +- .../Orders/Order.cs | 12 +- .../Orders/OrderStatus.cs | 51 +---- .../OrderServiceDataSeedContributor.cs | 37 ---- .../OrderingServiceDbContext.cs | 39 ++-- ...123922_RemovedOrderStatusTable.Designer.cs | 182 ++++++++++++++++++ .../20220317123922_RemovedOrderStatusTable.cs | 73 +++++++ .../OrderingServiceDbContextModelSnapshot.cs | 36 +--- .../Orders/EfCoreOrderRepository.cs | 14 +- .../Orders/OrderEfCoreQueryableExtensions.cs | 3 +- .../Orders/OrderRepository_Tests.cs | 19 +- 12 files changed, 301 insertions(+), 183 deletions(-) delete mode 100644 services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderServiceDataSeedContributor.cs create mode 100644 services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.Designer.cs create mode 100644 services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.cs diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs index 29ca1943..70dbf254 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs @@ -7,8 +7,7 @@ namespace EShopOnAbp.OrderingService.Orders; public class OrderDto : EntityDto { public DateTime OrderDate { get; set; } - public int OrderNo {get;set;} - public int OrderStatusId { get; set; } + public int OrderNo { get; set; } public string OrderStatus { get; set; } public string PaymentMethod { get; set; } public BuyerDto Buyer { get; set; } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index 19c0701a..f33288ed 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -1,9 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using EShopOnAbp.OrderingService.Localization; +using EShopOnAbp.OrderingService.Localization; using EShopOnAbp.OrderingService.Orders.Specifications; using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; using Volo.Abp.Application.Services; using Volo.Abp.Specifications; using Volo.Abp.Users; @@ -34,9 +34,9 @@ public class OrderAppService : ApplicationService, IOrderAppService public async Task> GetMyOrdersAsync(GetMyOrdersInput input) { ISpecification specification = SpecificationFactory.Create(input.Filter); - + var orders = await _orderRepository.GetOrdersByUserId(CurrentUser.GetId(), specification, true); - + return CreateOrderDtoMapping(orders); } @@ -106,8 +106,7 @@ public class OrderAppService : ApplicationService, IOrderAppService Id = order.Id, OrderNo = order.OrderNo, OrderDate = order.OrderDate, - OrderStatus = order.OrderStatus.Name, - OrderStatusId = order.OrderStatus.Id, + OrderStatus = order.OrderStatus.ToString(), PaymentMethod = order.PaymentMethod }; } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs index 989208a0..8e159007 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/Order.cs @@ -1,8 +1,8 @@ -using System; +using EShopOnAbp.PaymentService.PaymentRequests; +using JetBrains.Annotations; +using System; using System.Collections.Generic; using System.Linq; -using EShopOnAbp.PaymentService.PaymentRequests; -using JetBrains.Annotations; using Volo.Abp; using Volo.Abp.Domain.Entities; @@ -10,7 +10,6 @@ namespace EShopOnAbp.OrderingService.Orders; public class Order : AggregateRoot { - private int _orderStatusId; public DateTime OrderDate { get; private set; } public int OrderNo { get; private set; } public string PaymentMethod { get; private set; } @@ -25,15 +24,14 @@ public class Order : AggregateRoot { } - internal Order(Guid id, Buyer buyer, Address address, [NotNull]string paymentMethod, Guid? paymentRequestId = null) : base(id) + internal Order(Guid id, Buyer buyer, Address address, [NotNull] string paymentMethod, Guid? paymentRequestId = null) : base(id) { - _orderStatusId = OrderStatus.Placed.Id; OrderDate = DateTime.UtcNow; OrderNo = GenerateOrderNo(id); Buyer = buyer; Address = address; PaymentRequestId = paymentRequestId; - PaymentMethod = Check.NotNullOrEmpty(paymentMethod,nameof(paymentMethod),maxLength:OrderConstants.OrderPaymentMethodNameMaxLength); + PaymentMethod = Check.NotNullOrEmpty(paymentMethod, nameof(paymentMethod), maxLength: OrderConstants.OrderPaymentMethodNameMaxLength); PaymentStatus = PaymentRequestState.Waiting.ToString(); // From PaymentService.Domain.Shared OrderItems = new List(); } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs index dcd06c06..b3f464d2 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs @@ -1,48 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Volo.Abp; +namespace EShopOnAbp.OrderingService.Orders; -namespace EShopOnAbp.OrderingService.Orders; - -public class OrderStatus : Enumeration +public enum OrderStatus { - public static OrderStatus Placed = new OrderStatus(1, nameof(Placed).ToLowerInvariant()); - public static OrderStatus Paid = new OrderStatus(2, nameof(Paid).ToLowerInvariant()); - public static OrderStatus Shipped = new OrderStatus(3, nameof(Shipped).ToLowerInvariant()); - public static OrderStatus Cancelled = new OrderStatus(4, nameof(Cancelled).ToLowerInvariant()); - - public OrderStatus(int id, string name) : base(id, name) - { - } - - public static IEnumerable List() => - new[] {Placed, Paid, Shipped, Cancelled}; - - public static OrderStatus FromName(string name) - { - var state = List() - .SingleOrDefault(s => String.Equals(s.Name, name, StringComparison.CurrentCultureIgnoreCase)); - - if (state == null) - { - throw new BusinessException(OrderingServiceErrorCodes.OrderingStatusNotFound) - .WithData("OrderStatus", String.Join(",", List().Select(s => s.Name))); - } - - return state; - } - - public static OrderStatus From(int id) - { - var state = List().SingleOrDefault(s => s.Id == id); - - if (state == null) - { - throw new BusinessException(OrderingServiceErrorCodes.OrderingStatusNotFound) - .WithData("OrderStatus", String.Join(",", List().Select(s => s.Name))); - } - - return state; - } + Placed, + Paid, + Shipped, + Cancelled } \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderServiceDataSeedContributor.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderServiceDataSeedContributor.cs deleted file mode 100644 index 2ebd3abd..00000000 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderServiceDataSeedContributor.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using EShopOnAbp.OrderingService.Orders; -using Microsoft.EntityFrameworkCore; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; - -namespace EShopOnAbp.OrderingService.EntityFrameworkCore; - -/// -/// DataSeedContributor for seeding pre-exist order status data. -/// This is a sample for seeding data without DbSet (non-aggregate data), without using repository. -/// -public class OrderServiceDataSeedContributor : IDataSeedContributor, ITransientDependency -{ - private readonly IOrderingServiceDbContext _dbContext; - - public OrderServiceDataSeedContributor(IOrderingServiceDbContext dbContext) - { - _dbContext = dbContext; - } - - public async Task SeedAsync(DataSeedContext context) - { - await SeedOrderStatusAsync(); - } - - private async Task SeedOrderStatusAsync() - { - if (!await _dbContext.Set().AnyAsync()) - { - await _dbContext.Set().AddRangeAsync(OrderStatus.List()); - await _dbContext.SaveChangesAsync(); - } - } -} \ No newline at end of file diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs index d4b2d864..812eb22a 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs @@ -1,6 +1,9 @@ -using System; -using EShopOnAbp.OrderingService.Orders; +using EShopOnAbp.OrderingService.Orders; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using System; +using System.Data; +using System.Reflection.Emit; using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.Modeling; @@ -38,15 +41,17 @@ public class OrderingServiceDbContext : AbpDbContext, b.OwnsOne(o => o.Address, a => { a.WithOwner(); }); b.OwnsOne(o => o.Buyer, a => { a.WithOwner(); }); - b.Property("_orderStatusId").UsePropertyAccessMode(PropertyAccessMode.Field) - .HasColumnName("OrderStatusId") - .IsRequired(); - - b.HasOne(q => q.OrderStatus).WithMany().HasForeignKey("_orderStatusId"); - b.Navigation(q => q.OrderItems).UsePropertyAccessMode(PropertyAccessMode.Property); + + b.Property(q => q.OrderStatus).HasConversion(); + + //b.Property(e => e.OrderStatus).HasConversion( + // v => v.ToString(), + // v => (OrderStatus)Enum.Parse(typeof(OrderStatus), v)); }); + + builder.Entity(b => { b.ToTable(OrderingServiceDbProperties.DbTablePrefix + "OrderItems", @@ -62,23 +67,5 @@ public class OrderingServiceDbContext : AbpDbContext, b.Property(q => q.Units).IsRequired(); b.Property(q => q.PictureUrl).IsRequired(false); }); - - builder.Entity(b => - { - b.ToTable(OrderingServiceDbProperties.DbTablePrefix + "OrderStatus", - OrderingServiceDbProperties.DbSchema); - b.ConfigureByConvention(); //auto configure for the base class props - - b.HasKey(q => q.Id); - - b.Property(q => q.Id) - .HasDefaultValue(1) - .ValueGeneratedNever() - .IsRequired(); - - b.Property(o => o.Name) - .HasMaxLength(OrderConstants.OrderStatusNameMaxLength) - .IsRequired(); - }); } } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.Designer.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.Designer.cs new file mode 100644 index 00000000..a0089c22 --- /dev/null +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.Designer.cs @@ -0,0 +1,182 @@ +// +using System; +using EShopOnAbp.OrderingService.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace EShopOnAbp.OrderingService.Migrations +{ + [DbContext(typeof(OrderingServiceDbContext))] + [Migration("20220317123922_RemovedOrderStatusTable")] + partial class RemovedOrderStatusTable + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "6.0.1") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ExtraProperties") + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("OrderDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OrderNo") + .HasColumnType("integer"); + + b.Property("OrderStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentMethod") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("character varying(128)"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("PaymentStatus") + .HasMaxLength(256) + .HasColumnType("character varying(256)"); + + b.HasKey("Id"); + + b.ToTable("Orders", (string)null); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderItem", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Discount") + .HasColumnType("numeric"); + + b.Property("OrderId") + .HasColumnType("uuid"); + + b.Property("PictureUrl") + .HasColumnType("text"); + + b.Property("ProductCode") + .IsRequired() + .HasColumnType("text"); + + b.Property("ProductId") + .HasColumnType("uuid"); + + b.Property("ProductName") + .IsRequired() + .HasColumnType("text"); + + b.Property("UnitPrice") + .HasColumnType("numeric"); + + b.Property("Units") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.ToTable("OrderItems", (string)null); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => + { + b.OwnsOne("EShopOnAbp.OrderingService.Orders.Address", "Address", b1 => + { + b1.Property("OrderId") + .HasColumnType("uuid"); + + b1.Property("City") + .HasColumnType("text"); + + b1.Property("Country") + .HasColumnType("text"); + + b1.Property("Description") + .HasColumnType("text"); + + b1.Property("Street") + .HasColumnType("text"); + + b1.Property("ZipCode") + .HasColumnType("text"); + + b1.HasKey("OrderId"); + + b1.ToTable("Orders"); + + b1.WithOwner() + .HasForeignKey("OrderId"); + }); + + b.OwnsOne("EShopOnAbp.OrderingService.Orders.Buyer", "Buyer", b1 => + { + b1.Property("OrderId") + .HasColumnType("uuid"); + + b1.Property("Email") + .HasColumnType("text"); + + b1.Property("Id") + .HasColumnType("uuid"); + + b1.Property("Name") + .HasColumnType("text"); + + b1.HasKey("OrderId"); + + b1.ToTable("Orders"); + + b1.WithOwner() + .HasForeignKey("OrderId"); + }); + + b.Navigation("Address"); + + b.Navigation("Buyer"); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderItem", b => + { + b.HasOne("EShopOnAbp.OrderingService.Orders.Order", null) + .WithMany("OrderItems") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => + { + b.Navigation("OrderItems"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.cs new file mode 100644 index 00000000..f856edbc --- /dev/null +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/20220317123922_RemovedOrderStatusTable.cs @@ -0,0 +1,73 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace EShopOnAbp.OrderingService.Migrations +{ + public partial class RemovedOrderStatusTable : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Orders_OrderStatus_OrderStatusId", + table: "Orders"); + + migrationBuilder.DropTable( + name: "OrderStatus"); + + migrationBuilder.DropIndex( + name: "IX_Orders_OrderStatusId", + table: "Orders"); + + migrationBuilder.DropColumn( + name: "OrderStatusId", + table: "Orders"); + + migrationBuilder.AddColumn( + name: "OrderStatus", + table: "Orders", + type: "text", + nullable: false, + defaultValue: ""); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "OrderStatus", + table: "Orders"); + + migrationBuilder.AddColumn( + name: "OrderStatusId", + table: "Orders", + type: "integer", + nullable: false, + defaultValue: 0); + + migrationBuilder.CreateTable( + name: "OrderStatus", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false, defaultValue: 1), + Name = table.Column(type: "character varying(256)", maxLength: 256, nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_OrderStatus", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_Orders_OrderStatusId", + table: "Orders", + column: "OrderStatusId"); + + migrationBuilder.AddForeignKey( + name: "FK_Orders_OrderStatus_OrderStatusId", + table: "Orders", + column: "OrderStatusId", + principalTable: "OrderStatus", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs index d1a7946a..1652602c 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Migrations/OrderingServiceDbContextModelSnapshot.cs @@ -19,7 +19,7 @@ namespace EShopOnAbp.OrderingService.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) - .HasAnnotation("ProductVersion", "6.0.0") + .HasAnnotation("ProductVersion", "6.0.1") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); @@ -45,6 +45,10 @@ namespace EShopOnAbp.OrderingService.Migrations b.Property("OrderNo") .HasColumnType("integer"); + b.Property("OrderStatus") + .IsRequired() + .HasColumnType("text"); + b.Property("PaymentMethod") .IsRequired() .HasMaxLength(128) @@ -57,14 +61,8 @@ namespace EShopOnAbp.OrderingService.Migrations .HasMaxLength(256) .HasColumnType("character varying(256)"); - b.Property("_orderStatusId") - .HasColumnType("integer") - .HasColumnName("OrderStatusId"); - b.HasKey("Id"); - b.HasIndex("_orderStatusId"); - b.ToTable("Orders", (string)null); }); @@ -106,30 +104,8 @@ namespace EShopOnAbp.OrderingService.Migrations b.ToTable("OrderItems", (string)null); }); - modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderStatus", b => - { - b.Property("Id") - .HasColumnType("integer") - .HasDefaultValue(1); - - b.Property("Name") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("character varying(256)"); - - b.HasKey("Id"); - - b.ToTable("OrderStatus", (string)null); - }); - modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.Order", b => { - b.HasOne("EShopOnAbp.OrderingService.Orders.OrderStatus", "OrderStatus") - .WithMany() - .HasForeignKey("_orderStatusId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - b.OwnsOne("EShopOnAbp.OrderingService.Orders.Address", "Address", b1 => { b1.Property("OrderId") @@ -183,8 +159,6 @@ namespace EShopOnAbp.OrderingService.Migrations b.Navigation("Address"); b.Navigation("Buyer"); - - b.Navigation("OrderStatus"); }); modelBuilder.Entity("EShopOnAbp.OrderingService.Orders.OrderItem", b => diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs index 45ef6948..74bde613 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/EfCoreOrderRepository.cs @@ -1,11 +1,11 @@ -using System; +using EShopOnAbp.OrderingService.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using System; using System.Collections.Generic; using System.Linq; using System.Linq.Dynamic.Core; using System.Threading; using System.Threading.Tasks; -using EShopOnAbp.OrderingService.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; @@ -20,14 +20,6 @@ public class EfCoreOrderRepository : EfCoreRepository InsertAsync(Order entity, bool autoSave = false, - CancellationToken cancellationToken = default) - { - var newEntity = await base.InsertAsync(entity, autoSave, GetCancellationToken(cancellationToken)); - await EnsurePropertyLoadedAsync(newEntity, o => o.OrderStatus, GetCancellationToken(cancellationToken)); - return newEntity; - } - public async Task> GetOrdersByUserId( Guid userId, ISpecification spec, diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/OrderEfCoreQueryableExtensions.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/OrderEfCoreQueryableExtensions.cs index cecca583..fef4878c 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/OrderEfCoreQueryableExtensions.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/Orders/OrderEfCoreQueryableExtensions.cs @@ -15,7 +15,6 @@ public static class OrderEfCoreQueryableExtensions return queryable .Include(x => x.Address) .Include(x => x.Buyer) - .Include(x => x.OrderItems) - .Include(x => x.OrderStatus); + .Include(x => x.OrderItems); } } \ No newline at end of file diff --git a/services/ordering/test/EShopOnAbp.OrderingService.EntityFrameworkCore.Tests/EntityFrameworkCore/Orders/OrderRepository_Tests.cs b/services/ordering/test/EShopOnAbp.OrderingService.EntityFrameworkCore.Tests/EntityFrameworkCore/Orders/OrderRepository_Tests.cs index 580b80e4..902cf2a7 100644 --- a/services/ordering/test/EShopOnAbp.OrderingService.EntityFrameworkCore.Tests/EntityFrameworkCore/Orders/OrderRepository_Tests.cs +++ b/services/ordering/test/EShopOnAbp.OrderingService.EntityFrameworkCore.Tests/EntityFrameworkCore/Orders/OrderRepository_Tests.cs @@ -1,12 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using EShopOnAbp.OrderingService.Orders; +using EShopOnAbp.OrderingService.Orders; using EShopOnAbp.OrderingService.Orders.Specifications; using EShopOnAbp.OrderingService.Samples; -using Microsoft.EntityFrameworkCore; using Shouldly; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; using Xunit; namespace EShopOnAbp.OrderingService.EntityFrameworkCore.Orders; @@ -26,14 +25,6 @@ public class OrderRepository_Tests : SampleRepository_Tests(); } - [Fact] - public async Task Should_Get_OrderStatus() - { - var dbSet = _dbContext.Set(); - var statusList = await dbSet.ToListAsync(); - statusList.Count.ShouldNotBe(0); - } - [Fact] public async Task Should_Get_User_Orders() { From f5372ccd222936a204372d79208a46735ee6f104 Mon Sep 17 00:00:00 2001 From: malik masis Date: Thu, 17 Mar 2022 17:51:24 +0300 Subject: [PATCH 2/3] Removed OrderStatus string definitions --- .../Orders/OrderDto.cs | 2 +- .../Orders/OrderAppService.cs | 2 +- .../Orders/OrderStatus.cs | 0 .../OrderingServiceDbContext.cs | 20 ++++++------------- 4 files changed, 8 insertions(+), 16 deletions(-) rename services/ordering/src/{EShopOnAbp.OrderingService.Domain => EShopOnAbp.OrderingService.Domain.Shared}/Orders/OrderStatus.cs (100%) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs index 70dbf254..2cb13fca 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs @@ -8,7 +8,7 @@ public class OrderDto : EntityDto { public DateTime OrderDate { get; set; } public int OrderNo { get; set; } - public string OrderStatus { get; set; } + public OrderStatus OrderStatus { get; set; } public string PaymentMethod { get; set; } public BuyerDto Buyer { get; set; } public OrderAddressDto Address { get; set; } = new(); diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs index f33288ed..d39b0a15 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application/Orders/OrderAppService.cs @@ -106,7 +106,7 @@ public class OrderAppService : ApplicationService, IOrderAppService Id = order.Id, OrderNo = order.OrderNo, OrderDate = order.OrderDate, - OrderStatus = order.OrderStatus.ToString(), + OrderStatus = order.OrderStatus, PaymentMethod = order.PaymentMethod }; } diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs b/services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderStatus.cs similarity index 100% rename from services/ordering/src/EShopOnAbp.OrderingService.Domain/Orders/OrderStatus.cs rename to services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Orders/OrderStatus.cs diff --git a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs index 812eb22a..146bfd8e 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.EntityFrameworkCore/EntityFrameworkCore/OrderingServiceDbContext.cs @@ -2,8 +2,6 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using System; -using System.Data; -using System.Reflection.Emit; using Volo.Abp.Data; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore.Modeling; @@ -20,17 +18,17 @@ public class OrderingServiceDbContext : AbpDbContext, { } - protected override void OnModelCreating(ModelBuilder builder) + protected override void OnModelCreating(ModelBuilder modelBuilder) { - base.OnModelCreating(builder); + base.OnModelCreating(modelBuilder); /* Include modules to your migration db context */ - builder.ConfigureOrderingService(); + modelBuilder.ConfigureOrderingService(); /* Configure your own tables/entities inside here */ - builder.Entity(b => + modelBuilder.Entity(b => { b.ToTable(OrderingServiceDbProperties.DbTablePrefix + "Orders", OrderingServiceDbProperties.DbSchema); b.ConfigureByConvention(); //auto configure for the base class props @@ -43,16 +41,10 @@ public class OrderingServiceDbContext : AbpDbContext, b.Navigation(q => q.OrderItems).UsePropertyAccessMode(PropertyAccessMode.Property); - b.Property(q => q.OrderStatus).HasConversion(); - - //b.Property(e => e.OrderStatus).HasConversion( - // v => v.ToString(), - // v => (OrderStatus)Enum.Parse(typeof(OrderStatus), v)); + b.Property(q => q.OrderStatus).HasConversion(new EnumToStringConverter()); }); - - - builder.Entity(b => + modelBuilder.Entity(b => { b.ToTable(OrderingServiceDbProperties.DbTablePrefix + "OrderItems", OrderingServiceDbProperties.DbSchema); From f064bf041b4638aa9f930b89323122d9332b400a Mon Sep 17 00:00:00 2001 From: malik masis Date: Fri, 18 Mar 2022 09:35:59 +0300 Subject: [PATCH 3/3] To see PR changes - test --- .../Orders/OrderDto.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs index 2cb13fca..8c0bdadd 100644 --- a/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs +++ b/services/ordering/src/EShopOnAbp.OrderingService.Application.Contracts/Orders/OrderDto.cs @@ -6,7 +6,7 @@ namespace EShopOnAbp.OrderingService.Orders; public class OrderDto : EntityDto { - public DateTime OrderDate { get; set; } + public DateTime OrderDate { get; set; } public int OrderNo { get; set; } public OrderStatus OrderStatus { get; set; } public string PaymentMethod { get; set; }