From 487be858e09eae4b0f4314a29a305582a3ee3281 Mon Sep 17 00:00:00 2001 From: frog24 Date: Sat, 18 May 2024 17:34:54 +0400 Subject: [PATCH] =?UTF-8?q?=D1=84=D0=B8=D0=BA=D1=81=20=D1=81=20=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D1=8C=D0=BC=D0=B0=D0=BC=D0=B8=20=D0=B2=20=D0=B2?= =?UTF-8?q?=D0=B5=D0=B1=D0=B5=20=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D0=BE=D1=87=D0=B5=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=D0=B7?= =?UTF-8?q?=D0=BC=D0=BD=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=B2=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=D1=85=20=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B0=D0=B4=D0=B6=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Implements/OrderStorage.cs | 18 +- .../BusinessLogics/OrderLogic.cs | 2 +- .../ComputersShopDatabase.cs | 4 +- .../ComputersShopDatabaseImplements.csproj | 1 + ...gner.cs => 20240518131102_fix.Designer.cs} | 88 +++--- ...516145540_fix.cs => 20240518131102_fix.cs} | 81 ++--- .../20240518131310_fix123.Designer.cs | 296 ++++++++++++++++++ .../Migrations/20240518131310_fix123.cs | 22 ++ .../ComputersShopDatabaseModelSnapshot.cs | 86 ++--- .../Implements/OrderStorage.cs | 51 ++- 10 files changed, 512 insertions(+), 137 deletions(-) rename ComputersShop/ComputersShopDatabaseImplements/Migrations/{20240516145540_fix.Designer.cs => 20240518131102_fix.Designer.cs} (75%) rename ComputersShop/ComputersShopDatabaseImplements/Migrations/{20240516145540_fix.cs => 20240518131102_fix.cs} (66%) create mode 100644 ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131310_fix123.Designer.cs create mode 100644 ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131310_fix123.cs diff --git a/ComputersShop/ComputerShopFileImplements/Implements/OrderStorage.cs b/ComputersShop/ComputerShopFileImplements/Implements/OrderStorage.cs index 181861d..6fc3deb 100644 --- a/ComputersShop/ComputerShopFileImplements/Implements/OrderStorage.cs +++ b/ComputersShop/ComputerShopFileImplements/Implements/OrderStorage.cs @@ -24,11 +24,17 @@ namespace ComputersShopFileImplements.Implements } public List GetFiltredList(OrderSearchModel model) { - if (!model.Id.HasValue) + if (!model.Id.HasValue && !model.DateFrom.HasValue && !model.DateTo.HasValue && !model.ClientId.HasValue && model.Status == null) { return new(); } - return source.Orders.Where(x => x.Id == model.Id).Select(x => GetViewModel(x)).ToList(); + return source.Orders + .Where(x => x.Id == model.Id || + model.DateFrom <= x.DateCreate && x.DateCreate <= model.DateTo || + x.ClientId == model.ClientId || + model.Status.Equals(x.Status)) + .Select(x => GetViewModel(x)) + .ToList(); } public OrderViewModel? GetElement(OrderSearchModel model) { @@ -36,6 +42,10 @@ namespace ComputersShopFileImplements.Implements { return null; } + if (model.ImplementerId.HasValue && model.Status != null) + { + return source.Orders.FirstOrDefault(x => x.ImplementerId == model.ImplementerId && model.Status.Equals(x.Status))?.GetViewModel; + } return GetViewModel(source.Orders.FirstOrDefault(x => model.Id.HasValue && x.Id == model.Id)); } public OrderViewModel? Update(OrderBindingModel model) @@ -77,7 +87,9 @@ namespace ComputersShopFileImplements.Implements var viewModel = order.GetViewModel; var computer = source.Computers.FirstOrDefault(x => x.Id == order.ComputerId); viewModel.ComputerName = computer?.ComputerName; + var client = source.Clients.FirstOrDefault(x => x.Id == order.ClientId); + viewModel.ClientFIO = client.ClientFIO; return viewModel; } } -} +} \ No newline at end of file diff --git a/ComputersShop/ComputersShopBusinessLogic/BusinessLogics/OrderLogic.cs b/ComputersShop/ComputersShopBusinessLogic/BusinessLogics/OrderLogic.cs index ef4b419..10a425e 100644 --- a/ComputersShop/ComputersShopBusinessLogic/BusinessLogics/OrderLogic.cs +++ b/ComputersShop/ComputersShopBusinessLogic/BusinessLogics/OrderLogic.cs @@ -111,7 +111,7 @@ namespace ComputersShopBusinessLogic.BusinessLogics _logger.LogWarning("Update operation failed"); return false; } - SendOrderMessage(order.ClientId, $"DNS, Заказ №{order.Id}", $"Заказ №{order.Id} от {order.DateCreate} на сумму {order.Sum:0.00} принят"); + SendOrderMessage(order.ClientId, $"DNS, Заказ №{order.Id}", $"Статус заказа №{order.Id} от {order.DateCreate} на сумму {order.Sum:0.00} изменен"); return true; } public bool TakeOrderInWork(OrderBindingModel model) diff --git a/ComputersShop/ComputersShopDatabaseImplements/ComputersShopDatabase.cs b/ComputersShop/ComputersShopDatabaseImplements/ComputersShopDatabase.cs index f5abecc..995df44 100644 --- a/ComputersShop/ComputersShopDatabaseImplements/ComputersShopDatabase.cs +++ b/ComputersShop/ComputersShopDatabaseImplements/ComputersShopDatabase.cs @@ -15,9 +15,11 @@ namespace ComputersShopDatabaseImplements { if (optionsBuilder.IsConfigured == false) { - optionsBuilder.UseSqlServer(@"Data Source=localhost\SQLEXPRESS;Initial Catalog=ComputersShopDatabaseFull;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); + optionsBuilder.UseNpgsql(@"Host=localhost;Database=ComputersShop_db;Username=postgres;Password=postgres"); } base.OnConfiguring(optionsBuilder); + AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true); + AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true); } public virtual DbSet Components { set; get; } public virtual DbSet Computers { set; get; } diff --git a/ComputersShop/ComputersShopDatabaseImplements/ComputersShopDatabaseImplements.csproj b/ComputersShop/ComputersShopDatabaseImplements/ComputersShopDatabaseImplements.csproj index 873e93e..a44b823 100644 --- a/ComputersShop/ComputersShopDatabaseImplements/ComputersShopDatabaseImplements.csproj +++ b/ComputersShop/ComputersShopDatabaseImplements/ComputersShopDatabaseImplements.csproj @@ -18,6 +18,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240516145540_fix.Designer.cs b/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131102_fix.Designer.cs similarity index 75% rename from ComputersShop/ComputersShopDatabaseImplements/Migrations/20240516145540_fix.Designer.cs rename to ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131102_fix.Designer.cs index bcc0f36..14a399b 100644 --- a/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240516145540_fix.Designer.cs +++ b/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131102_fix.Designer.cs @@ -3,16 +3,16 @@ using System; using ComputersShopDatabaseImplements; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace ComputersShopDatabaseImplements.Migrations { [DbContext(typeof(ComputersShopDatabase))] - [Migration("20240516145540_fix")] + [Migration("20240518131102_fix")] partial class fix { /// @@ -21,29 +21,29 @@ namespace ComputersShopDatabaseImplements.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "7.0.16") - .HasAnnotation("Relational:MaxIdentifierLength", 128); + .HasAnnotation("Relational:MaxIdentifierLength", 63); - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("ComputersShopDatabaseImplements.Models.Client", b => { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("int"); + .HasColumnType("integer"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ClientFIO") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Email") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Password") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.HasKey("Id"); @@ -54,16 +54,16 @@ namespace ComputersShopDatabaseImplements.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("int"); + .HasColumnType("integer"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ComponentName") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Cost") - .HasColumnType("float"); + .HasColumnType("double precision"); b.HasKey("Id"); @@ -74,16 +74,16 @@ namespace ComputersShopDatabaseImplements.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("int"); + .HasColumnType("integer"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ComputerName") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Price") - .HasColumnType("float"); + .HasColumnType("double precision"); b.HasKey("Id"); @@ -94,18 +94,18 @@ namespace ComputersShopDatabaseImplements.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("int"); + .HasColumnType("integer"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ComponentId") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("ComputerId") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("Count") - .HasColumnType("int"); + .HasColumnType("integer"); b.HasKey("Id"); @@ -120,23 +120,23 @@ namespace ComputersShopDatabaseImplements.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("int"); + .HasColumnType("integer"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ImplementerFIO") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Password") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Qualification") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("WorkExperience") - .HasColumnType("int"); + .HasColumnType("integer"); b.HasKey("Id"); @@ -146,25 +146,25 @@ namespace ComputersShopDatabaseImplements.Migrations modelBuilder.Entity("ComputersShopDatabaseImplements.Models.MessageInfo", b => { b.Property("MessageId") - .HasColumnType("nvarchar(450)"); + .HasColumnType("text"); b.Property("Body") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("ClientId") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("DateDelivery") - .HasColumnType("datetime2"); + .HasColumnType("timestamp without time zone"); b.Property("SenderName") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Subject") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.HasKey("MessageId"); @@ -177,33 +177,33 @@ namespace ComputersShopDatabaseImplements.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("int"); + .HasColumnType("integer"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ClientId") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("ComputerId") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("Count") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("DateCreate") - .HasColumnType("datetime2"); + .HasColumnType("timestamp without time zone"); b.Property("DateImplement") - .HasColumnType("datetime2"); + .HasColumnType("timestamp without time zone"); b.Property("ImplementerId") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("Status") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("Sum") - .HasColumnType("float"); + .HasColumnType("double precision"); b.HasKey("Id"); diff --git a/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240516145540_fix.cs b/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131102_fix.cs similarity index 66% rename from ComputersShop/ComputersShopDatabaseImplements/Migrations/20240516145540_fix.cs rename to ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131102_fix.cs index 14bf360..6d3c19a 100644 --- a/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240516145540_fix.cs +++ b/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131102_fix.cs @@ -1,5 +1,6 @@ using System; using Microsoft.EntityFrameworkCore.Migrations; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable @@ -15,11 +16,11 @@ namespace ComputersShopDatabaseImplements.Migrations 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) + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + ClientFIO = table.Column(type: "text", nullable: false), + Email = table.Column(type: "text", nullable: false), + Password = table.Column(type: "text", nullable: false) }, constraints: table => { @@ -30,10 +31,10 @@ namespace ComputersShopDatabaseImplements.Migrations 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) + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + ComponentName = table.Column(type: "text", nullable: false), + Cost = table.Column(type: "double precision", nullable: false) }, constraints: table => { @@ -44,10 +45,10 @@ namespace ComputersShopDatabaseImplements.Migrations name: "Computers", columns: table => new { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - ComputerName = table.Column(type: "nvarchar(max)", nullable: false), - Price = table.Column(type: "float", nullable: false) + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + ComputerName = table.Column(type: "text", nullable: false), + Price = table.Column(type: "double precision", nullable: false) }, constraints: table => { @@ -58,12 +59,12 @@ namespace ComputersShopDatabaseImplements.Migrations 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) + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + ImplementerFIO = table.Column(type: "text", nullable: false), + Password = table.Column(type: "text", nullable: false), + WorkExperience = table.Column(type: "integer", nullable: false), + Qualification = table.Column(type: "integer", nullable: false) }, constraints: table => { @@ -74,12 +75,12 @@ namespace ComputersShopDatabaseImplements.Migrations name: "Messages", columns: table => new { - MessageId = table.Column(type: "nvarchar(450)", nullable: false), - ClientId = table.Column(type: "int", nullable: true), - SenderName = table.Column(type: "nvarchar(max)", nullable: false), - DateDelivery = table.Column(type: "datetime2", nullable: false), - Subject = table.Column(type: "nvarchar(max)", nullable: false), - Body = table.Column(type: "nvarchar(max)", nullable: false) + MessageId = table.Column(type: "text", nullable: false), + ClientId = table.Column(type: "integer", nullable: true), + SenderName = table.Column(type: "text", nullable: false), + DateDelivery = table.Column(type: "timestamp without time zone", nullable: false), + Subject = table.Column(type: "text", nullable: false), + Body = table.Column(type: "text", nullable: false) }, constraints: table => { @@ -95,11 +96,11 @@ namespace ComputersShopDatabaseImplements.Migrations name: "ComputerComponents", columns: table => new { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - ComputerId = table.Column(type: "int", nullable: false), - ComponentId = table.Column(type: "int", nullable: false), - Count = table.Column(type: "int", nullable: false) + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + ComputerId = table.Column(type: "integer", nullable: false), + ComponentId = table.Column(type: "integer", nullable: false), + Count = table.Column(type: "integer", nullable: false) }, constraints: table => { @@ -122,16 +123,16 @@ namespace ComputersShopDatabaseImplements.Migrations name: "Orders", columns: table => new { - Id = table.Column(type: "int", nullable: false) - .Annotation("SqlServer:Identity", "1, 1"), - ComputerId = table.Column(type: "int", nullable: false), - ClientId = 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) + Id = table.Column(type: "integer", nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + ComputerId = table.Column(type: "integer", nullable: false), + ClientId = table.Column(type: "integer", nullable: false), + ImplementerId = table.Column(type: "integer", nullable: true), + Count = table.Column(type: "integer", nullable: false), + Sum = table.Column(type: "double precision", nullable: false), + Status = table.Column(type: "integer", nullable: false), + DateCreate = table.Column(type: "timestamp without time zone", nullable: false), + DateImplement = table.Column(type: "timestamp without time zone", nullable: true) }, constraints: table => { diff --git a/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131310_fix123.Designer.cs b/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131310_fix123.Designer.cs new file mode 100644 index 0000000..ad5f666 --- /dev/null +++ b/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131310_fix123.Designer.cs @@ -0,0 +1,296 @@ +// +using System; +using ComputersShopDatabaseImplements; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace ComputersShopDatabaseImplements.Migrations +{ + [DbContext(typeof(ComputersShopDatabase))] + [Migration("20240518131310_fix123")] + partial class fix123 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.16") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClientFIO") + .IsRequired() + .HasColumnType("text"); + + b.Property("Email") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.Component", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ComponentName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Cost") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.ToTable("Components"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.Computer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ComputerName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Price") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.ToTable("Computers"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.ComputerComponent", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ComponentId") + .HasColumnType("integer"); + + b.Property("ComputerId") + .HasColumnType("integer"); + + b.Property("Count") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ComponentId"); + + b.HasIndex("ComputerId"); + + b.ToTable("ComputerComponents"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.Implementer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ImplementerFIO") + .IsRequired() + .HasColumnType("text"); + + b.Property("Password") + .IsRequired() + .HasColumnType("text"); + + b.Property("Qualification") + .HasColumnType("integer"); + + b.Property("WorkExperience") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.ToTable("Implementers"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.MessageInfo", b => + { + b.Property("MessageId") + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("ClientId") + .HasColumnType("integer"); + + b.Property("DateDelivery") + .HasColumnType("timestamp without time zone"); + + b.Property("SenderName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("MessageId"); + + b.HasIndex("ClientId"); + + b.ToTable("Messages"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.Order", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ClientId") + .HasColumnType("integer"); + + b.Property("ComputerId") + .HasColumnType("integer"); + + b.Property("Count") + .HasColumnType("integer"); + + b.Property("DateCreate") + .HasColumnType("timestamp without time zone"); + + b.Property("DateImplement") + .HasColumnType("timestamp without time zone"); + + b.Property("ImplementerId") + .HasColumnType("integer"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("Sum") + .HasColumnType("double precision"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.HasIndex("ComputerId"); + + b.HasIndex("ImplementerId"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.ComputerComponent", b => + { + b.HasOne("ComputersShopDatabaseImplements.Models.Component", "Component") + .WithMany("ComputerComponents") + .HasForeignKey("ComponentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputersShopDatabaseImplements.Models.Computer", "Computer") + .WithMany("Components") + .HasForeignKey("ComputerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Computer"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.MessageInfo", b => + { + b.HasOne("ComputersShopDatabaseImplements.Models.Client", "Client") + .WithMany() + .HasForeignKey("ClientId"); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.Order", b => + { + b.HasOne("ComputersShopDatabaseImplements.Models.Client", "Client") + .WithMany("Orders") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputersShopDatabaseImplements.Models.Computer", "Computer") + .WithMany("Orders") + .HasForeignKey("ComputerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputersShopDatabaseImplements.Models.Implementer", "Implementer") + .WithMany("Orders") + .HasForeignKey("ImplementerId"); + + b.Navigation("Client"); + + b.Navigation("Computer"); + + b.Navigation("Implementer"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.Client", b => + { + b.Navigation("Orders"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.Component", b => + { + b.Navigation("ComputerComponents"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.Computer", b => + { + b.Navigation("Components"); + + b.Navigation("Orders"); + }); + + modelBuilder.Entity("ComputersShopDatabaseImplements.Models.Implementer", b => + { + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131310_fix123.cs b/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131310_fix123.cs new file mode 100644 index 0000000..efeff66 --- /dev/null +++ b/ComputersShop/ComputersShopDatabaseImplements/Migrations/20240518131310_fix123.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ComputersShopDatabaseImplements.Migrations +{ + /// + public partial class fix123 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/ComputersShop/ComputersShopDatabaseImplements/Migrations/ComputersShopDatabaseModelSnapshot.cs b/ComputersShop/ComputersShopDatabaseImplements/Migrations/ComputersShopDatabaseModelSnapshot.cs index ac6a706..0c5967a 100644 --- a/ComputersShop/ComputersShopDatabaseImplements/Migrations/ComputersShopDatabaseModelSnapshot.cs +++ b/ComputersShop/ComputersShopDatabaseImplements/Migrations/ComputersShopDatabaseModelSnapshot.cs @@ -3,8 +3,8 @@ using System; using ComputersShopDatabaseImplements; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable @@ -18,29 +18,29 @@ namespace ComputersShopDatabaseImplements.Migrations #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "7.0.16") - .HasAnnotation("Relational:MaxIdentifierLength", 128); + .HasAnnotation("Relational:MaxIdentifierLength", 63); - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("ComputersShopDatabaseImplements.Models.Client", b => { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("int"); + .HasColumnType("integer"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ClientFIO") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Email") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Password") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.HasKey("Id"); @@ -51,16 +51,16 @@ namespace ComputersShopDatabaseImplements.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("int"); + .HasColumnType("integer"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ComponentName") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Cost") - .HasColumnType("float"); + .HasColumnType("double precision"); b.HasKey("Id"); @@ -71,16 +71,16 @@ namespace ComputersShopDatabaseImplements.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("int"); + .HasColumnType("integer"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ComputerName") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Price") - .HasColumnType("float"); + .HasColumnType("double precision"); b.HasKey("Id"); @@ -91,18 +91,18 @@ namespace ComputersShopDatabaseImplements.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("int"); + .HasColumnType("integer"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ComponentId") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("ComputerId") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("Count") - .HasColumnType("int"); + .HasColumnType("integer"); b.HasKey("Id"); @@ -117,23 +117,23 @@ namespace ComputersShopDatabaseImplements.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("int"); + .HasColumnType("integer"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ImplementerFIO") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Password") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Qualification") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("WorkExperience") - .HasColumnType("int"); + .HasColumnType("integer"); b.HasKey("Id"); @@ -143,25 +143,25 @@ namespace ComputersShopDatabaseImplements.Migrations modelBuilder.Entity("ComputersShopDatabaseImplements.Models.MessageInfo", b => { b.Property("MessageId") - .HasColumnType("nvarchar(450)"); + .HasColumnType("text"); b.Property("Body") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("ClientId") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("DateDelivery") - .HasColumnType("datetime2"); + .HasColumnType("timestamp without time zone"); b.Property("SenderName") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.Property("Subject") .IsRequired() - .HasColumnType("nvarchar(max)"); + .HasColumnType("text"); b.HasKey("MessageId"); @@ -174,33 +174,33 @@ namespace ComputersShopDatabaseImplements.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnType("int"); + .HasColumnType("integer"); - SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ClientId") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("ComputerId") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("Count") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("DateCreate") - .HasColumnType("datetime2"); + .HasColumnType("timestamp without time zone"); b.Property("DateImplement") - .HasColumnType("datetime2"); + .HasColumnType("timestamp without time zone"); b.Property("ImplementerId") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("Status") - .HasColumnType("int"); + .HasColumnType("integer"); b.Property("Sum") - .HasColumnType("float"); + .HasColumnType("double precision"); b.HasKey("Id"); diff --git a/ComputersShop/ComputersShopListImplement/Implements/OrderStorage.cs b/ComputersShop/ComputersShopListImplement/Implements/OrderStorage.cs index c0e5094..4e913a9 100644 --- a/ComputersShop/ComputersShopListImplement/Implements/OrderStorage.cs +++ b/ComputersShop/ComputersShopListImplement/Implements/OrderStorage.cs @@ -11,7 +11,7 @@ using System.Threading.Tasks; namespace ComputersShopListImplement.Implements { - public class OrderStorage: IOrderStorage + public class OrderStorage : IOrderStorage { private readonly DataListSingleton _source; public OrderStorage() @@ -34,11 +34,44 @@ namespace ComputersShopListImplement.Implements { return result; } - foreach (var order in _source.Orders) + if (model.DateFrom.HasValue && model.DateTo.HasValue) { - if (order.Id == model.Id) + foreach (var order in _source.Orders) { - result.Add(AddComputerName(order.GetViewModel)); + if (order.Id == model.Id || model.DateFrom <= order.DateCreate && order.DateCreate <= model.DateTo) + { + result.Add(AddComputerName(order.GetViewModel)); + } + } + } + if (model.ClientId != null) + { + foreach (var order in _source.Orders) + { + if (order.ClientId == model.ClientId) + { + result.Add(AddComputerName(order.GetViewModel)); + } + } + } + if (model.ImplementerId != null) + { + foreach (var order in _source.Orders) + { + if (order.ImplementerId == model.ImplementerId) + { + result.Add(AddComputerName(order.GetViewModel)); + } + } + } + if (model.Status != null) + { + foreach (var order in _source.Orders) + { + if (model.Status.Equals(order.Status)) + { + result.Add(AddComputerName(order.GetViewModel)); + } } } return result; @@ -55,6 +88,14 @@ namespace ComputersShopListImplement.Implements { return AddComputerName(order.GetViewModel); } + else if (model.ImplementerId.HasValue && model.Status != null && order.ImplementerId == model.ImplementerId && model.Status.Equals(order.Status)) + { + return order.GetViewModel; + } + else if (model.ImplementerId.HasValue && model.ImplementerId == order.ImplementerId) + { + return order.GetViewModel; + } } return null; } @@ -111,4 +152,4 @@ namespace ComputersShopListImplement.Implements return model; } } -} +} \ No newline at end of file