errors fix

This commit is contained in:
2023-05-19 18:26:38 +04:00
parent 9d584e2f20
commit d150686576
17 changed files with 656 additions and 117 deletions

View File

@@ -15,7 +15,7 @@ namespace ComputerShopDatabaseImplement
{
if (optionsBuilder.IsConfigured == false)
{
optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-IRUVF5S\SQLEXPRESS;Initial Catalog=ComputerShopDatabaseCW;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True");
optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-QA8P9OJ;Initial Catalog=ComputerShopDatabase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True");
}
base.OnConfiguring(optionsBuilder);
}

View File

@@ -22,4 +22,8 @@
<ProjectReference Include="..\ComputerShopDataModels\ComputerShopDataModels.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Migrations\" />
</ItemGroup>
</Project>

View File

@@ -2,6 +2,7 @@
using ComputerShopContracts.SearchModels;
using ComputerShopContracts.StorageContracts;
using ComputerShopContracts.ViewModels;
using ComputerShopDatabaseImplement.Models;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
@@ -63,12 +64,29 @@ namespace ComputerShopDatabaseImplement.Implements
public OrderViewModel? Insert(OrderBindingModel model)
{
throw new NotImplementedException();
var newOrder = Order.Create(model);
if (newOrder == null)
{
return null;
}
using var context = new ComputerShopDatabase();
context.Orders.Add(newOrder);
context.SaveChanges();
return context.Orders.Include(x => x.Assemblies).Include(x => x.ClientId).FirstOrDefault(x => x.Id == newOrder.Id)?.GetViewModel;
}
public OrderViewModel? Update(OrderBindingModel model)
{
throw new NotImplementedException();
using var context = new ComputerShopDatabase();
var order = context.Orders.FirstOrDefault(x => x.Id == model.Id);
if (order == null)
{
return null;
}
order.Update(model);
context.SaveChanges();
return context.Orders.Include(x => x.Assemblies).FirstOrDefault(x => x.Id == order.Id)?.GetViewModel;
}
}
}

View File

@@ -1,95 +0,0 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ComputerShopDatabaseImplement.Migrations
{
/// <inheritdoc />
public partial class supplymig : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_EquipmentReceivings_Supplies_SupplyId",
table: "EquipmentReceivings");
migrationBuilder.DropIndex(
name: "IX_EquipmentReceivings_SupplyId",
table: "EquipmentReceivings");
migrationBuilder.DropColumn(
name: "SupplyId",
table: "EquipmentReceivings");
migrationBuilder.AlterColumn<int>(
name: "ReceivingId",
table: "Supplies",
type: "int",
nullable: true,
oldClrType: typeof(int),
oldType: "int");
migrationBuilder.CreateIndex(
name: "IX_Supplies_ReceivingId",
table: "Supplies",
column: "ReceivingId");
migrationBuilder.AddForeignKey(
name: "FK_Supplies_EquipmentReceivings_ReceivingId",
table: "Supplies",
column: "ReceivingId",
principalTable: "EquipmentReceivings",
principalColumn: "Id");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_Supplies_EquipmentReceivings_ReceivingId",
table: "Supplies");
migrationBuilder.DropIndex(
name: "IX_Supplies_ReceivingId",
table: "Supplies");
migrationBuilder.AlterColumn<int>(
name: "ReceivingId",
table: "Supplies",
type: "int",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "int",
oldNullable: true);
migrationBuilder.AddColumn<int>(
name: "SupplyId",
table: "EquipmentReceivings",
type: "int",
nullable: true);
migrationBuilder.AlterColumn<int>(
name: "ClientId",
table: "Assemblies",
type: "int",
nullable: true,
oldClrType: typeof(int),
oldType: "int");
migrationBuilder.CreateIndex(
name: "IX_EquipmentReceivings_SupplyId",
table: "EquipmentReceivings",
column: "SupplyId");
migrationBuilder.AddForeignKey(
name: "FK_EquipmentReceivings_Supplies_SupplyId",
table: "EquipmentReceivings",
column: "SupplyId",
principalTable: "Supplies",
principalColumn: "Id");
}
}
}

View File

@@ -12,8 +12,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace ComputerShopDatabaseImplement.Migrations
{
[DbContext(typeof(ComputerShopDatabase))]
[Migration("20230518181418_supplymig")]
partial class supplymig
[Migration("20230519134438_Init")]
partial class Init
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@@ -294,7 +294,7 @@ namespace ComputerShopDatabaseImplement.Migrations
b.Property<int>("OrderId")
.HasColumnType("int");
b.Property<int?>("ReceivingId")
b.Property<int>("ReceivingId")
.HasColumnType("int");
b.Property<int>("Status")
@@ -453,7 +453,9 @@ namespace ComputerShopDatabaseImplement.Migrations
b.HasOne("ComputerShopDatabaseImplement.Models.EquipmentReceiving", null)
.WithMany("Supplies")
.HasForeignKey("ReceivingId");
.HasForeignKey("ReceivingId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("ComputerShopDatabaseImplement.Models.SupplyOrder", b =>

View File

@@ -0,0 +1,400 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ComputerShopDatabaseImplement.Migrations
{
/// <inheritdoc />
public partial class Init : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Clients",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ClientFIO = table.Column<string>(type: "nvarchar(max)", nullable: false),
Email = table.Column<string>(type: "nvarchar(max)", nullable: false),
Password = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Clients", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Assemblies",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
AssemblyName = table.Column<string>(type: "nvarchar(max)", nullable: false),
Price = table.Column<double>(type: "float", nullable: false),
ClientId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Assemblies", x => x.Id);
table.ForeignKey(
name: "FK_Assemblies_Clients_ClientId",
column: x => x.ClientId,
principalTable: "Clients",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Components",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ComponentName = table.Column<string>(type: "nvarchar(max)", nullable: false),
Cost = table.Column<double>(type: "float", nullable: false),
ClientId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Components", x => x.Id);
table.ForeignKey(
name: "FK_Components_Clients_ClientId",
column: x => x.ClientId,
principalTable: "Clients",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "EquipmentReceivings",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
DateImplement = table.Column<DateTime>(type: "datetime2", nullable: true),
Status = table.Column<int>(type: "int", nullable: false),
ClientId = table.Column<int>(type: "int", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_EquipmentReceivings", x => x.Id);
table.ForeignKey(
name: "FK_EquipmentReceivings_Clients_ClientId",
column: x => x.ClientId,
principalTable: "Clients",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "Orders",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Sum = table.Column<double>(type: "float", nullable: false),
Status = table.Column<int>(type: "int", nullable: false),
DateCreate = table.Column<DateTime>(type: "datetime2", nullable: false),
DateImplement = table.Column<DateTime>(type: "datetime2", nullable: true),
ClientId = table.Column<int>(type: "int", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Orders", x => x.Id);
table.ForeignKey(
name: "FK_Orders_Clients_ClientId",
column: x => x.ClientId,
principalTable: "Clients",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "AssemblyComponents",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
AssemblyId = 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_AssemblyComponents", x => x.Id);
table.ForeignKey(
name: "FK_AssemblyComponents_Assemblies_AssemblyId",
column: x => x.AssemblyId,
principalTable: "Assemblies",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_AssemblyComponents_Components_ComponentId",
column: x => x.ComponentId,
principalTable: "Components",
principalColumn: "Id",
onDelete: ReferentialAction.NoAction);
});
migrationBuilder.CreateTable(
name: "Purchases",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ComponentName = table.Column<string>(type: "nvarchar(max)", nullable: false),
ComponentId = table.Column<int>(type: "int", nullable: false),
ClientId = table.Column<int>(type: "int", nullable: false),
Count = table.Column<int>(type: "int", nullable: false),
Sum = table.Column<double>(type: "float", nullable: false),
Status = table.Column<int>(type: "int", nullable: false),
DateCreate = table.Column<DateTime>(type: "datetime2", nullable: false),
DateImplement = table.Column<DateTime>(type: "datetime2", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Purchases", x => x.Id);
table.ForeignKey(
name: "FK_Purchases_Clients_ClientId",
column: x => x.ClientId,
principalTable: "Clients",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Purchases_Components_ComponentId",
column: x => x.ComponentId,
principalTable: "Components",
principalColumn: "Id",
onDelete: ReferentialAction.NoAction);
});
migrationBuilder.CreateTable(
name: "Supplies",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Status = table.Column<int>(type: "int", nullable: false),
DateCreate = table.Column<DateTime>(type: "datetime2", nullable: false),
DateImplement = table.Column<DateTime>(type: "datetime2", nullable: true),
OrderId = table.Column<int>(type: "int", nullable: false),
ReceivingId = table.Column<int>(type: "int", nullable: false),
ClientId = table.Column<int>(type: "int", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Supplies", x => x.Id);
table.ForeignKey(
name: "FK_Supplies_Clients_ClientId",
column: x => x.ClientId,
principalTable: "Clients",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Supplies_EquipmentReceivings_ReceivingId",
column: x => x.ReceivingId,
principalTable: "EquipmentReceivings",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "AssemblyOrders",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
AssemblyId = table.Column<int>(type: "int", nullable: false),
OrderId = table.Column<int>(type: "int", nullable: false),
Count = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_AssemblyOrders", x => x.Id);
table.ForeignKey(
name: "FK_AssemblyOrders_Assemblies_AssemblyId",
column: x => x.AssemblyId,
principalTable: "Assemblies",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_AssemblyOrders_Orders_OrderId",
column: x => x.OrderId,
principalTable: "Orders",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "ComponentSupplies",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
SupplyId = 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_ComponentSupplies", x => x.Id);
table.ForeignKey(
name: "FK_ComponentSupplies_Components_ComponentId",
column: x => x.ComponentId,
principalTable: "Components",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ComponentSupplies_Supplies_SupplyId",
column: x => x.SupplyId,
principalTable: "Supplies",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "SupplyOrders",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
OrderId = table.Column<int>(type: "int", nullable: false),
SupplyId = table.Column<int>(type: "int", nullable: false),
Count = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_SupplyOrders", x => x.Id);
table.ForeignKey(
name: "FK_SupplyOrders_Orders_OrderId",
column: x => x.OrderId,
principalTable: "Orders",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_SupplyOrders_Supplies_SupplyId",
column: x => x.SupplyId,
principalTable: "Supplies",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_Assemblies_ClientId",
table: "Assemblies",
column: "ClientId");
migrationBuilder.CreateIndex(
name: "IX_AssemblyComponents_AssemblyId",
table: "AssemblyComponents",
column: "AssemblyId");
migrationBuilder.CreateIndex(
name: "IX_AssemblyComponents_ComponentId",
table: "AssemblyComponents",
column: "ComponentId");
migrationBuilder.CreateIndex(
name: "IX_AssemblyOrders_AssemblyId",
table: "AssemblyOrders",
column: "AssemblyId");
migrationBuilder.CreateIndex(
name: "IX_AssemblyOrders_OrderId",
table: "AssemblyOrders",
column: "OrderId");
migrationBuilder.CreateIndex(
name: "IX_Components_ClientId",
table: "Components",
column: "ClientId");
migrationBuilder.CreateIndex(
name: "IX_ComponentSupplies_ComponentId",
table: "ComponentSupplies",
column: "ComponentId");
migrationBuilder.CreateIndex(
name: "IX_ComponentSupplies_SupplyId",
table: "ComponentSupplies",
column: "SupplyId");
migrationBuilder.CreateIndex(
name: "IX_EquipmentReceivings_ClientId",
table: "EquipmentReceivings",
column: "ClientId");
migrationBuilder.CreateIndex(
name: "IX_Orders_ClientId",
table: "Orders",
column: "ClientId");
migrationBuilder.CreateIndex(
name: "IX_Purchases_ClientId",
table: "Purchases",
column: "ClientId");
migrationBuilder.CreateIndex(
name: "IX_Purchases_ComponentId",
table: "Purchases",
column: "ComponentId");
migrationBuilder.CreateIndex(
name: "IX_Supplies_ClientId",
table: "Supplies",
column: "ClientId");
migrationBuilder.CreateIndex(
name: "IX_Supplies_ReceivingId",
table: "Supplies",
column: "ReceivingId");
migrationBuilder.CreateIndex(
name: "IX_SupplyOrders_OrderId",
table: "SupplyOrders",
column: "OrderId");
migrationBuilder.CreateIndex(
name: "IX_SupplyOrders_SupplyId",
table: "SupplyOrders",
column: "SupplyId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "AssemblyComponents");
migrationBuilder.DropTable(
name: "AssemblyOrders");
migrationBuilder.DropTable(
name: "ComponentSupplies");
migrationBuilder.DropTable(
name: "Purchases");
migrationBuilder.DropTable(
name: "SupplyOrders");
migrationBuilder.DropTable(
name: "Assemblies");
migrationBuilder.DropTable(
name: "Components");
migrationBuilder.DropTable(
name: "Orders");
migrationBuilder.DropTable(
name: "Supplies");
migrationBuilder.DropTable(
name: "EquipmentReceivings");
migrationBuilder.DropTable(
name: "Clients");
}
}
}

View File

@@ -291,7 +291,7 @@ namespace ComputerShopDatabaseImplement.Migrations
b.Property<int>("OrderId")
.HasColumnType("int");
b.Property<int?>("ReceivingId")
b.Property<int>("ReceivingId")
.HasColumnType("int");
b.Property<int>("Status")
@@ -450,7 +450,9 @@ namespace ComputerShopDatabaseImplement.Migrations
b.HasOne("ComputerShopDatabaseImplement.Models.EquipmentReceiving", null)
.WithMany("Supplies")
.HasForeignKey("ReceivingId");
.HasForeignKey("ReceivingId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("ComputerShopDatabaseImplement.Models.SupplyOrder", b =>

View File

@@ -27,6 +27,8 @@ namespace ComputerShopDatabaseImplement.Models
public virtual List<SupplyOrder> SupplyOrders { get; set; } = new();
[ForeignKey("OrderId")]
public virtual List<AssemblyOrder> Assemblies { get; set; } = new();
[Required]
public int ClientId { get; set; }
public static Order? Create(OrderBindingModel model)
{
if (model == null)

View File

@@ -26,18 +26,17 @@ namespace ComputerShopDatabaseImplement.Models
public int OrderId { get; set; }
public int ReceivingId { get; set; }
private Dictionary<int, (IOrderModel, int)>? _supplyOrders =
private Dictionary<int, IOrderModel>? _supplyOrders =
null;
[NotMapped]
public Dictionary<int, (int, IOrderModel)> SupplyOrders
public Dictionary<int, IOrderModel> SupplyOrders
{
get
{
if (_supplyOrders == null)
{
_supplyOrders = Orders
.ToDictionary(recPC => recPC.SupplyId, recPC =>
(recPC.OrderId, recPC.Order as IOrderModel));
.ToDictionary(recPC => recPC.SupplyId, recPC => recPC.Order as IOrderModel);
}
return _supplyOrders;
}