From 9c0e9e0f445df2bded6343ea8d1e11b9632d5818 Mon Sep 17 00:00:00 2001 From: K Date: Thu, 30 May 2024 03:03:27 +0400 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=BF=D0=BB=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/EvaluationViewModel.cs | 2 +- .../ViewModels/ProcedureViewModel.cs | 1 + .../Implements/EvaluationStorage.cs | 7 + .../Implements/ProcedureStorage.cs | 5 + .../20240529203744_InitialCreate.Designer.cs | 3 - .../20240529203744_InitialCreate.cs | 1 - ...240529221403_RemoveUselessDate.Designer.cs | 677 ++++++++++++++++++ .../20240529221403_RemoveUselessDate.cs | 22 + .../BeautySalonDatabaseModelSnapshot.cs | 3 - .../Models/Evaluation.cs | 4 +- .../Models/LaborCosts.cs | 3 +- .../Models/Order_.cs | 3 - .../Models/Procedure.cs | 3 +- .../Controllers/ProcedureController.cs | 68 +- BeautySalonView/BeautySalonRestApi/Program.cs | 17 +- .../ClientWebApp/Views/Home/Order.cshtml | 1 - 16 files changed, 762 insertions(+), 58 deletions(-) create mode 100644 BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529221403_RemoveUselessDate.Designer.cs create mode 100644 BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529221403_RemoveUselessDate.cs diff --git a/BeautySalonView/BeautySalonContracts/ViewModels/EvaluationViewModel.cs b/BeautySalonView/BeautySalonContracts/ViewModels/EvaluationViewModel.cs index b6ed6c5..c13402b 100644 --- a/BeautySalonView/BeautySalonContracts/ViewModels/EvaluationViewModel.cs +++ b/BeautySalonView/BeautySalonContracts/ViewModels/EvaluationViewModel.cs @@ -18,7 +18,7 @@ namespace BeautySalonContracts.ViewModels [DisplayName("Баллы за косметику")] public double PointsCosmetics { get; set; } public int WorkerId { get; set; } - public string Client_Name { get; set; } = string.Empty; + public string Worker_Name { get; set; } = string.Empty; public int ProcedureId { get; set; } public string Procedure_Name { get; set; } = string.Empty; } diff --git a/BeautySalonView/BeautySalonContracts/ViewModels/ProcedureViewModel.cs b/BeautySalonView/BeautySalonContracts/ViewModels/ProcedureViewModel.cs index 40e009b..4e2cd3f 100644 --- a/BeautySalonView/BeautySalonContracts/ViewModels/ProcedureViewModel.cs +++ b/BeautySalonView/BeautySalonContracts/ViewModels/ProcedureViewModel.cs @@ -21,6 +21,7 @@ namespace BeautySalonContracts.ViewModels [DisplayName("Продолжительность процедуры")] public double ProcedureDuration { get; set; } public int WorkerId { get; set; } + public string WorkerName { get; set; } = string.Empty; public Dictionary ProcedureCosmetics { diff --git a/BeautySalonView/BeautySalonDatabaseImplement/Implements/EvaluationStorage.cs b/BeautySalonView/BeautySalonDatabaseImplement/Implements/EvaluationStorage.cs index 90d17dd..bce494c 100644 --- a/BeautySalonView/BeautySalonDatabaseImplement/Implements/EvaluationStorage.cs +++ b/BeautySalonView/BeautySalonDatabaseImplement/Implements/EvaluationStorage.cs @@ -19,6 +19,7 @@ namespace BeautySalonDatabaseImplement.Implements using var context = new BeautySalonDatabase(); return context.Evaluations .Include(x => x.Procedure) + .Include(x => x.Worker) .ToList() .Select(x => x.GetViewModel) .ToList(); @@ -31,6 +32,7 @@ namespace BeautySalonDatabaseImplement.Implements { return context.Evaluations .Include(x => x.Procedure) + .Include(x => x.Worker) .Where(x => x.Id == model.Id) .Select(x => x.GetViewModel) .ToList(); @@ -39,6 +41,7 @@ namespace BeautySalonDatabaseImplement.Implements { return context.Evaluations .Include(x => x.Procedure) + .Include(x => x.Worker) .Where(x => x.WorkerId == model.WorkerId) .Select(x => x.GetViewModel) .ToList(); @@ -55,6 +58,7 @@ namespace BeautySalonDatabaseImplement.Implements using var context = new BeautySalonDatabase(); return context.Evaluations .Include(x => x.Procedure) + .Include(x => x.Worker) .FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id) ?.GetViewModel; } @@ -71,6 +75,7 @@ namespace BeautySalonDatabaseImplement.Implements context.SaveChanges(); return context.Evaluations .Include(x => x.Procedure) + .Include(x => x.Worker) .FirstOrDefault(x => x.Id == newEvaluation.Id) ?.GetViewModel; } @@ -80,6 +85,7 @@ namespace BeautySalonDatabaseImplement.Implements using var context = new BeautySalonDatabase(); var сosmetic = context.Evaluations .Include(x => x.Procedure) + .Include(x => x.Worker) .FirstOrDefault(x => x.Id == model.Id); if (сosmetic == null) { @@ -95,6 +101,7 @@ namespace BeautySalonDatabaseImplement.Implements using var context = new BeautySalonDatabase(); var element = context.Evaluations .Include(x => x.Procedure) + .Include(x => x.Worker) .FirstOrDefault(rec => rec.Id == model.Id); if (element != null) { diff --git a/BeautySalonView/BeautySalonDatabaseImplement/Implements/ProcedureStorage.cs b/BeautySalonView/BeautySalonDatabaseImplement/Implements/ProcedureStorage.cs index dee5b60..c0f42c9 100644 --- a/BeautySalonView/BeautySalonDatabaseImplement/Implements/ProcedureStorage.cs +++ b/BeautySalonView/BeautySalonDatabaseImplement/Implements/ProcedureStorage.cs @@ -19,6 +19,7 @@ namespace BeautySalonDatabaseImplement.Implements using var context = new BeautySalonDatabase(); var element = context.Procedures .Include(x => x.Cosmetics) + .Include(x => x.Worker) .FirstOrDefault(rec => rec.Id == model.Id); if (element != null) { @@ -37,6 +38,7 @@ namespace BeautySalonDatabaseImplement.Implements } using var context = new BeautySalonDatabase(); return context.Procedures + .Include(x => x.Worker) .Include(x => x.Cosmetics) .ThenInclude(x => x.Cosmetic) .FirstOrDefault(x => (!string.IsNullOrEmpty(model.ProcedureName) && x.ProcedureName == model.ProcedureName) || @@ -50,6 +52,7 @@ namespace BeautySalonDatabaseImplement.Implements if (model.Id.HasValue) { return context.Procedures + .Include(x => x.Worker) .Where(x => x.Id == model.Id) .Select(x => x.GetViewModel) .ToList(); @@ -57,6 +60,7 @@ namespace BeautySalonDatabaseImplement.Implements if (model.WorkerId.HasValue) { return context.Procedures + .Include(x => x.Worker) .Where(x => x.WorkerId == model.WorkerId) .Select(x => x.GetViewModel) .ToList(); @@ -68,6 +72,7 @@ namespace BeautySalonDatabaseImplement.Implements { using var context = new BeautySalonDatabase(); return context.Procedures + .Include(x => x.Worker) .Include(x => x.Cosmetics) .ThenInclude(x => x.Cosmetic) .Select(x => x.GetViewModel) diff --git a/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529203744_InitialCreate.Designer.cs b/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529203744_InitialCreate.Designer.cs index c09f80c..8507056 100644 --- a/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529203744_InitialCreate.Designer.cs +++ b/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529203744_InitialCreate.Designer.cs @@ -261,9 +261,6 @@ namespace BeautySalonDatabaseImplement.Migrations b.Property("OrderAmount") .HasColumnType("float"); - b.Property("OrderDate") - .HasColumnType("datetime2"); - b.Property("Status") .HasColumnType("int"); diff --git a/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529203744_InitialCreate.cs b/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529203744_InitialCreate.cs index 1be84e4..55b0aa7 100644 --- a/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529203744_InitialCreate.cs +++ b/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529203744_InitialCreate.cs @@ -116,7 +116,6 @@ namespace BeautySalonDatabaseImplement.Migrations { Id = table.Column(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), - OrderDate = table.Column(type: "datetime2", nullable: false), OrderAmount = table.Column(type: "float", nullable: false), WorkerId = table.Column(type: "int", nullable: false), Status = table.Column(type: "int", nullable: false), diff --git a/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529221403_RemoveUselessDate.Designer.cs b/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529221403_RemoveUselessDate.Designer.cs new file mode 100644 index 0000000..c866f3a --- /dev/null +++ b/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529221403_RemoveUselessDate.Designer.cs @@ -0,0 +1,677 @@ +// +using System; +using BeautySalonDatabaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace BeautySalonDatabaseImplement.Migrations +{ + [DbContext(typeof(BeautySalonDatabase))] + [Migration("20240529221403_RemoveUselessDate")] + partial class RemoveUselessDate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.17") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Cosmetic", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Brand") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CosmeticName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CosmeticPrice") + .HasColumnType("float"); + + b.Property("LaborCostId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("LaborCostId"); + + b.ToTable("Cosmetics"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.CosmeticProcedure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CosmeticId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("ProcedureId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CosmeticId"); + + b.HasIndex("ProcedureId"); + + b.ToTable("CosmeticProcedures"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Evaluation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PointsCosmetics") + .HasColumnType("float"); + + b.Property("PointsProcedure") + .HasColumnType("float"); + + b.Property("ProcedureId") + .HasColumnType("int"); + + b.Property("WorkerId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ProcedureId"); + + b.HasIndex("WorkerId"); + + b.ToTable("Evaluations"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.LaborCosts", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Difficulty") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("NumberHours") + .HasColumnType("int"); + + b.Property("StorekeeperId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("StorekeeperId"); + + b.ToTable("LaborCosts"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.MessageInfo", b => + { + b.Property("MessageId") + .HasColumnType("nvarchar(450)"); + + b.Property("Body") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DateDelivery") + .HasColumnType("datetime2"); + + b.Property("SenderName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("StorekeeperId") + .HasColumnType("int"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("WorkerId") + .HasColumnType("int"); + + b.HasKey("MessageId"); + + b.HasIndex("StorekeeperId"); + + b.HasIndex("WorkerId"); + + b.ToTable("MessageInfos"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.OrderCosmetic", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CosmeticId") + .HasColumnType("int"); + + b.Property("OrderId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CosmeticId"); + + b.HasIndex("OrderId"); + + b.ToTable("OrderCosmetics"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.OrderProcedure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("OrderId") + .HasColumnType("int"); + + b.Property("OrderProcedureCount") + .HasColumnType("int"); + + b.Property("ProcedureId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.HasIndex("ProcedureId"); + + b.ToTable("OrderProcedures"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.OrderService", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("OrderId") + .HasColumnType("int"); + + b.Property("OrderServiceCount") + .HasColumnType("int"); + + b.Property("ServiceId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("OrderId"); + + b.HasIndex("ServiceId"); + + b.ToTable("OrderServices"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Order_", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("OrderAmount") + .HasColumnType("float"); + + b.Property("Status") + .HasColumnType("int"); + + b.Property("WorkerId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("WorkerId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Procedure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ProcedureDuration") + .HasColumnType("float"); + + b.Property("ProcedureName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ProcedurePrice") + .HasColumnType("float"); + + b.Property("WorkerId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("WorkerId"); + + b.ToTable("Procedures"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Service", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ServiceName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ServicePrice") + .HasColumnType("float"); + + b.Property("StorekeeperId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("StorekeeperId"); + + b.ToTable("Services"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.ServiceCosmetic", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("CosmeticId") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("ServiceId") + .HasColumnType("int"); + + b.Property("serviceId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CosmeticId"); + + b.HasIndex("serviceId"); + + b.ToTable("ServiceCosmetics"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.ServiceProcedure", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("ProcedureId") + .HasColumnType("int"); + + b.Property("ServiceId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ProcedureId"); + + b.HasIndex("ServiceId"); + + b.ToTable("ServiceProcedures"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Storekeeper", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("Storekeepers"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Worker", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("FullName") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Password") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.ToTable("Workers"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Cosmetic", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.LaborCosts", "LaborCost") + .WithMany("Cosmetics") + .HasForeignKey("LaborCostId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("LaborCost"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.CosmeticProcedure", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.Cosmetic", "Cosmetic") + .WithMany("Procedures") + .HasForeignKey("CosmeticId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BeautySalonDatabaseImplement.Models.Procedure", "Procedure") + .WithMany("Cosmetics") + .HasForeignKey("ProcedureId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cosmetic"); + + b.Navigation("Procedure"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Evaluation", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.Procedure", "Procedure") + .WithMany() + .HasForeignKey("ProcedureId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BeautySalonDatabaseImplement.Models.Worker", "Worker") + .WithMany() + .HasForeignKey("WorkerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Procedure"); + + b.Navigation("Worker"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.LaborCosts", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.Storekeeper", "Storekeeper") + .WithMany() + .HasForeignKey("StorekeeperId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Storekeeper"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.MessageInfo", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.Storekeeper", "Storekeeper") + .WithMany() + .HasForeignKey("StorekeeperId"); + + b.HasOne("BeautySalonDatabaseImplement.Models.Worker", "Worker") + .WithMany() + .HasForeignKey("WorkerId"); + + b.Navigation("Storekeeper"); + + b.Navigation("Worker"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.OrderCosmetic", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.Cosmetic", "Cosmetic") + .WithMany() + .HasForeignKey("CosmeticId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BeautySalonDatabaseImplement.Models.Order_", "Order") + .WithMany("Cosmetics") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cosmetic"); + + b.Navigation("Order"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.OrderProcedure", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.Order_", "Order") + .WithMany("Procedures") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BeautySalonDatabaseImplement.Models.Procedure", "Procedure") + .WithMany() + .HasForeignKey("ProcedureId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Order"); + + b.Navigation("Procedure"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.OrderService", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.Order_", "Order") + .WithMany("Services") + .HasForeignKey("OrderId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BeautySalonDatabaseImplement.Models.Service", "Service") + .WithMany() + .HasForeignKey("ServiceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Order"); + + b.Navigation("Service"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Order_", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.Worker", "Worker") + .WithMany() + .HasForeignKey("WorkerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worker"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Procedure", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.Worker", "Worker") + .WithMany() + .HasForeignKey("WorkerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worker"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Service", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.Storekeeper", "Storekeeper") + .WithMany() + .HasForeignKey("StorekeeperId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Storekeeper"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.ServiceCosmetic", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.Cosmetic", "Cosmetic") + .WithMany() + .HasForeignKey("CosmeticId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BeautySalonDatabaseImplement.Models.Service", "Service") + .WithMany("Cosmetics") + .HasForeignKey("serviceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Cosmetic"); + + b.Navigation("Service"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.ServiceProcedure", b => + { + b.HasOne("BeautySalonDatabaseImplement.Models.Procedure", "Procedure") + .WithMany() + .HasForeignKey("ProcedureId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("BeautySalonDatabaseImplement.Models.Service", "Service") + .WithMany("Procedures") + .HasForeignKey("ServiceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Procedure"); + + b.Navigation("Service"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Cosmetic", b => + { + b.Navigation("Procedures"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.LaborCosts", b => + { + b.Navigation("Cosmetics"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Order_", b => + { + b.Navigation("Cosmetics"); + + b.Navigation("Procedures"); + + b.Navigation("Services"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Procedure", b => + { + b.Navigation("Cosmetics"); + }); + + modelBuilder.Entity("BeautySalonDatabaseImplement.Models.Service", b => + { + b.Navigation("Cosmetics"); + + b.Navigation("Procedures"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529221403_RemoveUselessDate.cs b/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529221403_RemoveUselessDate.cs new file mode 100644 index 0000000..6705b5b --- /dev/null +++ b/BeautySalonView/BeautySalonDatabaseImplement/Migrations/20240529221403_RemoveUselessDate.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace BeautySalonDatabaseImplement.Migrations +{ + /// + public partial class RemoveUselessDate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/BeautySalonView/BeautySalonDatabaseImplement/Migrations/BeautySalonDatabaseModelSnapshot.cs b/BeautySalonView/BeautySalonDatabaseImplement/Migrations/BeautySalonDatabaseModelSnapshot.cs index a32c317..4dd2ac4 100644 --- a/BeautySalonView/BeautySalonDatabaseImplement/Migrations/BeautySalonDatabaseModelSnapshot.cs +++ b/BeautySalonView/BeautySalonDatabaseImplement/Migrations/BeautySalonDatabaseModelSnapshot.cs @@ -258,9 +258,6 @@ namespace BeautySalonDatabaseImplement.Migrations b.Property("OrderAmount") .HasColumnType("float"); - b.Property("OrderDate") - .HasColumnType("datetime2"); - b.Property("Status") .HasColumnType("int"); diff --git a/BeautySalonView/BeautySalonDatabaseImplement/Models/Evaluation.cs b/BeautySalonView/BeautySalonDatabaseImplement/Models/Evaluation.cs index 39e6701..e0ce720 100644 --- a/BeautySalonView/BeautySalonDatabaseImplement/Models/Evaluation.cs +++ b/BeautySalonView/BeautySalonDatabaseImplement/Models/Evaluation.cs @@ -62,9 +62,9 @@ namespace BeautySalonDatabaseImplement.Models PointsProcedure=PointsProcedure, PointsCosmetics=PointsCosmetics, ProcedureId=ProcedureId, - WorkerId=WorkerId, Procedure_Name = Procedure.ProcedureName, - Client_Name = Worker.FullName + WorkerId=WorkerId, + Worker_Name =Worker.FullName }; } } diff --git a/BeautySalonView/BeautySalonDatabaseImplement/Models/LaborCosts.cs b/BeautySalonView/BeautySalonDatabaseImplement/Models/LaborCosts.cs index 7636bca..9d352cd 100644 --- a/BeautySalonView/BeautySalonDatabaseImplement/Models/LaborCosts.cs +++ b/BeautySalonView/BeautySalonDatabaseImplement/Models/LaborCosts.cs @@ -54,7 +54,8 @@ namespace BeautySalonDatabaseImplement.Models { Id = Id, NumberHours = NumberHours, - Difficulty = Difficulty + Difficulty = Difficulty, + StorekeeperId = StorekeeperId }; } diff --git a/BeautySalonView/BeautySalonDatabaseImplement/Models/Order_.cs b/BeautySalonView/BeautySalonDatabaseImplement/Models/Order_.cs index e4b6453..4fc13bb 100644 --- a/BeautySalonView/BeautySalonDatabaseImplement/Models/Order_.cs +++ b/BeautySalonView/BeautySalonDatabaseImplement/Models/Order_.cs @@ -16,9 +16,6 @@ namespace BeautySalonDatabaseImplement.Models { public int Id { get; set; } - [Required] - public DateTime OrderDate { get; set; } - [Required] public double OrderAmount { get; set; } diff --git a/BeautySalonView/BeautySalonDatabaseImplement/Models/Procedure.cs b/BeautySalonView/BeautySalonDatabaseImplement/Models/Procedure.cs index b8e0278..6afdc78 100644 --- a/BeautySalonView/BeautySalonDatabaseImplement/Models/Procedure.cs +++ b/BeautySalonView/BeautySalonDatabaseImplement/Models/Procedure.cs @@ -128,7 +128,8 @@ namespace BeautySalonDatabaseImplement.Models ProcedurePrice = ProcedurePrice, ProcedureDuration = ProcedureDuration, ProcedureCosmetics = ProcedureCosmetics, - WorkerId = WorkerId + WorkerId = WorkerId, + WorkerName = Worker.FullName }; public void UpdateCosmetics(BeautySalonDatabase context, ProcedureBindingModel model) diff --git a/BeautySalonView/BeautySalonRestApi/Controllers/ProcedureController.cs b/BeautySalonView/BeautySalonRestApi/Controllers/ProcedureController.cs index c354444..773e39b 100644 --- a/BeautySalonView/BeautySalonRestApi/Controllers/ProcedureController.cs +++ b/BeautySalonView/BeautySalonRestApi/Controllers/ProcedureController.cs @@ -2,6 +2,7 @@ using BeautySalonContracts.BusinessLogicContracts; using BeautySalonContracts.SearchModels; using BeautySalonContracts.ViewModels; +using BeautySalonRestApi.Controllers; using Microsoft.AspNetCore.Mvc; namespace BeutySalonClientApp.Controllers @@ -10,112 +11,101 @@ namespace BeutySalonClientApp.Controllers [ApiController] public class ProcedureController : Controller { - private readonly ILogger logger; + private readonly ILogger _logger; - private readonly IProcedureLogic procedure; + private readonly IProcedureLogic _logic; - public ProcedureController(ILogger logger, IProcedureLogic procedure) + public ProcedureController(IProcedureLogic logic, ILogger logger) { - this.logger = logger; - this.procedure = procedure; + _logger = logger; + _logic = logic; } + [HttpGet] - public ProcedureViewModel? Get(int id) + public ProcedureViewModel? GetProcedure(int id) { try { - return procedure.ReadElement(new ProcedureSearchModel { Id = id }); + return _logic.ReadElement(new ProcedureSearchModel + { + Id = id + }); } catch (Exception ex) { - logger.LogError(ex, "Ошибка получения процедуры с id = {Id}", id); + _logger.LogError(ex, "Ошибка получения процедуры"); throw; } } [HttpGet] - public List? GetAll() + public List? GetAllProcedures() { try { - return procedure.ReadList(null); + return _logic.ReadList(null); } catch (Exception ex) { - logger.LogError(ex, "Ошибка получения списка процедур"); + _logger.LogError(ex, "Ошибка получения списка процедур"); throw; } } [HttpGet] - public List? GetAllByUser(int userId) + public List? GetProcedures(int workerId) { try { - return procedure.ReadList(new ProcedureSearchModel { WorkerId = userId }); + return _logic.ReadList(new ProcedureSearchModel { WorkerId = workerId }); } catch (Exception ex) { - logger.LogError(ex, "Ошибка получения списка процедур пользователя"); + _logger.LogError(ex, "Ошибка получения списка процедур сотрудника id={Id}", workerId); throw; } } - [HttpGet] - public List? GetMany(int userId, int page) - { - try - { - return procedure.ReadList(new ProcedureSearchModel { WorkerId = userId}); - } - catch (Exception ex) - { - logger.LogError(ex, "Ошибка получения списка процедур клиента id = {Id}", userId); - throw; - } - } - - [HttpPost] - public void Create(ProcedureBindingModel model) + public void CreateProcedure(ProcedureBindingModel model) { try { - procedure.Create(model); + _logic.Create(model); } catch (Exception ex) { - logger.LogError(ex, "Ошибка создания процедуры"); + _logger.LogError(ex, "Ошибка создания процедуры"); throw; } } [HttpPost] - public void Update(ProcedureBindingModel model) + public void UpdateProcedure(ProcedureBindingModel model) { try { - procedure.Update(model); + _logic.Update(model); } catch (Exception ex) { - logger.LogError(ex, "Ошибка обновления процедуры"); + _logger.LogError(ex, "Ошибка обновления процедуры"); throw; } } - [HttpPost] - public void Delete(ProcedureBindingModel model) + [HttpDelete] + public void DeleteProcedure(ProcedureBindingModel model) { try { - procedure.Delete(new() { Id = model.Id }); + _logic.Delete(model); } catch (Exception ex) { - logger.LogError(ex, "Ошибка удаления процедуры"); + _logger.LogError(ex, "Ошибка удаления процедуры"); throw; } } diff --git a/BeautySalonView/BeautySalonRestApi/Program.cs b/BeautySalonView/BeautySalonRestApi/Program.cs index 063bd49..acf8b99 100644 --- a/BeautySalonView/BeautySalonRestApi/Program.cs +++ b/BeautySalonView/BeautySalonRestApi/Program.cs @@ -20,15 +20,26 @@ builder.Logging.AddLog4Net("log4net.config"); // Add services to the container. builder.Services.AddTransient(); builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); + builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); -builder.Services.AddTransient(); +builder.Services.AddTransient(); + +builder.Services.AddSingleton(); builder.Services.AddTransient(); builder.Services.AddTransient(); -builder.Services.AddTransient(); -builder.Services.AddTransient(); + +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); builder.Services.AddTransient(); + +builder.Services.AddTransient(); +builder.Services.AddTransient(); +builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); diff --git a/BeautySalonView/ClientWebApp/Views/Home/Order.cshtml b/BeautySalonView/ClientWebApp/Views/Home/Order.cshtml index b571e83..a4d9b59 100644 --- a/BeautySalonView/ClientWebApp/Views/Home/Order.cshtml +++ b/BeautySalonView/ClientWebApp/Views/Home/Order.cshtml @@ -42,7 +42,6 @@ { @item.Id - @item.OrderDate @item.OrderAmount }