diff --git a/git/JurasicZoo/JurasicZoo/Program.cs b/git/JurasicZoo/JurasicZoo/Program.cs index 579cebf..8414d93 100644 --- a/git/JurasicZoo/JurasicZoo/Program.cs +++ b/git/JurasicZoo/JurasicZoo/Program.cs @@ -40,19 +40,20 @@ namespace ZooView services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); - services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); - + services.AddTransient(); - services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/git/JurasicZoo/ZooDataBaseImplement/Implements/CostStorage.cs b/git/JurasicZoo/ZooDataBaseImplement/Implements/CostStorage.cs index 700a556..2683ad8 100644 --- a/git/JurasicZoo/ZooDataBaseImplement/Implements/CostStorage.cs +++ b/git/JurasicZoo/ZooDataBaseImplement/Implements/CostStorage.cs @@ -11,7 +11,7 @@ using ZooDataBaseImplement.Models; namespace ZooDataBaseImplement.Implements { - internal class CostStorage : ICostStorage + public class CostStorage : ICostStorage { public List GetFullList() { diff --git a/git/JurasicZoo/ZooDataBaseImplement/Implements/PreserveStorage.cs b/git/JurasicZoo/ZooDataBaseImplement/Implements/PreserveStorage.cs index 484aa7e..4de8fda 100644 --- a/git/JurasicZoo/ZooDataBaseImplement/Implements/PreserveStorage.cs +++ b/git/JurasicZoo/ZooDataBaseImplement/Implements/PreserveStorage.cs @@ -28,12 +28,12 @@ namespace ZooDataBaseImplement.Implements return new(); } using var context = new ZooDatabase(); - return context.Preserves - .Where(x => x.PreserveName.Contains(model.PreserveName)) - .Select(x => x.GetViewModel) - .ToList(); - } - public PreserveViewModel? GetElement(PreserveSearchModel model) + return context.Preserves.Where(x => x.EmployeeId == model.EmployeeId) + .Where(x => String.IsNullOrEmpty(model.PreserveName) || x.PreserveName.Contains(model.PreserveName)) + .Select(x => x.GetViewModel) + .ToList(); + } + public PreserveViewModel? GetElement(PreserveSearchModel model) { if (string.IsNullOrEmpty(model.PreserveName) && !model.Id.HasValue) { diff --git a/git/JurasicZoo/ZooDataBaseImplement/Migrations/20240530171709_Initialcreate.Designer.cs b/git/JurasicZoo/ZooDataBaseImplement/Migrations/20240531085434_initialcreate.Designer.cs similarity index 83% rename from git/JurasicZoo/ZooDataBaseImplement/Migrations/20240530171709_Initialcreate.Designer.cs rename to git/JurasicZoo/ZooDataBaseImplement/Migrations/20240531085434_initialcreate.Designer.cs index 3c6c7c7..56646ad 100644 --- a/git/JurasicZoo/ZooDataBaseImplement/Migrations/20240530171709_Initialcreate.Designer.cs +++ b/git/JurasicZoo/ZooDataBaseImplement/Migrations/20240531085434_initialcreate.Designer.cs @@ -12,8 +12,8 @@ using ZooDataBaseImplement; namespace ZooDataBaseImplement.Migrations { [DbContext(typeof(ZooDatabase))] - [Migration("20240530171709_Initialcreate")] - partial class Initialcreate + [Migration("20240531085434_initialcreate")] + partial class initialcreate { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -50,6 +50,26 @@ namespace ZooDataBaseImplement.Migrations b.ToTable("Clients"); }); + modelBuilder.Entity("ZooDataBaseImplement.Models.Cost", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CostName") + .IsRequired() + .HasColumnType("text"); + + b.Property("CostPrice") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.ToTable("Costs"); + }); + modelBuilder.Entity("ZooDataBaseImplement.Models.Employee", b => { b.Property("Id") @@ -83,7 +103,7 @@ namespace ZooDataBaseImplement.Migrations NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - b.Property("EmployeeId") + b.Property("EmployeeId") .HasColumnType("integer"); b.Property("PreserveName") @@ -111,6 +131,9 @@ namespace ZooDataBaseImplement.Migrations b.Property("ClientId") .HasColumnType("integer"); + b.Property("CostID") + .HasColumnType("integer"); + b.Property("DateFinish") .HasColumnType("timestamp with time zone"); @@ -131,6 +154,8 @@ namespace ZooDataBaseImplement.Migrations b.HasIndex("ClientId"); + b.HasIndex("CostID"); + b.ToTable("Routes"); }); @@ -161,7 +186,9 @@ namespace ZooDataBaseImplement.Migrations { b.HasOne("ZooDataBaseImplement.Models.Employee", null) .WithMany("Preserves") - .HasForeignKey("EmployeeId"); + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); modelBuilder.Entity("ZooDataBaseImplement.Models.Route", b => @@ -172,6 +199,10 @@ namespace ZooDataBaseImplement.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.HasOne("ZooDataBaseImplement.Models.Cost", null) + .WithMany("Routes") + .HasForeignKey("CostID"); + b.Navigation("Client"); }); @@ -199,6 +230,11 @@ namespace ZooDataBaseImplement.Migrations b.Navigation("Routes"); }); + modelBuilder.Entity("ZooDataBaseImplement.Models.Cost", b => + { + b.Navigation("Routes"); + }); + modelBuilder.Entity("ZooDataBaseImplement.Models.Employee", b => { b.Navigation("Preserves"); diff --git a/git/JurasicZoo/ZooDataBaseImplement/Migrations/20240530171709_Initialcreate.cs b/git/JurasicZoo/ZooDataBaseImplement/Migrations/20240531085434_initialcreate.cs similarity index 82% rename from git/JurasicZoo/ZooDataBaseImplement/Migrations/20240530171709_Initialcreate.cs rename to git/JurasicZoo/ZooDataBaseImplement/Migrations/20240531085434_initialcreate.cs index 1fb99ef..fd540c1 100644 --- a/git/JurasicZoo/ZooDataBaseImplement/Migrations/20240530171709_Initialcreate.cs +++ b/git/JurasicZoo/ZooDataBaseImplement/Migrations/20240531085434_initialcreate.cs @@ -7,7 +7,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace ZooDataBaseImplement.Migrations { /// - public partial class Initialcreate : Migration + public partial class initialcreate : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) @@ -27,6 +27,20 @@ namespace ZooDataBaseImplement.Migrations table.PrimaryKey("PK_Clients", x => x.Id); }); + migrationBuilder.CreateTable( + name: "Costs", + columns: table => new + { + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + CostName = table.Column(type: "text", nullable: false), + CostPrice = table.Column(type: "double precision", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Costs", x => x.Id); + }); + migrationBuilder.CreateTable( name: "Employees", columns: table => new @@ -53,7 +67,8 @@ namespace ZooDataBaseImplement.Migrations RoutePrice = table.Column(type: "double precision", nullable: false), Status = table.Column(type: "integer", nullable: false), DateStart = table.Column(type: "timestamp with time zone", nullable: false), - DateFinish = table.Column(type: "timestamp with time zone", nullable: false) + DateFinish = table.Column(type: "timestamp with time zone", nullable: false), + CostID = table.Column(type: "integer", nullable: true) }, constraints: table => { @@ -64,6 +79,11 @@ namespace ZooDataBaseImplement.Migrations principalTable: "Clients", principalColumn: "Id", onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_Routes_Costs_CostID", + column: x => x.CostID, + principalTable: "Costs", + principalColumn: "Id"); }); migrationBuilder.CreateTable( @@ -72,9 +92,9 @@ namespace ZooDataBaseImplement.Migrations { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + EmployeeId = table.Column(type: "integer", nullable: false), PreserveName = table.Column(type: "text", nullable: false), - PreservePrice = table.Column(type: "double precision", nullable: false), - EmployeeId = table.Column(type: "integer", nullable: true) + PreservePrice = table.Column(type: "double precision", nullable: false) }, constraints: table => { @@ -83,7 +103,8 @@ namespace ZooDataBaseImplement.Migrations name: "FK_Preserves_Employees_EmployeeId", column: x => x.EmployeeId, principalTable: "Employees", - principalColumn: "Id"); + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( @@ -131,6 +152,11 @@ namespace ZooDataBaseImplement.Migrations name: "IX_Routes_ClientId", table: "Routes", column: "ClientId"); + + migrationBuilder.CreateIndex( + name: "IX_Routes_CostID", + table: "Routes", + column: "CostID"); } /// @@ -150,6 +176,9 @@ namespace ZooDataBaseImplement.Migrations migrationBuilder.DropTable( name: "Clients"); + + migrationBuilder.DropTable( + name: "Costs"); } } } diff --git a/git/JurasicZoo/ZooDataBaseImplement/Migrations/ZooDatabaseModelSnapshot.cs b/git/JurasicZoo/ZooDataBaseImplement/Migrations/ZooDatabaseModelSnapshot.cs index 66d2642..7df34f2 100644 --- a/git/JurasicZoo/ZooDataBaseImplement/Migrations/ZooDatabaseModelSnapshot.cs +++ b/git/JurasicZoo/ZooDataBaseImplement/Migrations/ZooDatabaseModelSnapshot.cs @@ -47,6 +47,26 @@ namespace ZooDataBaseImplement.Migrations b.ToTable("Clients"); }); + modelBuilder.Entity("ZooDataBaseImplement.Models.Cost", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CostName") + .IsRequired() + .HasColumnType("text"); + + b.Property("CostPrice") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.ToTable("Costs"); + }); + modelBuilder.Entity("ZooDataBaseImplement.Models.Employee", b => { b.Property("Id") @@ -80,7 +100,7 @@ namespace ZooDataBaseImplement.Migrations NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - b.Property("EmployeeId") + b.Property("EmployeeId") .HasColumnType("integer"); b.Property("PreserveName") @@ -108,6 +128,9 @@ namespace ZooDataBaseImplement.Migrations b.Property("ClientId") .HasColumnType("integer"); + b.Property("CostID") + .HasColumnType("integer"); + b.Property("DateFinish") .HasColumnType("timestamp with time zone"); @@ -128,6 +151,8 @@ namespace ZooDataBaseImplement.Migrations b.HasIndex("ClientId"); + b.HasIndex("CostID"); + b.ToTable("Routes"); }); @@ -158,7 +183,9 @@ namespace ZooDataBaseImplement.Migrations { b.HasOne("ZooDataBaseImplement.Models.Employee", null) .WithMany("Preserves") - .HasForeignKey("EmployeeId"); + .HasForeignKey("EmployeeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); }); modelBuilder.Entity("ZooDataBaseImplement.Models.Route", b => @@ -169,6 +196,10 @@ namespace ZooDataBaseImplement.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.HasOne("ZooDataBaseImplement.Models.Cost", null) + .WithMany("Routes") + .HasForeignKey("CostID"); + b.Navigation("Client"); }); @@ -196,6 +227,11 @@ namespace ZooDataBaseImplement.Migrations b.Navigation("Routes"); }); + modelBuilder.Entity("ZooDataBaseImplement.Models.Cost", b => + { + b.Navigation("Routes"); + }); + modelBuilder.Entity("ZooDataBaseImplement.Models.Employee", b => { b.Navigation("Preserves"); diff --git a/git/JurasicZoo/ZooShowEmployeeApp/Controllers/HomeController.cs b/git/JurasicZoo/ZooShowEmployeeApp/Controllers/HomeController.cs index e3c4cce..db44e16 100644 --- a/git/JurasicZoo/ZooShowEmployeeApp/Controllers/HomeController.cs +++ b/git/JurasicZoo/ZooShowEmployeeApp/Controllers/HomeController.cs @@ -127,7 +127,7 @@ namespace ZooShowEmployeeApp.Controllers { return Redirect("~/Home/Enter"); } - return View(APIEmployee.GetRequest>($"api/Preserve/getPreserves?clientid={APIEmployee.Employee.Id}")); + return View(APIEmployee.GetRequest>($"api/Preserve/getPreserves?Employeeid={APIEmployee.Employee.Id}")); } public IActionResult CreatePreserve() { @@ -148,7 +148,7 @@ namespace ZooShowEmployeeApp.Controllers { throw new Exception("Ошибка в введённых данных"); } - APIEmployee.PostRequest("api/Preserve/createPreserve", new PreserveBindingModel + APIEmployee.PostRequest("api/Preserve/CreatePreserve", new PreserveBindingModel { PreserveName = name, PreservePrice = price, @@ -162,7 +162,7 @@ namespace ZooShowEmployeeApp.Controllers { return Redirect("~/Home/Enter"); } - ViewBag.Preserves = APIEmployee.GetRequest>($"api/Preserve/getPreserves?clientid={APIEmployee.Employee.Id}"); + ViewBag.Preserves = APIEmployee.GetRequest>($"api/Preserve/getPreserves?Employeeid={APIEmployee.Employee.Id}"); return View(); } [HttpPost] diff --git a/git/JurasicZoo/ZooShowEmployeeApp/Views/Home/CreatePreserve.cshtml b/git/JurasicZoo/ZooShowEmployeeApp/Views/Home/CreatePreserve.cshtml index d5e3e5d..974c8bf 100644 --- a/git/JurasicZoo/ZooShowEmployeeApp/Views/Home/CreatePreserve.cshtml +++ b/git/JurasicZoo/ZooShowEmployeeApp/Views/Home/CreatePreserve.cshtml @@ -25,25 +25,3 @@ btn-primary" /> - \ No newline at end of file diff --git a/git/JurasicZoo/ZooShowEmployeeApp/Views/Home/ListPreserves.cshtml b/git/JurasicZoo/ZooShowEmployeeApp/Views/Home/ListPreserves.cshtml index f4f043d..d1daa78 100644 --- a/git/JurasicZoo/ZooShowEmployeeApp/Views/Home/ListPreserves.cshtml +++ b/git/JurasicZoo/ZooShowEmployeeApp/Views/Home/ListPreserves.cshtml @@ -11,7 +11,7 @@
маршрут: