ISEbd-21.Fedotov.I.A.LabWork06 #6
@ -14,9 +14,9 @@ namespace DinerContracts.BindingModels
|
||||
|
||||
public int ClientID { get; set; }
|
||||
|
||||
public int? ImplementerID { get; set; }
|
||||
public int? ImplementerID { get; set; }
|
||||
|
||||
public int Count { get; set; }
|
||||
public int Count { get; set; }
|
||||
|
||||
public double Sum { get; set; }
|
||||
|
||||
@ -27,5 +27,7 @@ namespace DinerContracts.BindingModels
|
||||
public DateTime? DateImplement { get; set; }
|
||||
|
||||
public int ID { get; set; }
|
||||
|
||||
public string ProductName { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
|
@ -33,13 +33,11 @@ namespace DinerDataBaseImplement.Implements
|
||||
return null;
|
||||
}
|
||||
using var context = new DinerDatabaseBy6Work();
|
||||
return context.Orders
|
||||
.Include(x => x.Snack)
|
||||
.Include(x => x.Client)
|
||||
.Include(x => x.Implementer)
|
||||
.FirstOrDefault(x => model.ID.HasValue && x.ID == model.ID)
|
||||
?.GetViewModel;
|
||||
}
|
||||
return context.Orders.Include(x => x.Snack)
|
||||
.Include(x => x.Client)
|
||||
.FirstOrDefault(x => model.ID.HasValue && x.ID == model.ID)?.GetViewModel;
|
||||
|
||||
}
|
||||
|
||||
public List<OrderViewModel> GetFilteredList(OrderSearchModel model)
|
||||
{
|
||||
@ -71,16 +69,13 @@ namespace DinerDataBaseImplement.Implements
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
else if ((int)model.Status >= 0) {
|
||||
return context.Orders
|
||||
.Include(x => x.Snack)
|
||||
.Include(x => x.Client)
|
||||
.Include(x => x.Implementer)
|
||||
.Where(x => x.Status >= 0)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
return new();
|
||||
return context.Orders
|
||||
.Include(x => x.Snack)
|
||||
.Include(x => x.Client)
|
||||
.Include(x => x.Implementer)
|
||||
.Where(x => model.Status == x.Status)
|
||||
.Select(x => x.GetViewModel)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public List<OrderViewModel> GetFullList()
|
||||
@ -98,7 +93,9 @@ namespace DinerDataBaseImplement.Implements
|
||||
}
|
||||
context.Orders.Add(newOrder);
|
||||
context.SaveChanges();
|
||||
return newOrder.GetViewModel;
|
||||
return context.Orders.Include(x => x.Snack)
|
||||
.Include(x => x.Client)
|
||||
.FirstOrDefault(x => x.ID == newOrder.ID)?.GetViewModel;
|
||||
}
|
||||
public OrderViewModel? Update(OrderBindingModel model) {
|
||||
using var context = new DinerDatabaseBy6Work();
|
||||
|
261
Diner/DinerDataBaseImplement/Migrations/20240515115440_Migration02.Designer.cs
generated
Normal file
261
Diner/DinerDataBaseImplement/Migrations/20240515115440_Migration02.Designer.cs
generated
Normal file
@ -0,0 +1,261 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using DinerDataBaseImplement;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace DinerDataBaseImplement.Migrations
|
||||
{
|
||||
[DbContext(typeof(DinerDatabaseBy6Work))]
|
||||
[Migration("20240515115440_Migration02")]
|
||||
partial class Migration02
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "8.0.3")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||
|
||||
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Client", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
||||
|
||||
b.Property<string>("ClientFIO")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Email")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.ToTable("Clients");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Food", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
||||
|
||||
b.Property<string>("ComponentName")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<double>("Price")
|
||||
.HasColumnType("float");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.ToTable("Components");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Implementer", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
||||
|
||||
b.Property<string>("ImplementerFIO")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<int>("Qualification")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("WorkExperience")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.ToTable("Implementers");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Order", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
||||
|
||||
b.Property<int>("ClientID")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("Count")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<DateTime>("DateCreate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<DateTime?>("DateImplement")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<int?>("ImplementerID")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("ProductName")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<int>("SnackID")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("Status")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<double>("Sum")
|
||||
.HasColumnType("float");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.HasIndex("ClientID");
|
||||
|
||||
b.HasIndex("ImplementerID");
|
||||
|
||||
b.HasIndex("SnackID");
|
||||
|
||||
b.ToTable("Orders");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Snack", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
||||
|
||||
b.Property<double>("Price")
|
||||
.HasColumnType("float");
|
||||
|
||||
b.Property<string>("ProductName")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.ToTable("Snacks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.SnackFood", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
||||
|
||||
b.Property<int>("ComponentID")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("Count")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("SnackID")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.HasIndex("ComponentID");
|
||||
|
||||
b.HasIndex("SnackID");
|
||||
|
||||
b.ToTable("ProductComponents");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Order", b =>
|
||||
{
|
||||
b.HasOne("DinerDataBaseImplement.Models.Client", "Client")
|
||||
.WithMany("Orders")
|
||||
.HasForeignKey("ClientID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("DinerDataBaseImplement.Models.Implementer", "Implementer")
|
||||
.WithMany("Orders")
|
||||
.HasForeignKey("ImplementerID");
|
||||
|
||||
b.HasOne("DinerDataBaseImplement.Models.Snack", "Snack")
|
||||
.WithMany("Orders")
|
||||
.HasForeignKey("SnackID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Client");
|
||||
|
||||
b.Navigation("Implementer");
|
||||
|
||||
b.Navigation("Snack");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.SnackFood", b =>
|
||||
{
|
||||
b.HasOne("DinerDataBaseImplement.Models.Food", "Component")
|
||||
.WithMany("SnackFood")
|
||||
.HasForeignKey("ComponentID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("DinerDataBaseImplement.Models.Snack", "Product")
|
||||
.WithMany("Components")
|
||||
.HasForeignKey("SnackID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Component");
|
||||
|
||||
b.Navigation("Product");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Client", b =>
|
||||
{
|
||||
b.Navigation("Orders");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Food", b =>
|
||||
{
|
||||
b.Navigation("SnackFood");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Implementer", b =>
|
||||
{
|
||||
b.Navigation("Orders");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Snack", b =>
|
||||
{
|
||||
b.Navigation("Components");
|
||||
|
||||
b.Navigation("Orders");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace DinerDataBaseImplement.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class Migration02 : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "ProductName",
|
||||
table: "Orders",
|
||||
type: "nvarchar(max)",
|
||||
nullable: false,
|
||||
defaultValue: "");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "ProductName",
|
||||
table: "Orders");
|
||||
}
|
||||
}
|
||||
}
|
257
Diner/DinerDataBaseImplement/Migrations/20240515121617_Migration03.Designer.cs
generated
Normal file
257
Diner/DinerDataBaseImplement/Migrations/20240515121617_Migration03.Designer.cs
generated
Normal file
@ -0,0 +1,257 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using DinerDataBaseImplement;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace DinerDataBaseImplement.Migrations
|
||||
{
|
||||
[DbContext(typeof(DinerDatabaseBy6Work))]
|
||||
[Migration("20240515121617_Migration03")]
|
||||
partial class Migration03
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "8.0.3")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||
|
||||
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Client", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
||||
|
||||
b.Property<string>("ClientFIO")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Email")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.ToTable("Clients");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Food", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
||||
|
||||
b.Property<string>("ComponentName")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<double>("Price")
|
||||
.HasColumnType("float");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.ToTable("Components");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Implementer", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
||||
|
||||
b.Property<string>("ImplementerFIO")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Password")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<int>("Qualification")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("WorkExperience")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.ToTable("Implementers");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Order", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
||||
|
||||
b.Property<int>("ClientID")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("Count")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<DateTime>("DateCreate")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<DateTime?>("DateImplement")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<int?>("ImplementerID")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("SnackID")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("Status")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<double>("Sum")
|
||||
.HasColumnType("float");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.HasIndex("ClientID");
|
||||
|
||||
b.HasIndex("ImplementerID");
|
||||
|
||||
b.HasIndex("SnackID");
|
||||
|
||||
b.ToTable("Orders");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Snack", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
||||
|
||||
b.Property<double>("Price")
|
||||
.HasColumnType("float");
|
||||
|
||||
b.Property<string>("ProductName")
|
||||
.IsRequired()
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.ToTable("Snacks");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.SnackFood", b =>
|
||||
{
|
||||
b.Property<int>("ID")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("ID"));
|
||||
|
||||
b.Property<int>("ComponentID")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("Count")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<int>("SnackID")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.HasKey("ID");
|
||||
|
||||
b.HasIndex("ComponentID");
|
||||
|
||||
b.HasIndex("SnackID");
|
||||
|
||||
b.ToTable("ProductComponents");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Order", b =>
|
||||
{
|
||||
b.HasOne("DinerDataBaseImplement.Models.Client", "Client")
|
||||
.WithMany("Orders")
|
||||
.HasForeignKey("ClientID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("DinerDataBaseImplement.Models.Implementer", "Implementer")
|
||||
.WithMany("Orders")
|
||||
.HasForeignKey("ImplementerID");
|
||||
|
||||
b.HasOne("DinerDataBaseImplement.Models.Snack", "Snack")
|
||||
.WithMany("Orders")
|
||||
.HasForeignKey("SnackID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Client");
|
||||
|
||||
b.Navigation("Implementer");
|
||||
|
||||
b.Navigation("Snack");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.SnackFood", b =>
|
||||
{
|
||||
b.HasOne("DinerDataBaseImplement.Models.Food", "Component")
|
||||
.WithMany("SnackFood")
|
||||
.HasForeignKey("ComponentID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("DinerDataBaseImplement.Models.Snack", "Product")
|
||||
.WithMany("Components")
|
||||
.HasForeignKey("SnackID")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Component");
|
||||
|
||||
b.Navigation("Product");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Client", b =>
|
||||
{
|
||||
b.Navigation("Orders");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Food", b =>
|
||||
{
|
||||
b.Navigation("SnackFood");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Implementer", b =>
|
||||
{
|
||||
b.Navigation("Orders");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("DinerDataBaseImplement.Models.Snack", b =>
|
||||
{
|
||||
b.Navigation("Components");
|
||||
|
||||
b.Navigation("Orders");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace DinerDataBaseImplement.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class Migration03 : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "ProductName",
|
||||
table: "Orders");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "ProductName",
|
||||
table: "Orders",
|
||||
type: "nvarchar(max)",
|
||||
nullable: false,
|
||||
defaultValue: "");
|
||||
}
|
||||
}
|
||||
}
|
@ -19,7 +19,7 @@ namespace DinerDataBaseImplement.Models
|
||||
[Required]
|
||||
public int ClientID { get; set; }
|
||||
|
||||
public int? ImplementerID { get; set; }
|
||||
public int? ImplementerID { get; set; }
|
||||
[Required]
|
||||
public int Count { get; set; }
|
||||
|
||||
@ -53,35 +53,33 @@ namespace DinerDataBaseImplement.Models
|
||||
DateCreate = model.DateCreate,
|
||||
DateImplement = model.DateImplement,
|
||||
ClientID = model.ClientID,
|
||||
ImplementerID = model.ImplementerID
|
||||
ImplementerID = model.ImplementerID,
|
||||
};
|
||||
}
|
||||
public void Update(OrderBindingModel? model)
|
||||
{
|
||||
if (model == null) return;
|
||||
Sum = model.Sum;
|
||||
if (model.Sum != 0) {
|
||||
Sum = model.Sum;
|
||||
}
|
||||
Status = model.Status;
|
||||
DateImplement = model?.DateImplement;
|
||||
}
|
||||
public OrderViewModel GetViewModel {
|
||||
get
|
||||
{
|
||||
using var context = new DinerDatabaseBy6Work();
|
||||
return new OrderViewModel {
|
||||
ID = ID,
|
||||
SnackID = SnackID,
|
||||
Count = Count,
|
||||
Sum = Sum,
|
||||
Status = Status,
|
||||
DateCreate = DateCreate,
|
||||
DateImplement = DateImplement,
|
||||
ProductName = context.Snacks.FirstOrDefault(x => x.ID == SnackID)?.ProductName ?? string.Empty,
|
||||
ClientID = ClientID,
|
||||
ClientFIO = context.Clients.FirstOrDefault(x => x.ID == ClientID)?.ClientFIO ?? string.Empty,
|
||||
ImplementerID = ImplementerID,
|
||||
ImplementerFIO = Implementer?.ImplementerFIO ?? string.Empty,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
ImplementerID = model?.ImplementerID;
|
||||
}
|
||||
public OrderViewModel GetViewModel => new() {
|
||||
ID = ID,
|
||||
SnackID = SnackID,
|
||||
Count = Count,
|
||||
Sum = Sum,
|
||||
Status = Status,
|
||||
DateCreate = DateCreate,
|
||||
DateImplement = DateImplement,
|
||||
ClientID = ClientID,
|
||||
ImplementerID = ImplementerID,
|
||||
ClientFIO = Client.ClientFIO,
|
||||
ImplementerFIO = Implementer?.ImplementerFIO,
|
||||
ProductName = Snack.ProductName
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,9 @@ namespace DinerDataModels.Models
|
||||
{
|
||||
int SnackID { get; }
|
||||
int Count { get; }
|
||||
double Sum { get; }
|
||||
int ClientID { get; }
|
||||
int? ImplementerID { get; }
|
||||
double Sum { get; }
|
||||
OrderStatus Status { get; }
|
||||
DateTime DateCreate { get; }
|
||||
DateTime? DateImplement { get; }
|
||||
|
@ -86,7 +86,8 @@ namespace DinerView
|
||||
{
|
||||
SnackID = Convert.ToInt32(comboBoxProduct.SelectedValue),
|
||||
Count = Convert.ToInt32(textBoxCount.Text),
|
||||
Sum = Convert.ToDouble(textBoxSum.Text),
|
||||
ProductName = comboBoxProduct.SelectedValue.ToString(),
|
||||
Sum = Convert.ToDouble(textBoxSum.Text),
|
||||
ClientID = Convert.ToInt32(comboBoxClient.SelectedValue)
|
||||
|
||||
});
|
||||
|
@ -96,7 +96,7 @@ namespace DineryBusinessLogic.BusinessLogic
|
||||
model.ClientID, model.ImplementerID);
|
||||
}
|
||||
private bool StatusUpdate(OrderBindingModel model, OrderStatus newOrderStatus) {
|
||||
CheckModel(model, false);
|
||||
|
||||
var viewModel = _orderStorage.GetElement(new OrderSearchModel { ID = model.ID });
|
||||
if (viewModel == null)
|
||||
{
|
||||
@ -107,13 +107,19 @@ namespace DineryBusinessLogic.BusinessLogic
|
||||
return false;
|
||||
}
|
||||
model.Status = newOrderStatus;
|
||||
if (model.Status == OrderStatus.Готов) {
|
||||
if (viewModel.ImplementerID.HasValue) {
|
||||
model.ImplementerID = viewModel.ImplementerID;
|
||||
}
|
||||
if (model.Status == OrderStatus.Готов) {
|
||||
model.DateImplement = DateTime.Now;
|
||||
}
|
||||
else {
|
||||
model.DateImplement = viewModel.DateImplement;
|
||||
}
|
||||
if (_orderStorage.Update(model) == null) {
|
||||
|
||||
CheckModel(model, false);
|
||||
|
||||
if (_orderStorage.Update(model) == null) {
|
||||
_logger.LogWarning("Update operarion failed");
|
||||
return false;
|
||||
}
|
||||
|
@ -51,22 +51,26 @@ namespace DineryBusinessLogic.BusinessLogic {
|
||||
if (_orderLogic == null || implementer == null) {
|
||||
return;
|
||||
}
|
||||
await RunOrderInWork(implementer);
|
||||
await Task.Run(() => {
|
||||
await RunOrderInWork(implementer, orders);
|
||||
await Task.Run(async () => {
|
||||
foreach (var order in orders) {
|
||||
try {
|
||||
_logger.LogDebug($"DoWork. Worker {implementer.ID} try get order {order.ID}");
|
||||
// пытаемся назначить заказ на исполнителя
|
||||
_orderLogic.TakeOrderInWork(new OrderBindingModel {
|
||||
var notOccupied = _orderLogic.TakeOrderInWork(new OrderBindingModel {
|
||||
ID = order.ID,
|
||||
ImplementerID = implementer.ID
|
||||
});
|
||||
// делаем работу
|
||||
Thread.Sleep(implementer.WorkExperience + _rnd.Next(100, 1000) * order.Count);
|
||||
_logger.LogDebug($"DoWork. Worker {implementer.ID} finish order {order.ID}");
|
||||
_orderLogic.FinishOrder(new OrderBindingModel {
|
||||
ID = order.ID,
|
||||
});
|
||||
if (notOccupied) {
|
||||
await Task.Delay(implementer.WorkExperience * _rnd.Next(100, 1000) * order.Count);
|
||||
|
||||
_logger.LogDebug("DoWork. Worker {Id} finish order { Order}", implementer.ID, order.ID);
|
||||
|
||||
_orderLogic.FinishOrder(new OrderBindingModel { ID = order.ID, ImplementerID = implementer.ID });
|
||||
|
||||
await Task.Delay(implementer.Qualification * _rnd.Next(10, 100));
|
||||
}
|
||||
}
|
||||
// кто-то мог уже перехватить заказ, игнорируем ошибку
|
||||
catch (InvalidOperationException ex) {
|
||||
@ -84,8 +88,8 @@ namespace DineryBusinessLogic.BusinessLogic {
|
||||
}
|
||||
|
||||
// Ищем заказ, которые уже в работе(вдруг исполнителя прервали)
|
||||
private async Task RunOrderInWork(ImplementerViewModel implementer) {
|
||||
if (_orderLogic == null || implementer == null) {
|
||||
private async Task RunOrderInWork(ImplementerViewModel implementer, List<OrderViewModel> orders) {
|
||||
if (_orderLogic == null || implementer == null || orders == null || orders.Count == 0) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
|
Loading…
x
Reference in New Issue
Block a user