Merge branch 'Worker_Raspaev' into Storekeeper

This commit is contained in:
dasha 2023-04-01 16:49:06 +04:00
commit 12cc4e83b0
24 changed files with 805 additions and 554 deletions

View File

@ -11,7 +11,7 @@ namespace HardwareShopContracts.BindingModels
public string BuildName { get; set; } = string.Empty; public string BuildName { get; set; } = string.Empty;
public int UserID { get; set; } public int UserId { get; set; }
public Dictionary<int, (IComponentModel, int)>? BuildComponents { get; set; } public Dictionary<int, (IComponentModel, int)>? BuildComponents { get; set; }
} }

View File

@ -10,6 +10,6 @@ namespace HardwareShopContracts.BindingModels
public string Text { get; set; } = string.Empty; public string Text { get; set; } = string.Empty;
public int BuildID { get; set; } public int BuildId { get; set; }
} }
} }

View File

@ -14,7 +14,7 @@ namespace HardwareShopContracts.BindingModels
public DateTime? DatePurchase { get; set; } public DateTime? DatePurchase { get; set; }
public int UserID { get; set; } public int UserId { get; set; }
public Dictionary<int, (IBuildModel, int)>? PurchaseBuilds { get; set; } public Dictionary<int, (IBuildModel, int)>? PurchaseBuilds { get; set; }

View File

@ -15,7 +15,7 @@ namespace HardwareShopContracts.ViewModels
[DisplayName("Клиент")] [DisplayName("Клиент")]
public string UserEmail { get; set; } = string.Empty; public string UserEmail { get; set; } = string.Empty;
public int UserID { get; set; } public int UserId { get; set; }
public Dictionary<int, (IComponentModel, int)>? BuildComponents { get; set; } public Dictionary<int, (IComponentModel, int)>? BuildComponents { get; set; }
} }

View File

@ -13,6 +13,6 @@ namespace HardwareShopContracts.ViewModels
[DisplayName("Название сборки")] [DisplayName("Название сборки")]
public string BuildName { get; set; } = string.Empty; public string BuildName { get; set; } = string.Empty;
public int BuildID { get; set; } public int BuildId { get; set; }
} }
} }

View File

@ -16,7 +16,7 @@ namespace HardwareShopContracts.ViewModels
[DisplayName("Дата оплаты")] [DisplayName("Дата оплаты")]
public DateTime? DatePurchase { get; set; } public DateTime? DatePurchase { get; set; }
public int UserID { get; set; } public int UserId { get; set; }
[DisplayName("Email клиента")] [DisplayName("Email клиента")]
public string UserEmail { get; set; } = string.Empty; public string UserEmail { get; set; } = string.Empty;

View File

@ -13,7 +13,7 @@ namespace HardwareShopDataModels.Models
string BuildName { get; } string BuildName { get; }
int UserID { get; } int UserId { get; }
Dictionary<int, (IComponentModel, int)>? BuildComponents { get; } Dictionary<int, (IComponentModel, int)>? BuildComponents { get; }
} }

View File

@ -10,6 +10,6 @@ namespace HardwareShopDataModels.Models
{ {
string Text { get; } string Text { get; }
int BuildID { get; } int BuildId { get; }
} }
} }

View File

@ -11,7 +11,7 @@ namespace HardwareShopDataModels.Models
//через "?" обозначается что поле может быть null //через "?" обозначается что поле может быть null
DateTime? DatePurchase { get; } DateTime? DatePurchase { get; }
int UserID { get; } int UserId { get; }
Dictionary<int, (IBuildModel, int)>? PurchaseBuilds { get; } Dictionary<int, (IBuildModel, int)>? PurchaseBuilds { get; }

View File

@ -1,4 +1,7 @@
using HardwareShopDatabaseImplement.Models; using HardwareShopDatabaseImplement.Models;
using HardwareShopDatabaseImplement.Models.ManyToMany;
using HardwareShopDatabaseImplement.Models.Storekeeper;
using HardwareShopDatabaseImplement.Models.Worker;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
namespace HardwareShopDatabaseImplement namespace HardwareShopDatabaseImplement
@ -16,9 +19,9 @@ namespace HardwareShopDatabaseImplement
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
modelBuilder.Entity<BuildComponent>().HasKey(x => new { x.ComponentId, x.BuildID }); modelBuilder.Entity<BuildComponent>().HasKey(x => new { x.ComponentId, x.BuildId });
modelBuilder.Entity<PurchaseBuild>().HasKey(x => new { x.PurchaseID, x.BuildID }); modelBuilder.Entity<PurchaseBuild>().HasKey(x => new { x.PurchaseId, x.BuildId });
modelBuilder.Entity<PurchaseGood>().HasKey(x => new { x.PurchaseID, x.GoodID }); modelBuilder.Entity<PurchaseGood>().HasKey(x => new { x.PurchaseId, x.GoodId });
} }
public virtual DbSet<Build> Builds { set; get; } public virtual DbSet<Build> Builds { set; get; }
@ -33,7 +36,7 @@ namespace HardwareShopDatabaseImplement
public virtual DbSet<Order> Orders { set; get; } public virtual DbSet<Order> Orders { set; get; }
public virtual DbSet<Purchase> Purchase { set; get; } public virtual DbSet<Purchase> Purchases { set; get; }
public virtual DbSet<PurchaseBuild> PurchasesBuilds { set; get; } public virtual DbSet<PurchaseBuild> PurchasesBuilds { set; get; }

View File

@ -20,4 +20,8 @@
<ProjectReference Include="..\HardwareShopDataModels\HardwareShopDataModels.csproj" /> <ProjectReference Include="..\HardwareShopDataModels\HardwareShopDataModels.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Folder Include="Implements\" />
</ItemGroup>
</Project> </Project>

View File

@ -12,8 +12,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace HardwareShopDatabaseImplement.Migrations namespace HardwareShopDatabaseImplement.Migrations
{ {
[DbContext(typeof(HardwareShopDatabase))] [DbContext(typeof(HardwareShopDatabase))]
[Migration("20230401103551_init")] [Migration("20230401124213_init1")]
partial class init partial class init1
{ {
/// <inheritdoc /> /// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder) protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -25,191 +25,114 @@ namespace HardwareShopDatabaseImplement.Migrations
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Build", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.BuildComponent", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("BuildName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<decimal>("Price")
.HasColumnType("decimal(18,2)");
b.Property<int>("UserID")
.HasColumnType("int");
b.HasKey("Id");
b.ToTable("Builds");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.BuildComponent", b =>
{ {
b.Property<int>("ComponentId") b.Property<int>("ComponentId")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int>("BuildID")
.HasColumnType("int");
b.Property<int>("BuildId") b.Property<int>("BuildId")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int>("Count") b.Property<int>("Count")
.HasColumnType("int"); .HasColumnType("int");
b.HasKey("ComponentId", "BuildID"); b.HasKey("ComponentId", "BuildId");
b.HasIndex("BuildId"); b.HasIndex("BuildId");
b.ToTable("BuildComponent"); b.ToTable("BuildsComponents");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Comment", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseBuild", b =>
{ {
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("BuildID")
.HasColumnType("int");
b.Property<string>("BuildName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Text")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("BuildID");
b.ToTable("Comments");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Component", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.HasKey("Id");
b.ToTable("Components");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Good", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.HasKey("Id");
b.ToTable("Goods");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Order", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.HasKey("Id");
b.ToTable("Orders");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Purchase", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime?>("DatePurchase")
.HasColumnType("datetime2");
b.Property<int>("PurchaseStatus")
.HasColumnType("int");
b.Property<decimal>("Sum")
.HasColumnType("decimal(18,2)");
b.Property<int>("UserID")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserID");
b.ToTable("Purchase");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.PurchaseBuild", b =>
{
b.Property<int>("PurchaseID")
.HasColumnType("int");
b.Property<int>("BuildID")
.HasColumnType("int");
b.Property<int>("BuildId")
.HasColumnType("int");
b.Property<int>("Count")
.HasColumnType("int");
b.Property<int>("PurchaseId") b.Property<int>("PurchaseId")
.HasColumnType("int"); .HasColumnType("int");
b.HasKey("PurchaseID", "BuildID"); b.Property<int>("BuildId")
.HasColumnType("int");
b.Property<int>("Count")
.HasColumnType("int");
b.HasKey("PurchaseId", "BuildId");
b.HasIndex("BuildId"); b.HasIndex("BuildId");
b.HasIndex("PurchaseId");
b.ToTable("PurchasesBuilds"); b.ToTable("PurchasesBuilds");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.PurchaseGood", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseGood", b =>
{ {
b.Property<int>("PurchaseID") b.Property<int>("PurchaseId")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int>("GoodID") b.Property<int>("GoodId")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int>("Count") b.Property<int>("Count")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int>("PurchaseId") b.HasKey("PurchaseId", "GoodId");
.HasColumnType("int");
b.HasKey("PurchaseID", "GoodID"); b.HasIndex("GoodId");
b.HasIndex("GoodID");
b.HasIndex("PurchaseId");
b.ToTable("PurchasesGoods"); b.ToTable("PurchasesGoods");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Component", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Components");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Good", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Goods");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Order", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Orders");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.User", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.User", b =>
{ {
b.Property<int>("Id") b.Property<int>("Id")
@ -238,15 +161,89 @@ namespace HardwareShopDatabaseImplement.Migrations
b.ToTable("Users"); b.ToTable("Users");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.BuildComponent", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Build", b =>
{ {
b.HasOne("HardwareShopDatabaseImplement.Models.Build", "Build") b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("BuildName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<decimal>("Price")
.HasColumnType("decimal(18,2)");
b.Property<int>("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Builds");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Comment", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("BuildId")
.HasColumnType("int");
b.Property<string>("Text")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("BuildId");
b.ToTable("Comments");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Purchase", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime?>("DatePurchase")
.HasColumnType("datetime2");
b.Property<int>("PurchaseStatus")
.HasColumnType("int");
b.Property<decimal>("Sum")
.HasColumnType("decimal(18,2)");
b.Property<int>("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Purchases");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.BuildComponent", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Build", "Build")
.WithMany("Components") .WithMany("Components")
.HasForeignKey("BuildId") .HasForeignKey("BuildId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("HardwareShopDatabaseImplement.Models.Component", "Component") b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Component", "Component")
.WithMany() .WithMany()
.HasForeignKey("ComponentId") .HasForeignKey("ComponentId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
@ -257,37 +254,15 @@ namespace HardwareShopDatabaseImplement.Migrations
b.Navigation("Component"); b.Navigation("Component");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Comment", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseBuild", b =>
{ {
b.HasOne("HardwareShopDatabaseImplement.Models.Build", "Build") b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Build", "Build")
.WithMany()
.HasForeignKey("BuildID")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Build");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Purchase", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
.WithMany()
.HasForeignKey("UserID")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.PurchaseBuild", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.Build", "Build")
.WithMany("Purchases") .WithMany("Purchases")
.HasForeignKey("BuildId") .HasForeignKey("BuildId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("HardwareShopDatabaseImplement.Models.Purchase", "Purchase") b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Purchase", "Purchase")
.WithMany("Builds") .WithMany("Builds")
.HasForeignKey("PurchaseId") .HasForeignKey("PurchaseId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
@ -298,15 +273,15 @@ namespace HardwareShopDatabaseImplement.Migrations
b.Navigation("Purchase"); b.Navigation("Purchase");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.PurchaseGood", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseGood", b =>
{ {
b.HasOne("HardwareShopDatabaseImplement.Models.Good", "Good") b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Good", "Good")
.WithMany() .WithMany()
.HasForeignKey("GoodID") .HasForeignKey("GoodId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("HardwareShopDatabaseImplement.Models.Purchase", "Purchase") b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Purchase", "Purchase")
.WithMany("Goods") .WithMany("Goods")
.HasForeignKey("PurchaseId") .HasForeignKey("PurchaseId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
@ -317,14 +292,82 @@ namespace HardwareShopDatabaseImplement.Migrations
b.Navigation("Purchase"); b.Navigation("Purchase");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Build", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Component", b =>
{ {
b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Good", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Order", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Build", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Comment", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Build", "Build")
.WithMany("Comments")
.HasForeignKey("BuildId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Build");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Purchase", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Build", b =>
{
b.Navigation("Comments");
b.Navigation("Components"); b.Navigation("Components");
b.Navigation("Purchases"); b.Navigation("Purchases");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Purchase", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Purchase", b =>
{ {
b.Navigation("Builds"); b.Navigation("Builds");

View File

@ -6,62 +6,11 @@ using Microsoft.EntityFrameworkCore.Migrations;
namespace HardwareShopDatabaseImplement.Migrations namespace HardwareShopDatabaseImplement.Migrations
{ {
/// <inheritdoc /> /// <inheritdoc />
public partial class init : Migration public partial class init1 : Migration
{ {
/// <inheritdoc /> /// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder) protected override void Up(MigrationBuilder migrationBuilder)
{ {
migrationBuilder.CreateTable(
name: "Builds",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Price = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
BuildName = table.Column<string>(type: "nvarchar(max)", nullable: false),
UserID = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Builds", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Components",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1")
},
constraints: table =>
{
table.PrimaryKey("PK_Components", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Goods",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1")
},
constraints: table =>
{
table.PrimaryKey("PK_Goods", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Orders",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1")
},
constraints: table =>
{
table.PrimaryKey("PK_Orders", x => x.Id);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Users", name: "Users",
columns: table => new columns: table => new
@ -79,54 +28,85 @@ namespace HardwareShopDatabaseImplement.Migrations
}); });
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Comments", name: "Builds",
columns: table => new columns: table => new
{ {
Id = table.Column<int>(type: "int", nullable: false) Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"), .Annotation("SqlServer:Identity", "1, 1"),
Text = table.Column<string>(type: "nvarchar(max)", nullable: false), Price = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
BuildName = table.Column<string>(type: "nvarchar(max)", nullable: false), BuildName = table.Column<string>(type: "nvarchar(max)", nullable: false),
BuildID = table.Column<int>(type: "int", nullable: false) UserId = table.Column<int>(type: "int", nullable: false)
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_Comments", x => x.Id); table.PrimaryKey("PK_Builds", x => x.Id);
table.ForeignKey( table.ForeignKey(
name: "FK_Comments_Builds_BuildID", name: "FK_Builds_Users_UserId",
column: x => x.BuildID, column: x => x.UserId,
principalTable: "Builds", principalTable: "Users",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "BuildComponent", name: "Components",
columns: table => new columns: table => new
{ {
BuildID = table.Column<int>(type: "int", nullable: false), Id = table.Column<int>(type: "int", nullable: false)
ComponentId = table.Column<int>(type: "int", nullable: false), .Annotation("SqlServer:Identity", "1, 1"),
Count = table.Column<int>(type: "int", nullable: false), UserId = table.Column<int>(type: "int", nullable: false)
BuildId = table.Column<int>(type: "int", nullable: false)
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_BuildComponent", x => new { x.ComponentId, x.BuildID }); table.PrimaryKey("PK_Components", x => x.Id);
table.ForeignKey( table.ForeignKey(
name: "FK_BuildComponent_Builds_BuildId", name: "FK_Components_Users_UserId",
column: x => x.BuildId, column: x => x.UserId,
principalTable: "Builds", principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_BuildComponent_Components_ComponentId",
column: x => x.ComponentId,
principalTable: "Components",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "Purchase", name: "Goods",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
UserId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Goods", x => x.Id);
table.ForeignKey(
name: "FK_Goods_Users_UserId",
column: x => x.UserId,
principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Orders",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
UserId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Orders", x => x.Id);
table.ForeignKey(
name: "FK_Orders_Users_UserId",
column: x => x.UserId,
principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Purchases",
columns: table => new columns: table => new
{ {
Id = table.Column<int>(type: "int", nullable: false) Id = table.Column<int>(type: "int", nullable: false)
@ -134,32 +114,75 @@ namespace HardwareShopDatabaseImplement.Migrations
Sum = table.Column<decimal>(type: "decimal(18,2)", nullable: false), Sum = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
PurchaseStatus = table.Column<int>(type: "int", nullable: false), PurchaseStatus = table.Column<int>(type: "int", nullable: false),
DatePurchase = table.Column<DateTime>(type: "datetime2", nullable: true), DatePurchase = table.Column<DateTime>(type: "datetime2", nullable: true),
UserID = table.Column<int>(type: "int", nullable: false) UserId = table.Column<int>(type: "int", nullable: false)
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_Purchase", x => x.Id); table.PrimaryKey("PK_Purchases", x => x.Id);
table.ForeignKey( table.ForeignKey(
name: "FK_Purchase_Users_UserID", name: "FK_Purchases_Users_UserId",
column: x => x.UserID, column: x => x.UserId,
principalTable: "Users", principalTable: "Users",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
migrationBuilder.CreateTable(
name: "Comments",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Text = table.Column<string>(type: "nvarchar(max)", nullable: false),
BuildId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Comments", x => x.Id);
table.ForeignKey(
name: "FK_Comments_Builds_BuildId",
column: x => x.BuildId,
principalTable: "Builds",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "BuildsComponents",
columns: table => new
{
BuildId = table.Column<int>(type: "int", nullable: false),
ComponentId = table.Column<int>(type: "int", nullable: false),
Count = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_BuildsComponents", x => new { x.ComponentId, x.BuildId });
table.ForeignKey(
name: "FK_BuildsComponents_Builds_BuildId",
column: x => x.BuildId,
principalTable: "Builds",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_BuildsComponents_Components_ComponentId",
column: x => x.ComponentId,
principalTable: "Components",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
name: "PurchasesBuilds", name: "PurchasesBuilds",
columns: table => new columns: table => new
{ {
BuildID = table.Column<int>(type: "int", nullable: false),
PurchaseID = table.Column<int>(type: "int", nullable: false),
Count = table.Column<int>(type: "int", nullable: false),
BuildId = table.Column<int>(type: "int", nullable: false), BuildId = table.Column<int>(type: "int", nullable: false),
PurchaseId = table.Column<int>(type: "int", nullable: false) PurchaseId = table.Column<int>(type: "int", nullable: false),
Count = table.Column<int>(type: "int", nullable: false)
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_PurchasesBuilds", x => new { x.PurchaseID, x.BuildID }); table.PrimaryKey("PK_PurchasesBuilds", x => new { x.PurchaseId, x.BuildId });
table.ForeignKey( table.ForeignKey(
name: "FK_PurchasesBuilds_Builds_BuildId", name: "FK_PurchasesBuilds_Builds_BuildId",
column: x => x.BuildId, column: x => x.BuildId,
@ -167,9 +190,9 @@ namespace HardwareShopDatabaseImplement.Migrations
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
table.ForeignKey( table.ForeignKey(
name: "FK_PurchasesBuilds_Purchase_PurchaseId", name: "FK_PurchasesBuilds_Purchases_PurchaseId",
column: x => x.PurchaseId, column: x => x.PurchaseId,
principalTable: "Purchase", principalTable: "Purchases",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
@ -178,42 +201,61 @@ namespace HardwareShopDatabaseImplement.Migrations
name: "PurchasesGoods", name: "PurchasesGoods",
columns: table => new columns: table => new
{ {
PurchaseID = table.Column<int>(type: "int", nullable: false), PurchaseId = table.Column<int>(type: "int", nullable: false),
GoodID = table.Column<int>(type: "int", nullable: false), GoodId = table.Column<int>(type: "int", nullable: false),
Count = table.Column<int>(type: "int", nullable: false), Count = table.Column<int>(type: "int", nullable: false)
PurchaseId = table.Column<int>(type: "int", nullable: false)
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("PK_PurchasesGoods", x => new { x.PurchaseID, x.GoodID }); table.PrimaryKey("PK_PurchasesGoods", x => new { x.PurchaseId, x.GoodId });
table.ForeignKey( table.ForeignKey(
name: "FK_PurchasesGoods_Goods_GoodID", name: "FK_PurchasesGoods_Goods_GoodId",
column: x => x.GoodID, column: x => x.GoodId,
principalTable: "Goods", principalTable: "Goods",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
table.ForeignKey( table.ForeignKey(
name: "FK_PurchasesGoods_Purchase_PurchaseId", name: "FK_PurchasesGoods_Purchases_PurchaseId",
column: x => x.PurchaseId, column: x => x.PurchaseId,
principalTable: "Purchase", principalTable: "Purchases",
principalColumn: "Id", principalColumn: "Id",
onDelete: ReferentialAction.Cascade); onDelete: ReferentialAction.Cascade);
}); });
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_BuildComponent_BuildId", name: "IX_Builds_UserId",
table: "BuildComponent", table: "Builds",
column: "UserId");
migrationBuilder.CreateIndex(
name: "IX_BuildsComponents_BuildId",
table: "BuildsComponents",
column: "BuildId"); column: "BuildId");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Comments_BuildID", name: "IX_Comments_BuildId",
table: "Comments", table: "Comments",
column: "BuildID"); column: "BuildId");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_Purchase_UserID", name: "IX_Components_UserId",
table: "Purchase", table: "Components",
column: "UserID"); column: "UserId");
migrationBuilder.CreateIndex(
name: "IX_Goods_UserId",
table: "Goods",
column: "UserId");
migrationBuilder.CreateIndex(
name: "IX_Orders_UserId",
table: "Orders",
column: "UserId");
migrationBuilder.CreateIndex(
name: "IX_Purchases_UserId",
table: "Purchases",
column: "UserId");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_PurchasesBuilds_BuildId", name: "IX_PurchasesBuilds_BuildId",
@ -221,26 +263,16 @@ namespace HardwareShopDatabaseImplement.Migrations
column: "BuildId"); column: "BuildId");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "IX_PurchasesBuilds_PurchaseId", name: "IX_PurchasesGoods_GoodId",
table: "PurchasesBuilds",
column: "PurchaseId");
migrationBuilder.CreateIndex(
name: "IX_PurchasesGoods_GoodID",
table: "PurchasesGoods", table: "PurchasesGoods",
column: "GoodID"); column: "GoodId");
migrationBuilder.CreateIndex(
name: "IX_PurchasesGoods_PurchaseId",
table: "PurchasesGoods",
column: "PurchaseId");
} }
/// <inheritdoc /> /// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder) protected override void Down(MigrationBuilder migrationBuilder)
{ {
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "BuildComponent"); name: "BuildsComponents");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Comments"); name: "Comments");
@ -264,7 +296,7 @@ namespace HardwareShopDatabaseImplement.Migrations
name: "Goods"); name: "Goods");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Purchase"); name: "Purchases");
migrationBuilder.DropTable( migrationBuilder.DropTable(
name: "Users"); name: "Users");

View File

@ -22,191 +22,114 @@ namespace HardwareShopDatabaseImplement.Migrations
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Build", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.BuildComponent", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("BuildName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<decimal>("Price")
.HasColumnType("decimal(18,2)");
b.Property<int>("UserID")
.HasColumnType("int");
b.HasKey("Id");
b.ToTable("Builds");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.BuildComponent", b =>
{ {
b.Property<int>("ComponentId") b.Property<int>("ComponentId")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int>("BuildID")
.HasColumnType("int");
b.Property<int>("BuildId") b.Property<int>("BuildId")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int>("Count") b.Property<int>("Count")
.HasColumnType("int"); .HasColumnType("int");
b.HasKey("ComponentId", "BuildID"); b.HasKey("ComponentId", "BuildId");
b.HasIndex("BuildId"); b.HasIndex("BuildId");
b.ToTable("BuildComponent"); b.ToTable("BuildsComponents");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Comment", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseBuild", b =>
{ {
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("BuildID")
.HasColumnType("int");
b.Property<string>("BuildName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Text")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("BuildID");
b.ToTable("Comments");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Component", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.HasKey("Id");
b.ToTable("Components");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Good", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.HasKey("Id");
b.ToTable("Goods");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Order", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.HasKey("Id");
b.ToTable("Orders");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Purchase", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime?>("DatePurchase")
.HasColumnType("datetime2");
b.Property<int>("PurchaseStatus")
.HasColumnType("int");
b.Property<decimal>("Sum")
.HasColumnType("decimal(18,2)");
b.Property<int>("UserID")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserID");
b.ToTable("Purchase");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.PurchaseBuild", b =>
{
b.Property<int>("PurchaseID")
.HasColumnType("int");
b.Property<int>("BuildID")
.HasColumnType("int");
b.Property<int>("BuildId")
.HasColumnType("int");
b.Property<int>("Count")
.HasColumnType("int");
b.Property<int>("PurchaseId") b.Property<int>("PurchaseId")
.HasColumnType("int"); .HasColumnType("int");
b.HasKey("PurchaseID", "BuildID"); b.Property<int>("BuildId")
.HasColumnType("int");
b.Property<int>("Count")
.HasColumnType("int");
b.HasKey("PurchaseId", "BuildId");
b.HasIndex("BuildId"); b.HasIndex("BuildId");
b.HasIndex("PurchaseId");
b.ToTable("PurchasesBuilds"); b.ToTable("PurchasesBuilds");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.PurchaseGood", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseGood", b =>
{ {
b.Property<int>("PurchaseID") b.Property<int>("PurchaseId")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int>("GoodID") b.Property<int>("GoodId")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int>("Count") b.Property<int>("Count")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int>("PurchaseId") b.HasKey("PurchaseId", "GoodId");
.HasColumnType("int");
b.HasKey("PurchaseID", "GoodID"); b.HasIndex("GoodId");
b.HasIndex("GoodID");
b.HasIndex("PurchaseId");
b.ToTable("PurchasesGoods"); b.ToTable("PurchasesGoods");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Component", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Components");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Good", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Goods");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Order", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Orders");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.User", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.User", b =>
{ {
b.Property<int>("Id") b.Property<int>("Id")
@ -235,15 +158,89 @@ namespace HardwareShopDatabaseImplement.Migrations
b.ToTable("Users"); b.ToTable("Users");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.BuildComponent", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Build", b =>
{ {
b.HasOne("HardwareShopDatabaseImplement.Models.Build", "Build") b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("BuildName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<decimal>("Price")
.HasColumnType("decimal(18,2)");
b.Property<int>("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Builds");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Comment", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("BuildId")
.HasColumnType("int");
b.Property<string>("Text")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("BuildId");
b.ToTable("Comments");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Purchase", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime?>("DatePurchase")
.HasColumnType("datetime2");
b.Property<int>("PurchaseStatus")
.HasColumnType("int");
b.Property<decimal>("Sum")
.HasColumnType("decimal(18,2)");
b.Property<int>("UserId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("UserId");
b.ToTable("Purchases");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.BuildComponent", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Build", "Build")
.WithMany("Components") .WithMany("Components")
.HasForeignKey("BuildId") .HasForeignKey("BuildId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("HardwareShopDatabaseImplement.Models.Component", "Component") b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Component", "Component")
.WithMany() .WithMany()
.HasForeignKey("ComponentId") .HasForeignKey("ComponentId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
@ -254,37 +251,15 @@ namespace HardwareShopDatabaseImplement.Migrations
b.Navigation("Component"); b.Navigation("Component");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Comment", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseBuild", b =>
{ {
b.HasOne("HardwareShopDatabaseImplement.Models.Build", "Build") b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Build", "Build")
.WithMany()
.HasForeignKey("BuildID")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Build");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Purchase", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
.WithMany()
.HasForeignKey("UserID")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.PurchaseBuild", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.Build", "Build")
.WithMany("Purchases") .WithMany("Purchases")
.HasForeignKey("BuildId") .HasForeignKey("BuildId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("HardwareShopDatabaseImplement.Models.Purchase", "Purchase") b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Purchase", "Purchase")
.WithMany("Builds") .WithMany("Builds")
.HasForeignKey("PurchaseId") .HasForeignKey("PurchaseId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
@ -295,15 +270,15 @@ namespace HardwareShopDatabaseImplement.Migrations
b.Navigation("Purchase"); b.Navigation("Purchase");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.PurchaseGood", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.ManyToMany.PurchaseGood", b =>
{ {
b.HasOne("HardwareShopDatabaseImplement.Models.Good", "Good") b.HasOne("HardwareShopDatabaseImplement.Models.Storekeeper.Good", "Good")
.WithMany() .WithMany()
.HasForeignKey("GoodID") .HasForeignKey("GoodId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired(); .IsRequired();
b.HasOne("HardwareShopDatabaseImplement.Models.Purchase", "Purchase") b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Purchase", "Purchase")
.WithMany("Goods") .WithMany("Goods")
.HasForeignKey("PurchaseId") .HasForeignKey("PurchaseId")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
@ -314,14 +289,82 @@ namespace HardwareShopDatabaseImplement.Migrations
b.Navigation("Purchase"); b.Navigation("Purchase");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Build", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Component", b =>
{ {
b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Good", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Storekeeper.Order", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Build", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Comment", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.Worker.Build", "Build")
.WithMany("Comments")
.HasForeignKey("BuildId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Build");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Purchase", b =>
{
b.HasOne("HardwareShopDatabaseImplement.Models.User", "User")
.WithMany()
.HasForeignKey("UserId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("User");
});
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Build", b =>
{
b.Navigation("Comments");
b.Navigation("Components"); b.Navigation("Components");
b.Navigation("Purchases"); b.Navigation("Purchases");
}); });
modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Purchase", b => modelBuilder.Entity("HardwareShopDatabaseImplement.Models.Worker.Purchase", b =>
{ {
b.Navigation("Builds"); b.Navigation("Builds");

View File

@ -1,4 +1,6 @@
using System; using HardwareShopDatabaseImplement.Models.Storekeeper;
using HardwareShopDatabaseImplement.Models.Worker;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
@ -6,12 +8,12 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace HardwareShopDatabaseImplement.Models namespace HardwareShopDatabaseImplement.Models.ManyToMany
{ {
public class BuildComponent public class BuildComponent
{ {
public int BuildID { get; set; } public int BuildId { get; set; }
public int ComponentId { get; set; } public int ComponentId { get; set; }

View File

@ -1,4 +1,5 @@
using System; using HardwareShopDatabaseImplement.Models.Worker;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
@ -6,14 +7,14 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace HardwareShopDatabaseImplement.Models namespace HardwareShopDatabaseImplement.Models.ManyToMany
{ {
public class PurchaseBuild public class PurchaseBuild
{ {
public int BuildID { get; set; } public int BuildId { get; set; }
public int PurchaseID { get; set; } public int PurchaseId { get; set; }
[Required] [Required]
public int Count { get; set; } public int Count { get; set; }

View File

@ -1,4 +1,6 @@
using System; using HardwareShopDatabaseImplement.Models.Storekeeper;
using HardwareShopDatabaseImplement.Models.Worker;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
@ -6,14 +8,14 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace HardwareShopDatabaseImplement.Models namespace HardwareShopDatabaseImplement.Models.ManyToMany
{ {
public class PurchaseGood public class PurchaseGood
{ {
public int PurchaseID { get; set; } public int PurchaseId { get; set; }
public int GoodID { get; set; } public int GoodId { get; set; }
[Required] [Required]
public int Count { get; set; } public int Count { get; set; }

View File

@ -1,37 +0,0 @@
using HardwareShopDataModels.Enums;
using HardwareShopDataModels.Models;
using HardwareShopDataModels.Models;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations.Schema;
namespace HardwareShopDatabaseImplement.Models
{
public class Purchase : IPurchaseModel
{
public int Id { get; set; }
public decimal Sum { get; set; }
public PurchaseStatus PurchaseStatus { get; set; } = PurchaseStatus.Неизвестен;
public DateTime? DatePurchase { get; set; }
public int UserID { get; set; }
public virtual User User { get; set; }
[NotMapped]
public Dictionary<int, (IBuildModel, int)>? PurchaseBuilds { get; set; }
[NotMapped]
public Dictionary<int, (IGoodModel, int)> PurchaseGoods { get; set; } = new();
[ForeignKey("PurchaseId")]
public virtual List<PurchaseBuild>? Builds { get; set; }
[ForeignKey("PurchaseId")]
public virtual List<PurchaseGood> Goods { get; set; } = new();
}
}

View File

@ -5,7 +5,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace HardwareShopDatabaseImplement.Models namespace HardwareShopDatabaseImplement.Models.Storekeeper
{ {
public class Component : IComponentModel public class Component : IComponentModel
{ {

View File

@ -6,7 +6,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace HardwareShopDatabaseImplement.Models namespace HardwareShopDatabaseImplement.Models.Storekeeper
{ {
public class Good : IGoodModel public class Good : IGoodModel
{ {

View File

@ -2,7 +2,7 @@
using HardwareShopDataModels.Models; using HardwareShopDataModels.Models;
using HardwareShopDataModels.Models; using HardwareShopDataModels.Models;
using System.ComponentModel; using System.ComponentModel;
namespace HardwareShopDatabaseImplement.Models namespace HardwareShopDatabaseImplement.Models.Storekeeper
{ {
public class Order : IOrderModel public class Order : IOrderModel
{ {

View File

@ -1,11 +1,11 @@
using HardwareShopContracts.BindingModels; using HardwareShopContracts.BindingModels;
using HardwareShopContracts.ViewModels; using HardwareShopContracts.ViewModels;
using HardwareShopDatabaseImplement.Models.ManyToMany;
using HardwareShopDataModels.Models; using HardwareShopDataModels.Models;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
namespace HardwareShopDatabaseImplement.Models namespace HardwareShopDatabaseImplement.Models.Worker
{ {
public class Build : IBuildModel public class Build : IBuildModel
{ {
@ -18,7 +18,7 @@ namespace HardwareShopDatabaseImplement.Models
public string BuildName { get; set; } = string.Empty; public string BuildName { get; set; } = string.Empty;
[Required] [Required]
public int UserID { get; set; } public int UserId { get; set; }
public virtual User User { get; set; } public virtual User User { get; set; }
@ -55,7 +55,7 @@ namespace HardwareShopDatabaseImplement.Models
Id = model.Id, Id = model.Id,
Price = model.Price, Price = model.Price,
BuildName = model.BuildName, BuildName = model.BuildName,
UserID = model.UserID, UserId = model.UserId,
Components = model.BuildComponents.Select(x => new BuildComponent Components = model.BuildComponents.Select(x => new BuildComponent
{ {
Component = context.Components.First(y => y.Id == x.Key), Component = context.Components.First(y => y.Id == x.Key),
@ -76,13 +76,13 @@ namespace HardwareShopDatabaseImplement.Models
BuildName = BuildName, BuildName = BuildName,
Price = Price, Price = Price,
UserEmail = User.Email, UserEmail = User.Email,
UserID = UserID, UserId = UserId,
BuildComponents = BuildComponents BuildComponents = BuildComponents
}; };
public void UpdateComponents(HardwareShopDatabase context, BuildBindingModel model) public void UpdateComponents(HardwareShopDatabase context, BuildBindingModel model)
{ {
var buildComponents = context.BuildsComponents.Where(rec => rec.BuildID == model.Id).ToList(); var buildComponents = context.BuildsComponents.Where(rec => rec.BuildId == model.Id).ToList();
if (buildComponents != null && buildComponents.Count > 0) if (buildComponents != null && buildComponents.Count > 0)
{ // удалили те в бд, которых нет в модели { // удалили те в бд, которых нет в модели
context.BuildsComponents.RemoveRange(buildComponents.Where(rec => !model.BuildComponents.ContainsKey(rec.ComponentId))); context.BuildsComponents.RemoveRange(buildComponents.Where(rec => !model.BuildComponents.ContainsKey(rec.ComponentId)));

View File

@ -4,7 +4,7 @@ using HardwareShopDataModels.Models;
using System.ComponentModel; using System.ComponentModel;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
namespace HardwareShopDatabaseImplement.Models namespace HardwareShopDatabaseImplement.Models.Worker
{ {
public class Comment : ICommentModel public class Comment : ICommentModel
{ {
@ -14,7 +14,7 @@ namespace HardwareShopDatabaseImplement.Models
public string Text { get; set; } = string.Empty; public string Text { get; set; } = string.Empty;
[Required] [Required]
public int BuildID { get; set; } public int BuildId { get; set; }
public virtual Build Build { get; set; } public virtual Build Build { get; set; }
@ -28,7 +28,7 @@ namespace HardwareShopDatabaseImplement.Models
{ {
Id = model.Id, Id = model.Id,
Text = model.Text, Text = model.Text,
BuildID = model.BuildID BuildId = model.BuildId
}; };
} }
public void Update(CommentBindingModel? model) public void Update(CommentBindingModel? model)
@ -43,7 +43,7 @@ namespace HardwareShopDatabaseImplement.Models
{ {
Id = Id, Id = Id,
Text = Text, Text = Text,
BuildID = BuildID, BuildId = BuildId,
BuildName = Build.BuildName BuildName = Build.BuildName
}; };
} }

View File

@ -0,0 +1,158 @@
using HardwareShopContracts.BindingModels;
using HardwareShopContracts.ViewModels;
using HardwareShopDatabaseImplement.Models.ManyToMany;
using HardwareShopDataModels.Enums;
using HardwareShopDataModels.Models;
using System.ComponentModel.DataAnnotations.Schema;
using System.Diagnostics;
namespace HardwareShopDatabaseImplement.Models.Worker
{
public class Purchase : IPurchaseModel
{
public int Id { get; set; }
public decimal Sum { get; set; }
public PurchaseStatus PurchaseStatus { get; set; } = PurchaseStatus.Неизвестен;
public DateTime? DatePurchase { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
[ForeignKey("PurchaseId")]
public virtual List<PurchaseBuild>? Builds { get; set; }
public Dictionary<int, (IBuildModel, int)>? _purchaseBuilds = null;
[NotMapped]
public Dictionary<int, (IBuildModel, int)>? PurchaseBuilds
{
get
{
if (_purchaseBuilds == null)
{
_purchaseBuilds = Builds.ToDictionary(recPB => recPB.BuildId, recPB => (recPB.Build as IBuildModel, recPB.Count));
}
return _purchaseBuilds;
}
}
[ForeignKey("PurchaseId")]
public virtual List<PurchaseGood> Goods { get; set; } = new();
public Dictionary<int, (IGoodModel, int)>? _purchaseGoods = null;
[NotMapped]
public Dictionary<int, (IGoodModel, int)>? PurchaseGoods
{
get
{
if (_purchaseGoods == null)
{
_purchaseGoods = Goods.ToDictionary(recPG => recPG.GoodId, recPG => (recPG.Good as IGoodModel, recPG.Count));
}
return _purchaseGoods;
}
}
public static Purchase Create(HardwareShopDatabase context, PurchaseBindingModel model)
{
return new Purchase()
{
Id = model.Id,
Sum = model.Sum,
PurchaseStatus = model.PurchaseStatus,
DatePurchase = model.DatePurchase,
UserId = model.UserId,
Builds = model.PurchaseBuilds.Select(x => new PurchaseBuild
{
Build = context.Builds.First(y => y.Id == x.Key),
Count = x.Value.Item2
}).ToList(),
Goods = model.PurchaseGoods.Select(x => new PurchaseGood
{
Good = context.Goods.First(y => y.Id == x.Key),
Count = x.Value.Item2
}).ToList()
};
}
public void Update(PurchaseBindingModel model)
{
PurchaseStatus = model.PurchaseStatus;
DatePurchase = model.DatePurchase;
}
public PurchaseViewModel GetViewModel => new()
{
Id = Id,
Sum = Sum,
PurchaseStatus = PurchaseStatus,
DatePurchase = DatePurchase,
UserId = UserId,
UserEmail = User.Email,
PurchaseBuilds = PurchaseBuilds,
PurchaseGoods = PurchaseGoods
};
public void UpdateBuilds(HardwareShopDatabase context, PurchaseBindingModel model)
{
var purchaseBuilds = context.PurchasesBuilds.Where(rec => rec.PurchaseId == model.Id).ToList();
if (purchaseBuilds != null && purchaseBuilds.Count > 0)
{
context.PurchasesBuilds.RemoveRange(purchaseBuilds.Where(rec => !model.PurchaseBuilds.ContainsKey(rec.BuildId)));
context.SaveChanges();
foreach (var updateBuild in purchaseBuilds)
{
updateBuild.Count = model.PurchaseBuilds[updateBuild.BuildId].Item2;
model.PurchaseBuilds.Remove(updateBuild.BuildId);
}
context.SaveChanges();
}
var purchase = context.Purchases.First(x => x.Id == Id);
foreach (var dc in model.PurchaseBuilds)
{
context.PurchasesBuilds.Add(new PurchaseBuild
{
Purchase = purchase,
Build = context.Builds.First(x => x.Id == dc.Key),
Count = dc.Value.Item2
});
context.SaveChanges();
}
_purchaseBuilds = null;
}
public void UpdateGoods(HardwareShopDatabase context, PurchaseBindingModel model)
{
var purchaseGoods = context.PurchasesGoods.Where(rec => rec.PurchaseId == model.Id).ToList();
if (purchaseGoods != null && purchaseGoods.Count > 0)
{ // удалили те в бд, которых нет в модели
context.PurchasesGoods.RemoveRange(purchaseGoods.Where(rec => !model.PurchaseGoods.ContainsKey(rec.GoodId)));
context.SaveChanges();
// обновили количество у существующих записей
foreach (var updateGood in purchaseGoods)
{
updateGood.Count = model.PurchaseGoods[updateGood.GoodId].Item2;
model.PurchaseGoods.Remove(updateGood.GoodId);
}
context.SaveChanges();
}
var purchase = context.Purchases.First(x => x.Id == Id);
//добавляем в бд блюда которые есть в моделе, но ещё нет в бд
foreach (var dc in model.PurchaseGoods)
{
context.PurchasesGoods.Add(new PurchaseGood
{
Purchase = purchase,
Good = context.Goods.First(x => x.Id == dc.Key),
Count = dc.Value.Item2
});
context.SaveChanges();
}
_purchaseGoods = null;
}
}
}