Relate Users and Orders, + migrations

This commit is contained in:
lumijiez
2025-06-06 19:26:33 +03:00
parent 27a59d7049
commit 8ffc8394e3
7 changed files with 1085 additions and 1 deletions

View File

@@ -1,3 +1,5 @@
using Imprink.Domain.Entities.Users;
namespace Imprink.Domain.Entities.Orders; namespace Imprink.Domain.Entities.Orders;
public class Order : EntityBase public class Order : EntityBase
@@ -11,6 +13,7 @@ public class Order : EntityBase
public string Notes { get; set; } = null!; public string Notes { get; set; } = null!;
public OrderStatus OrderStatus { get; set; } = null!; public OrderStatus OrderStatus { get; set; } = null!;
public User User { get; set; } = null!;
public ShippingStatus ShippingStatus { get; set; } = null!; public ShippingStatus ShippingStatus { get; set; } = null!;
public OrderAddress OrderAddress { get; set; } = null!; public OrderAddress OrderAddress { get; set; } = null!;
public virtual ICollection<OrderItem> OrderItems { get; set; } = new List<OrderItem>(); public virtual ICollection<OrderItem> OrderItems { get; set; } = new List<OrderItem>();

View File

@@ -1,3 +1,5 @@
using Imprink.Domain.Entities.Orders;
namespace Imprink.Domain.Entities.Users; namespace Imprink.Domain.Entities.Users;
public class User : EntityBase public class User : EntityBase
@@ -13,6 +15,7 @@ public class User : EntityBase
public virtual ICollection<Address> Addresses { get; set; } = new List<Address>(); public virtual ICollection<Address> Addresses { get; set; } = new List<Address>();
public virtual ICollection<UserRole> UserRoles { get; set; } = new List<UserRole>(); public virtual ICollection<UserRole> UserRoles { get; set; } = new List<UserRole>();
public virtual ICollection<Order> Orders { get; set; } = new List<Order>();
public string FullName => $"{FirstName} {LastName}"; public string FullName => $"{FirstName} {LastName}";
public Address? DefaultAddress => Addresses.FirstOrDefault(a => a.IsDefault && a.IsActive); public Address? DefaultAddress => Addresses.FirstOrDefault(a => a.IsDefault && a.IsActive);

View File

@@ -7,7 +7,6 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Folder Include="Common\Enums\" />
<Folder Include="Exceptions\" /> <Folder Include="Exceptions\" />
</ItemGroup> </ItemGroup>

View File

@@ -49,6 +49,12 @@ public class OrderConfiguration : EntityBaseConfiguration<Order>
.WithOne(oa => oa.Order) .WithOne(oa => oa.Order)
.HasForeignKey<OrderAddress>(oa => oa.OrderId) .HasForeignKey<OrderAddress>(oa => oa.OrderId)
.OnDelete(DeleteBehavior.Cascade); .OnDelete(DeleteBehavior.Cascade);
builder.HasOne(o => o.User)
.WithMany(u => u.Orders)
.HasForeignKey(o => o.UserId)
.HasPrincipalKey(u => u.Id)
.OnDelete(DeleteBehavior.Restrict);
builder.HasIndex(o => o.UserId) builder.HasIndex(o => o.UserId)
.HasDatabaseName("IX_Order_UserId"); .HasDatabaseName("IX_Order_UserId");

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Imprink.Infrastructure.Migrations
{
/// <inheritdoc />
public partial class RelateUsersAndOrders : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddForeignKey(
name: "FK_Orders_User_UserId",
table: "Orders",
column: "UserId",
principalTable: "User",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Orders_User_UserId",
table: "Orders");
}
}
}

View File

@@ -867,9 +867,17 @@ namespace Imprink.Infrastructure.Migrations
.OnDelete(DeleteBehavior.Restrict) .OnDelete(DeleteBehavior.Restrict)
.IsRequired(); .IsRequired();
b.HasOne("Imprink.Domain.Entities.Users.User", "User")
.WithMany("Orders")
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("OrderStatus"); b.Navigation("OrderStatus");
b.Navigation("ShippingStatus"); b.Navigation("ShippingStatus");
b.Navigation("User");
}); });
modelBuilder.Entity("Imprink.Domain.Entities.Orders.OrderAddress", b => modelBuilder.Entity("Imprink.Domain.Entities.Orders.OrderAddress", b =>
@@ -1012,6 +1020,8 @@ namespace Imprink.Infrastructure.Migrations
{ {
b.Navigation("Addresses"); b.Navigation("Addresses");
b.Navigation("Orders");
b.Navigation("UserRoles"); b.Navigation("UserRoles");
}); });
#pragma warning restore 612, 618 #pragma warning restore 612, 618