diff --git a/Pizzeria/PizzeriaBusinessLogic/BusinessLogics/OrderLogic.cs b/Pizzeria/PizzeriaBusinessLogic/BusinessLogics/OrderLogic.cs
index 20e438b..b67ca3a 100644
--- a/Pizzeria/PizzeriaBusinessLogic/BusinessLogics/OrderLogic.cs
+++ b/Pizzeria/PizzeriaBusinessLogic/BusinessLogics/OrderLogic.cs
@@ -78,24 +78,30 @@ namespace PizzeriaBusinessLogic.BusinessLogics
}
public bool DeliveryOrder(OrderBindingModel model)
{
- var order = _orderStorage.GetElement(new OrderSearchModel
+ lock (_locker)
{
- Id = model.Id,
- });
- if (order == null)
- {
- throw new ArgumentNullException(nameof(order));
+ model = FillOrderBindingModel(model);
+ if (model.Status != OrderStatus.Готов && model.Status != OrderStatus.Ожидает)
+ {
+ _logger.LogWarning("Changing status operation faled: Current-{Status}:required-Выдан.", model.Status);
+ throw new InvalidOperationException($"Невозможно приствоить статус выдан заказу с текущим статусом {model.Status}");
+ }
+ if (!_shopStorage.RestockingShops(new SupplyBindingModel
+ {
+ PizzaId = model.PizzaId,
+ Count = model.Count
+ }))
+ {
+ if (model.Status == OrderStatus.Готов)
+ {
+ model.Status = OrderStatus.Ожидает;
+ UpdateOrder(model);
+ }
+ throw new ArgumentException("Недостаточно места в магазинах для поставки");
+ }
+ model.Status = OrderStatus.Выдан;
+ return UpdateOrder(model);
}
- if (!_shopStorage.RestockingShops(new SupplyBindingModel
- {
- PizzaId = order.PizzaId,
- Count = order.Count
- }))
- {
- throw new ArgumentException("Недостаточно места");
- }
-
- return ChangeStatus(model, OrderStatus.Выдан);
}
private void CheckModel(OrderBindingModel model, bool withParams = true)
{
@@ -123,38 +129,52 @@ namespace PizzeriaBusinessLogic.BusinessLogics
model.PizzaId, model.Count,model.Sum, model.Id);
}
private bool ChangeStatus(OrderBindingModel model, OrderStatus requiredStatus) {
+ model = FillOrderBindingModel(model);
+
+ if (requiredStatus - model.Status == 1)
+ {
+ model.Status = requiredStatus;
+ if (model.Status == OrderStatus.Готов)
+ model.DateImplement = DateTime.Now;
+ return UpdateOrder(model);
+ }
+ _logger.LogWarning("Changing status operation faled: Current-{Status}:required-{requiredStatus}.", model.Status, requiredStatus);
+ throw new InvalidOperationException($"Невозможно приствоить статус {requiredStatus} заказу с текущим статусом {model.Status}");
+
+ }
+
+ private OrderBindingModel FillOrderBindingModel(OrderBindingModel model)
+ {
CheckModel(model, false);
var element = _orderStorage.GetElement(new OrderSearchModel()
{
Id = model.Id
});
- if(element == null)
+ if (element == null)
{
throw new InvalidOperationException(nameof(element));
}
+ model.Id = element.Id;
model.DateCreate = element.DateCreate;
model.PizzaId = element.PizzaId;
model.DateImplement = element.DateImplement;
model.ClientId = element.ClientId;
- if (!model.ImplementerId.HasValue)
- model.ImplementerId = element.ImplementerId;
model.Status = element.Status;
model.Count = element.Count;
model.Sum = element.Sum;
- if(requiredStatus - model.Status == 1)
+ if (!model.ImplementerId.HasValue)
+ model.ImplementerId = element.ImplementerId;
+ return model;
+ }
+ private bool UpdateOrder(OrderBindingModel model)
+ {
+ if (_orderStorage.Update(model) == null)
{
- model.Status = requiredStatus;
- if(model.Status == OrderStatus.Готов)
- model.DateImplement = DateTime.Now;
- if (_orderStorage.Update(model) == null)
- {
- _logger.LogWarning("Update operation failed");
- return false;
- }
- return true;
+ _logger.LogWarning("Update operation failed");
+ return false;
}
- _logger.LogWarning("Changing status operation faled: Current-{Status}:required-{requiredStatus}.", model.Status, requiredStatus);
- throw new InvalidOperationException($"Невозможно приствоить статус {requiredStatus} заказу с текущим статусом {model.Status}");
+ _logger.LogWarning("Update operation sucsess");
+ return true;
}
}
}
diff --git a/Pizzeria/PizzeriaBusinessLogic/BusinessLogics/WorkModeling.cs b/Pizzeria/PizzeriaBusinessLogic/BusinessLogics/WorkModeling.cs
index bba2aa0..75b9023 100644
--- a/Pizzeria/PizzeriaBusinessLogic/BusinessLogics/WorkModeling.cs
+++ b/Pizzeria/PizzeriaBusinessLogic/BusinessLogics/WorkModeling.cs
@@ -35,8 +35,9 @@ namespace PizzeriaBusinessLogic.BusinessLogics
_logger.LogWarning("DoWork. Implementers is null");
return;
}
- var orders = _orderLogic.ReadList(new OrderSearchModel { Status = OrderStatus.Принят });
- if (orders == null || orders.Count == 0)
+ var orders = _orderLogic.ReadList(new OrderSearchModel { Status = OrderStatus.Выдан });
+ int count = _orderLogic.ReadList(new OrderSearchModel()).Count;
+ if (orders == null || count == orders.Count)
{
_logger.LogWarning("DoWork. Orders is null or empty");
return;
@@ -59,6 +60,7 @@ namespace PizzeriaBusinessLogic.BusinessLogics
{
return;
}
+ await DeliverWaitingOrder(implementer);
await RunOrderInWork(implementer);
await Task.Run(() =>
@@ -81,6 +83,7 @@ namespace PizzeriaBusinessLogic.BusinessLogics
{
Id = order.Id
});
+ _orderLogic.DeliveryOrder(new OrderBindingModel { Id = order.Id });
}
// кто-то мог уже перехватить заказ, игнорируем ошибку
catch (InvalidOperationException ex)
@@ -130,6 +133,7 @@ namespace PizzeriaBusinessLogic.BusinessLogics
{
Id = runOrder.Id
});
+ _orderLogic.DeliveryOrder(new OrderBindingModel { Id = runOrder.Id });
// отдыхаем
Thread.Sleep(implementer.Qualification * _rnd.Next(10, 100));
}
@@ -145,5 +149,47 @@ namespace PizzeriaBusinessLogic.BusinessLogics
throw;
}
}
+
+ private async Task DeliverWaitingOrder(ImplementerViewModel implementer)
+ {
+ if (_orderLogic == null || implementer == null)
+ {
+ return;
+ }
+ var waitingOrders = await Task.Run(() => _orderLogic.ReadList(new OrderSearchModel
+ {
+ ImplementerId = implementer.Id,
+ Status = OrderStatus.Ожидает
+ })) ;
+ if (waitingOrders == null || waitingOrders.Count == 0)
+ {
+ return;
+ }
+ _logger.LogInformation("DeliverWaitingOrder. Find some waitig order for implementer:{id}.Count:{count}", implementer.Id, waitingOrders.Count);
+ foreach (var waitingOrder in waitingOrders)
+ {
+ try
+ {
+ _logger.LogInformation("DeliverWaitingOrder. Trying to deliver order id:{id}", waitingOrder.Id);
+ var res = _orderLogic.DeliveryOrder(new OrderBindingModel
+ {
+ Id = waitingOrder.Id
+ });
+ }
+ catch (ArgumentException ex)
+ {
+ _logger.LogWarning(ex, "DeliverWaitingOrder. Fault");
+ }
+ catch (InvalidOperationException ex)
+ {
+ _logger.LogWarning(ex, "Error try deliver order");
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Error while do work");
+ throw;
+ }
+ }
+ }
}
}
diff --git a/Pizzeria/PizzeriaDataModels/Enums/OrderStatus.cs b/Pizzeria/PizzeriaDataModels/Enums/OrderStatus.cs
index 6c6a4fc..fff698f 100644
--- a/Pizzeria/PizzeriaDataModels/Enums/OrderStatus.cs
+++ b/Pizzeria/PizzeriaDataModels/Enums/OrderStatus.cs
@@ -12,6 +12,7 @@ namespace PizzeriaDataModels.Enums
Принят = 0,
Выполняется = 1,
Готов = 2,
- Выдан = 3
+ Ожидает = 3,
+ Выдан = 4
}
}
diff --git a/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230418063952_implementors.Designer.cs b/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230418063952_implementors.Designer.cs
deleted file mode 100644
index 3b62ad2..0000000
--- a/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230418063952_implementors.Designer.cs
+++ /dev/null
@@ -1,266 +0,0 @@
-//
-using System;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.EntityFrameworkCore.Infrastructure;
-using Microsoft.EntityFrameworkCore.Metadata;
-using Microsoft.EntityFrameworkCore.Migrations;
-using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
-using PizzeriaDatabaseImplement;
-
-#nullable disable
-
-namespace PizzeriaDatabaseImplement.Migrations
-{
- [DbContext(typeof(PizzeriaDatabase))]
- [Migration("20230418063952_implementors")]
- partial class implementors
- {
- ///
- protected override void BuildTargetModel(ModelBuilder modelBuilder)
- {
-#pragma warning disable 612, 618
- modelBuilder
- .HasAnnotation("ProductVersion", "7.0.3")
- .HasAnnotation("Relational:MaxIdentifierLength", 128);
-
- SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
-
- modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Client", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("int");
-
- SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
-
- b.Property("ClientFIO")
- .IsRequired()
- .HasColumnType("nvarchar(max)");
-
- b.Property("Email")
- .IsRequired()
- .HasColumnType("nvarchar(max)");
-
- b.Property("Password")
- .IsRequired()
- .HasColumnType("nvarchar(max)");
-
- b.HasKey("Id");
-
- b.ToTable("Clients");
- });
-
- modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Component", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("int");
-
- SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
-
- b.Property("ComponentName")
- .IsRequired()
- .HasColumnType("nvarchar(max)");
-
- b.Property("Cost")
- .HasColumnType("float");
-
- b.HasKey("Id");
-
- b.ToTable("Components");
- });
-
- modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Implementer", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("int");
-
- SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
-
- b.Property("ImplementerFIO")
- .IsRequired()
- .HasColumnType("nvarchar(max)");
-
- b.Property("Password")
- .IsRequired()
- .HasColumnType("nvarchar(max)");
-
- b.Property("Qualification")
- .HasColumnType("int");
-
- b.Property("WorkExperience")
- .HasColumnType("int");
-
- b.HasKey("Id");
-
- b.ToTable("Implementers");
- });
-
- modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Order", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("int");
-
- SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
-
- b.Property("ClientId")
- .HasColumnType("int");
-
- b.Property("Count")
- .HasColumnType("int");
-
- b.Property("DateCreate")
- .HasColumnType("datetime2");
-
- b.Property("DateImplement")
- .HasColumnType("datetime2");
-
- b.Property("ImplementerId")
- .HasColumnType("int");
-
- b.Property("PizzaId")
- .HasColumnType("int");
-
- b.Property("Status")
- .HasColumnType("int");
-
- b.Property("Sum")
- .HasColumnType("float");
-
- b.HasKey("Id");
-
- b.HasIndex("ClientId");
-
- b.HasIndex("ImplementerId");
-
- b.HasIndex("PizzaId");
-
- b.ToTable("Orders");
- });
-
- modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Pizza", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("int");
-
- SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
-
- b.Property("PizzaName")
- .IsRequired()
- .HasColumnType("nvarchar(max)");
-
- b.Property("Price")
- .HasColumnType("float");
-
- b.HasKey("Id");
-
- b.ToTable("Pizzas");
- });
-
- modelBuilder.Entity("PizzeriaDatabaseImplement.Models.PizzaComponent", b =>
- {
- b.Property("Id")
- .ValueGeneratedOnAdd()
- .HasColumnType("int");
-
- SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
-
- b.Property("ClientId")
- .HasColumnType("int");
-
- b.Property("ComponentId")
- .HasColumnType("int");
-
- b.Property("Count")
- .HasColumnType("int");
-
- b.Property("PizzaId")
- .HasColumnType("int");
-
- b.HasKey("Id");
-
- b.HasIndex("ClientId");
-
- b.HasIndex("ComponentId");
-
- b.HasIndex("PizzaId");
-
- b.ToTable("PizzaComponents");
- });
-
- modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Order", b =>
- {
- b.HasOne("PizzeriaDatabaseImplement.Models.Client", "Client")
- .WithMany()
- .HasForeignKey("ClientId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("PizzeriaDatabaseImplement.Models.Implementer", "Implementer")
- .WithMany("Order")
- .HasForeignKey("ImplementerId");
-
- b.HasOne("PizzeriaDatabaseImplement.Models.Pizza", "Pizza")
- .WithMany("Orders")
- .HasForeignKey("PizzaId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.Navigation("Client");
-
- b.Navigation("Implementer");
-
- b.Navigation("Pizza");
- });
-
- modelBuilder.Entity("PizzeriaDatabaseImplement.Models.PizzaComponent", b =>
- {
- b.HasOne("PizzeriaDatabaseImplement.Models.Client", null)
- .WithMany("Components")
- .HasForeignKey("ClientId");
-
- b.HasOne("PizzeriaDatabaseImplement.Models.Component", "Component")
- .WithMany("PizzaComponents")
- .HasForeignKey("ComponentId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.HasOne("PizzeriaDatabaseImplement.Models.Pizza", "Pizza")
- .WithMany("Components")
- .HasForeignKey("PizzaId")
- .OnDelete(DeleteBehavior.Cascade)
- .IsRequired();
-
- b.Navigation("Component");
-
- b.Navigation("Pizza");
- });
-
- modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Client", b =>
- {
- b.Navigation("Components");
- });
-
- modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Component", b =>
- {
- b.Navigation("PizzaComponents");
- });
-
- modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Implementer", b =>
- {
- b.Navigation("Order");
- });
-
- modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Pizza", b =>
- {
- b.Navigation("Components");
-
- b.Navigation("Orders");
- });
-#pragma warning restore 612, 618
- }
- }
-}
diff --git a/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230418063952_implementors.cs b/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230418063952_implementors.cs
deleted file mode 100644
index 471b99e..0000000
--- a/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230418063952_implementors.cs
+++ /dev/null
@@ -1,196 +0,0 @@
-using System;
-using Microsoft.EntityFrameworkCore.Migrations;
-
-#nullable disable
-
-namespace PizzeriaDatabaseImplement.Migrations
-{
- ///
- public partial class implementors : Migration
- {
- ///
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.CreateTable(
- name: "Clients",
- columns: table => new
- {
- Id = table.Column(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- ClientFIO = table.Column(type: "nvarchar(max)", nullable: false),
- Email = table.Column(type: "nvarchar(max)", nullable: false),
- Password = table.Column(type: "nvarchar(max)", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_Clients", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "Components",
- columns: table => new
- {
- Id = table.Column(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- ComponentName = table.Column(type: "nvarchar(max)", nullable: false),
- Cost = table.Column(type: "float", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_Components", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "Implementers",
- columns: table => new
- {
- Id = table.Column(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- ImplementerFIO = table.Column(type: "nvarchar(max)", nullable: false),
- Password = table.Column(type: "nvarchar(max)", nullable: false),
- WorkExperience = table.Column(type: "int", nullable: false),
- Qualification = table.Column(type: "int", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_Implementers", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "Pizzas",
- columns: table => new
- {
- Id = table.Column(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- PizzaName = table.Column(type: "nvarchar(max)", nullable: false),
- Price = table.Column(type: "float", nullable: false)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_Pizzas", x => x.Id);
- });
-
- migrationBuilder.CreateTable(
- name: "Orders",
- columns: table => new
- {
- Id = table.Column(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- ClientId = table.Column(type: "int", nullable: false),
- PizzaId = table.Column(type: "int", nullable: false),
- ImplementerId = table.Column(type: "int", nullable: true),
- Count = table.Column(type: "int", nullable: false),
- Sum = table.Column(type: "float", nullable: false),
- Status = table.Column(type: "int", nullable: false),
- DateCreate = table.Column(type: "datetime2", nullable: false),
- DateImplement = table.Column(type: "datetime2", 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",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "FK_Orders_Implementers_ImplementerId",
- column: x => x.ImplementerId,
- principalTable: "Implementers",
- principalColumn: "Id");
- table.ForeignKey(
- name: "FK_Orders_Pizzas_PizzaId",
- column: x => x.PizzaId,
- principalTable: "Pizzas",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateTable(
- name: "PizzaComponents",
- columns: table => new
- {
- Id = table.Column(type: "int", nullable: false)
- .Annotation("SqlServer:Identity", "1, 1"),
- PizzaId = table.Column(type: "int", nullable: false),
- ComponentId = table.Column(type: "int", nullable: false),
- Count = table.Column(type: "int", nullable: false),
- ClientId = table.Column(type: "int", nullable: true)
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_PizzaComponents", x => x.Id);
- table.ForeignKey(
- name: "FK_PizzaComponents_Clients_ClientId",
- column: x => x.ClientId,
- principalTable: "Clients",
- principalColumn: "Id");
- table.ForeignKey(
- name: "FK_PizzaComponents_Components_ComponentId",
- column: x => x.ComponentId,
- principalTable: "Components",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- table.ForeignKey(
- name: "FK_PizzaComponents_Pizzas_PizzaId",
- column: x => x.PizzaId,
- principalTable: "Pizzas",
- principalColumn: "Id",
- onDelete: ReferentialAction.Cascade);
- });
-
- migrationBuilder.CreateIndex(
- name: "IX_Orders_ClientId",
- table: "Orders",
- column: "ClientId");
-
- migrationBuilder.CreateIndex(
- name: "IX_Orders_ImplementerId",
- table: "Orders",
- column: "ImplementerId");
-
- migrationBuilder.CreateIndex(
- name: "IX_Orders_PizzaId",
- table: "Orders",
- column: "PizzaId");
-
- migrationBuilder.CreateIndex(
- name: "IX_PizzaComponents_ClientId",
- table: "PizzaComponents",
- column: "ClientId");
-
- migrationBuilder.CreateIndex(
- name: "IX_PizzaComponents_ComponentId",
- table: "PizzaComponents",
- column: "ComponentId");
-
- migrationBuilder.CreateIndex(
- name: "IX_PizzaComponents_PizzaId",
- table: "PizzaComponents",
- column: "PizzaId");
- }
-
- ///
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropTable(
- name: "Orders");
-
- migrationBuilder.DropTable(
- name: "PizzaComponents");
-
- migrationBuilder.DropTable(
- name: "Implementers");
-
- migrationBuilder.DropTable(
- name: "Clients");
-
- migrationBuilder.DropTable(
- name: "Components");
-
- migrationBuilder.DropTable(
- name: "Pizzas");
- }
- }
-}
diff --git a/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230503183159_init.Designer.cs b/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230503204906_init.Designer.cs
similarity index 86%
rename from Pizzeria/PizzeriaDatabaseImplement/Migrations/20230503183159_init.Designer.cs
rename to Pizzeria/PizzeriaDatabaseImplement/Migrations/20230503204906_init.Designer.cs
index e834a0b..45dc7af 100644
--- a/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230503183159_init.Designer.cs
+++ b/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230503204906_init.Designer.cs
@@ -12,7 +12,7 @@ using PizzeriaDatabaseImplement;
namespace PizzeriaDatabaseImplement.Migrations
{
[DbContext(typeof(PizzeriaDatabase))]
- [Migration("20230503183159_init")]
+ [Migration("20230503204906_init")]
partial class init
{
///
@@ -70,6 +70,33 @@ namespace PizzeriaDatabaseImplement.Migrations
b.ToTable("Components");
});
+ modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Implementer", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("ImplementerFIO")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Qualification")
+ .HasColumnType("int");
+
+ b.Property("WorkExperience")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Implementers");
+ });
+
modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Order", b =>
{
b.Property("Id")
@@ -90,6 +117,9 @@ namespace PizzeriaDatabaseImplement.Migrations
b.Property("DateImplement")
.HasColumnType("datetime2");
+ b.Property("ImplementerId")
+ .HasColumnType("int");
+
b.Property("PizzaId")
.HasColumnType("int");
@@ -103,6 +133,8 @@ namespace PizzeriaDatabaseImplement.Migrations
b.HasIndex("ClientId");
+ b.HasIndex("ImplementerId");
+
b.HasIndex("PizzaId");
b.ToTable("Orders");
@@ -220,6 +252,10 @@ namespace PizzeriaDatabaseImplement.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
+ b.HasOne("PizzeriaDatabaseImplement.Models.Implementer", "Implementer")
+ .WithMany("Order")
+ .HasForeignKey("ImplementerId");
+
b.HasOne("PizzeriaDatabaseImplement.Models.Pizza", "Pizza")
.WithMany("Orders")
.HasForeignKey("PizzaId")
@@ -228,6 +264,8 @@ namespace PizzeriaDatabaseImplement.Migrations
b.Navigation("Client");
+ b.Navigation("Implementer");
+
b.Navigation("Pizza");
});
@@ -283,6 +321,11 @@ namespace PizzeriaDatabaseImplement.Migrations
b.Navigation("PizzaComponents");
});
+ modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Implementer", b =>
+ {
+ b.Navigation("Order");
+ });
+
modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Pizza", b =>
{
b.Navigation("Components");
diff --git a/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230503183159_init.cs b/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230503204906_init.cs
similarity index 87%
rename from Pizzeria/PizzeriaDatabaseImplement/Migrations/20230503183159_init.cs
rename to Pizzeria/PizzeriaDatabaseImplement/Migrations/20230503204906_init.cs
index 86bf874..3a73afa 100644
--- a/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230503183159_init.cs
+++ b/Pizzeria/PizzeriaDatabaseImplement/Migrations/20230503204906_init.cs
@@ -40,6 +40,22 @@ namespace PizzeriaDatabaseImplement.Migrations
table.PrimaryKey("PK_Components", x => x.Id);
});
+ migrationBuilder.CreateTable(
+ name: "Implementers",
+ columns: table => new
+ {
+ Id = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ ImplementerFIO = table.Column(type: "nvarchar(max)", nullable: false),
+ Password = table.Column(type: "nvarchar(max)", nullable: false),
+ WorkExperience = table.Column(type: "int", nullable: false),
+ Qualification = table.Column(type: "int", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Implementers", x => x.Id);
+ });
+
migrationBuilder.CreateTable(
name: "Pizzas",
columns: table => new
@@ -78,6 +94,7 @@ namespace PizzeriaDatabaseImplement.Migrations
.Annotation("SqlServer:Identity", "1, 1"),
ClientId = table.Column(type: "int", nullable: false),
PizzaId = table.Column(type: "int", nullable: false),
+ ImplementerId = table.Column(type: "int", nullable: true),
Count = table.Column(type: "int", nullable: false),
Sum = table.Column(type: "float", nullable: false),
Status = table.Column(type: "int", nullable: false),
@@ -93,6 +110,11 @@ namespace PizzeriaDatabaseImplement.Migrations
principalTable: "Clients",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_Orders_Implementers_ImplementerId",
+ column: x => x.ImplementerId,
+ principalTable: "Implementers",
+ principalColumn: "Id");
table.ForeignKey(
name: "FK_Orders_Pizzas_PizzaId",
column: x => x.PizzaId,
@@ -166,6 +188,11 @@ namespace PizzeriaDatabaseImplement.Migrations
table: "Orders",
column: "ClientId");
+ migrationBuilder.CreateIndex(
+ name: "IX_Orders_ImplementerId",
+ table: "Orders",
+ column: "ImplementerId");
+
migrationBuilder.CreateIndex(
name: "IX_Orders_PizzaId",
table: "Orders",
@@ -209,6 +236,9 @@ namespace PizzeriaDatabaseImplement.Migrations
migrationBuilder.DropTable(
name: "ShopPizzas");
+ migrationBuilder.DropTable(
+ name: "Implementers");
+
migrationBuilder.DropTable(
name: "Clients");
diff --git a/Pizzeria/PizzeriaDatabaseImplement/Migrations/PizzeriaDatabaseModelSnapshot.cs b/Pizzeria/PizzeriaDatabaseImplement/Migrations/PizzeriaDatabaseModelSnapshot.cs
index 5b041a4..91bee3d 100644
--- a/Pizzeria/PizzeriaDatabaseImplement/Migrations/PizzeriaDatabaseModelSnapshot.cs
+++ b/Pizzeria/PizzeriaDatabaseImplement/Migrations/PizzeriaDatabaseModelSnapshot.cs
@@ -67,6 +67,33 @@ namespace PizzeriaDatabaseImplement.Migrations
b.ToTable("Components");
});
+ modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Implementer", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("ImplementerFIO")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Qualification")
+ .HasColumnType("int");
+
+ b.Property("WorkExperience")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Implementers");
+ });
+
modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Order", b =>
{
b.Property("Id")
@@ -87,6 +114,9 @@ namespace PizzeriaDatabaseImplement.Migrations
b.Property("DateImplement")
.HasColumnType("datetime2");
+ b.Property("ImplementerId")
+ .HasColumnType("int");
+
b.Property("PizzaId")
.HasColumnType("int");
@@ -100,6 +130,8 @@ namespace PizzeriaDatabaseImplement.Migrations
b.HasIndex("ClientId");
+ b.HasIndex("ImplementerId");
+
b.HasIndex("PizzaId");
b.ToTable("Orders");
@@ -217,6 +249,10 @@ namespace PizzeriaDatabaseImplement.Migrations
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
+ b.HasOne("PizzeriaDatabaseImplement.Models.Implementer", "Implementer")
+ .WithMany("Order")
+ .HasForeignKey("ImplementerId");
+
b.HasOne("PizzeriaDatabaseImplement.Models.Pizza", "Pizza")
.WithMany("Orders")
.HasForeignKey("PizzaId")
@@ -225,6 +261,8 @@ namespace PizzeriaDatabaseImplement.Migrations
b.Navigation("Client");
+ b.Navigation("Implementer");
+
b.Navigation("Pizza");
});
@@ -280,6 +318,11 @@ namespace PizzeriaDatabaseImplement.Migrations
b.Navigation("PizzaComponents");
});
+ modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Implementer", b =>
+ {
+ b.Navigation("Order");
+ });
+
modelBuilder.Entity("PizzeriaDatabaseImplement.Models.Pizza", b =>
{
b.Navigation("Components");