From adaa621ff6c856f2e4dc4081965f12f51c980106 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=A4=D0=B5=D0=B4=D0=BE=D1=82?= =?UTF-8?q?=D0=BE=D0=B2?= Date: Wed, 24 Jul 2024 13:02:15 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B1=D0=B5=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogic/PaymeantLogic.cs | 5 +- .../BusinessLogic/ReportClientLogic.cs | 17 +- .../BindingModels/PaymeantBindingModel.cs | 4 +- .../ViewModels/MessageInfoViewModel.cs | 30 -- .../ViewModels/PaymeantViewModel.cs | 5 +- .../Implements/OrderStorage.cs | 4 +- .../Implements/PaymeantStorage.cs | 1 + .../Migrations/20240724085609_05.Designer.cs | 285 ++++++++++++++++++ .../Migrations/20240724085609_05.cs | 48 +++ .../Migrations/DatabaseModelSnapshot.cs | 28 +- .../Models/Order.cs | 9 +- .../Models/Paymeant.cs | 14 +- .../Models/IMessageInfoModel.cs | 23 -- .../Models/IPaymentModel.cs | 5 +- .../Controllers/HomeController.cs | 2 - .../Controllers/ClientController.cs | 17 +- .../Controllers/MainController.cs | 2 - ElectronicsShop/ElectronicsShopRestAPI/Report | Bin 37629 -> 30774 bytes .../Views/Home/Message.cshtml | 48 --- .../Views/Home/Payment.cshtml | 2 +- 20 files changed, 412 insertions(+), 137 deletions(-) delete mode 100644 ElectronicsShop/ElectronicsShopContracts/ViewModels/MessageInfoViewModel.cs create mode 100644 ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240724085609_05.Designer.cs create mode 100644 ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240724085609_05.cs delete mode 100644 ElectronicsShop/ElectronicsShopDataModels/Models/IMessageInfoModel.cs delete mode 100644 ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Message.cshtml diff --git a/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/PaymeantLogic.cs b/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/PaymeantLogic.cs index 189f26f..b486a52 100644 --- a/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/PaymeantLogic.cs +++ b/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/PaymeantLogic.cs @@ -71,8 +71,11 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic { throw new ArgumentNullException("Сумма оплаты должна быть больше 0", nameof(model.SumPayment)); } + if (model.PayProductList.Count == 0) { + throw new ArgumentNullException("нельзя оплатить пустой заказ", nameof(model.PayProductList)); + } _logger.LogInformation($"Payment. ID:{model.ID}.Sum:{model.SumPayment}.OrderID:{model.OrderID}" + - $".PayOption{model.PayOption}"); + $".PayOption{model.PayOption}.Products:{model.PayProductList}"); } public bool SetFullPayment(PaymeantBindingModel model) { diff --git a/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/ReportClientLogic.cs b/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/ReportClientLogic.cs index 921b703..4ce86d5 100644 --- a/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/ReportClientLogic.cs +++ b/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/ReportClientLogic.cs @@ -44,13 +44,12 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic List? products = new(); foreach (var paymeant in paymeants) { - var order = _orderStorage.GetElement(new OrderSearchModel { ID = paymeant.OrderID }); - foreach (var product in order.ProductList) { + foreach (var product in paymeant.PayProductList) { products.Add(new ReportProductsViewModel { ID = product.Value.Item1.ID, ProductName = product.Value.Item1.ProductName, Price = product.Value.Item1.Price, - CostItemName = _costItemStorage.GetElement(new CostItemSearchModel { ID = product.Value.Item1.CostItemID })?.Name + CostItemName = _costItemStorage.GetElement(new CostItemSearchModel { ID = product.Value.Item1.CostItemID })?.Name ?? "Отсутствует" }); } @@ -89,17 +88,11 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic TotalCount = 0 }; - var order = _orderStorage.GetElement(new OrderSearchModel { ID = paymeant.OrderID }); - if (order == null) { - continue; + foreach (var product in paymeant.PayProductList) { + record.Products.Add(new(product.Value.Item1.ProductName, product.Value.Item2)); + record.TotalCount += product.Value.Item2; } - foreach (var product in products) { - if (order.ProductList.ContainsKey(product.ID)) { - record.Products.Add(new(product.ProductName, order.ProductList[product.ID].Item2)); - record.TotalCount += order.ProductList[product.ID].Item2; - } - } list.Add(record); } diff --git a/ElectronicsShop/ElectronicsShopContracts/BindingModels/PaymeantBindingModel.cs b/ElectronicsShop/ElectronicsShopContracts/BindingModels/PaymeantBindingModel.cs index 4b4d9c8..e02d423 100644 --- a/ElectronicsShop/ElectronicsShopContracts/BindingModels/PaymeantBindingModel.cs +++ b/ElectronicsShop/ElectronicsShopContracts/BindingModels/PaymeantBindingModel.cs @@ -21,5 +21,7 @@ namespace ElectronicsShopContracts.BindingModels public int ClientID { get; set; } public DateTime DatePaymeant { get; set; } = DateTime.Now; - } + + public Dictionary PayProductList { get; set; } = new(); + } } diff --git a/ElectronicsShop/ElectronicsShopContracts/ViewModels/MessageInfoViewModel.cs b/ElectronicsShop/ElectronicsShopContracts/ViewModels/MessageInfoViewModel.cs deleted file mode 100644 index 8b634e3..0000000 --- a/ElectronicsShop/ElectronicsShopContracts/ViewModels/MessageInfoViewModel.cs +++ /dev/null @@ -1,30 +0,0 @@ -using ElectronicsShopDataModels.Models; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ElectronicsShopContracts.ViewModels -{ - public class MessageInfoViewModel: IMessageInfoModel - { - public string MessageID { get; set; } = string.Empty; - - public int? ClientID { get; set; } - - [DisplayName("Отправитель")] - public string SenderName { get; set; } = string.Empty; - - [DisplayName("Дата письма")] - public DateTime DateDelivery { get; set; } - - [DisplayName("Заголовок")] - public string Subject { get; set; } = string.Empty; - - [DisplayName("Текст")] - public string Body { get; set; } = string.Empty; - } -} - diff --git a/ElectronicsShop/ElectronicsShopContracts/ViewModels/PaymeantViewModel.cs b/ElectronicsShop/ElectronicsShopContracts/ViewModels/PaymeantViewModel.cs index 5894898..c93e9d7 100644 --- a/ElectronicsShop/ElectronicsShopContracts/ViewModels/PaymeantViewModel.cs +++ b/ElectronicsShop/ElectronicsShopContracts/ViewModels/PaymeantViewModel.cs @@ -24,5 +24,8 @@ namespace ElectronicsShopContracts.ViewModels public int ClientID { get; set; } public DateTime DatePaymeant { get; set; } - } + + [DisplayName("Список оплаченных товаров")] + public Dictionary PayProductList { get; set; } = new(); + } } diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/OrderStorage.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/OrderStorage.cs index 9737bba..366e532 100644 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/OrderStorage.cs +++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/OrderStorage.cs @@ -67,6 +67,7 @@ namespace ElectronicsShopDataBaseImplement.Implements using var context = new Database(); if (model.ClientID.HasValue) { return context.Orders + .Include(x => x.Payments) .Include(x => x.Products) .ThenInclude(x => x._product) .OrderBy(x => x.ID) @@ -75,7 +76,8 @@ namespace ElectronicsShopDataBaseImplement.Implements if (model.ID.HasValue) { return context.Orders - .Include(x => x.Products) + .Include(x => x.Payments) + .Include(x => x.Products) .ThenInclude(x => x._product) .FirstOrDefault(x => (model.ID.HasValue && x.ID == model.ID))?.GetViewModel; } diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/PaymeantStorage.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/PaymeantStorage.cs index 13c519f..0f6559c 100644 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/PaymeantStorage.cs +++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/PaymeantStorage.cs @@ -25,6 +25,7 @@ namespace ElectronicsShopDataBaseImplement.Implements { return newPayment.GetViewModel; } + // todo тут должен меняться статус оплаты public PaymeantViewModel? UpdatePay(PaymeantBindingModel model) { using var context = new Database(); var paymeant = context.Paymeants.FirstOrDefault(x => x.ID == model.ID); diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240724085609_05.Designer.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240724085609_05.Designer.cs new file mode 100644 index 0000000..ad2389d --- /dev/null +++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240724085609_05.Designer.cs @@ -0,0 +1,285 @@ +// +using System; +using ElectronicsShopDataBaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace ElectronicsShopDataBaseImplement.Migrations +{ + [DbContext(typeof(Database))] + [Migration("20240724085609_05")] + partial class _05 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.4") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Client", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("ClientFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("ID"); + + b.ToTable("Clients"); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.CostItem", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("CostNum") + .HasColumnType("int"); + + b.Property("EmployeeID") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Price") + .HasColumnType("float"); + + b.HasKey("ID"); + + b.HasIndex("EmployeeID"); + + b.ToTable("CostItems"); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Employee", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("EmployeeFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Login") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("ID"); + + b.ToTable("Employees"); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Order", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("ClientID") + .HasColumnType("int"); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("Sum") + .HasColumnType("float"); + + b.HasKey("ID"); + + b.HasIndex("ClientID"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.OrderProduct", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("OrderID") + .HasColumnType("int"); + + b.Property("ProductID") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("OrderID"); + + b.HasIndex("ProductID"); + + b.ToTable("OrderProducts"); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Paymeant", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("ClientID") + .HasColumnType("int"); + + b.Property("DatePaymeant") + .HasColumnType("datetime2"); + + b.Property("OrderID") + .HasColumnType("int"); + + b.Property("PayOption") + .HasColumnType("int"); + + b.Property("PaymentID") + .HasColumnType("int"); + + b.Property("SumPayment") + .HasColumnType("float"); + + b.HasKey("ID"); + + b.HasIndex("PaymentID"); + + b.ToTable("Paymeants"); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Product", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("CostItemID") + .HasColumnType("int"); + + b.Property("Price") + .HasColumnType("float"); + + b.Property("ProductName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("ID"); + + b.HasIndex("CostItemID"); + + b.ToTable("Products"); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.CostItem", b => + { + b.HasOne("ElectronicsShopDataBaseImplement.Models.Employee", "Employee") + .WithMany() + .HasForeignKey("EmployeeID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Order", b => + { + b.HasOne("ElectronicsShopDataBaseImplement.Models.Client", null) + .WithMany("Orders") + .HasForeignKey("ClientID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.OrderProduct", b => + { + b.HasOne("ElectronicsShopDataBaseImplement.Models.Order", "_order") + .WithMany("Products") + .HasForeignKey("OrderID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ElectronicsShopDataBaseImplement.Models.Product", "_product") + .WithMany() + .HasForeignKey("ProductID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("_order"); + + b.Navigation("_product"); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Paymeant", b => + { + b.HasOne("ElectronicsShopDataBaseImplement.Models.Order", null) + .WithMany("Payments") + .HasForeignKey("PaymentID"); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Product", b => + { + b.HasOne("ElectronicsShopDataBaseImplement.Models.CostItem", "CostItem") + .WithMany() + .HasForeignKey("CostItemID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CostItem"); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Client", b => + { + b.Navigation("Orders"); + }); + + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Order", b => + { + b.Navigation("Payments"); + + b.Navigation("Products"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240724085609_05.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240724085609_05.cs new file mode 100644 index 0000000..2efbda7 --- /dev/null +++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240724085609_05.cs @@ -0,0 +1,48 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ElectronicsShopDataBaseImplement.Migrations +{ + /// + public partial class _05 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "PaymentID", + table: "Paymeants", + type: "int", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_Paymeants_PaymentID", + table: "Paymeants", + column: "PaymentID"); + + migrationBuilder.AddForeignKey( + name: "FK_Paymeants_Orders_PaymentID", + table: "Paymeants", + column: "PaymentID", + principalTable: "Orders", + principalColumn: "ID"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Paymeants_Orders_PaymentID", + table: "Paymeants"); + + migrationBuilder.DropIndex( + name: "IX_Paymeants_PaymentID", + table: "Paymeants"); + + migrationBuilder.DropColumn( + name: "PaymentID", + table: "Paymeants"); + } + } +} diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/DatabaseModelSnapshot.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/DatabaseModelSnapshot.cs index c26ec3b..21e0b9b 100644 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/DatabaseModelSnapshot.cs +++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/DatabaseModelSnapshot.cs @@ -44,7 +44,7 @@ namespace ElectronicsShopDataBaseImplement.Migrations b.HasKey("ID"); - b.ToTable("Clients", (string)null); + b.ToTable("Clients"); }); modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.CostItem", b => @@ -72,7 +72,7 @@ namespace ElectronicsShopDataBaseImplement.Migrations b.HasIndex("EmployeeID"); - b.ToTable("CostItems", (string)null); + b.ToTable("CostItems"); }); modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Employee", b => @@ -97,7 +97,7 @@ namespace ElectronicsShopDataBaseImplement.Migrations b.HasKey("ID"); - b.ToTable("Employees", (string)null); + b.ToTable("Employees"); }); modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Order", b => @@ -121,7 +121,7 @@ namespace ElectronicsShopDataBaseImplement.Migrations b.HasIndex("ClientID"); - b.ToTable("Orders", (string)null); + b.ToTable("Orders"); }); modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.OrderProduct", b => @@ -147,7 +147,7 @@ namespace ElectronicsShopDataBaseImplement.Migrations b.HasIndex("ProductID"); - b.ToTable("OrderProducts", (string)null); + b.ToTable("OrderProducts"); }); modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Paymeant", b => @@ -170,12 +170,17 @@ namespace ElectronicsShopDataBaseImplement.Migrations b.Property("PayOption") .HasColumnType("int"); + b.Property("PaymentID") + .HasColumnType("int"); + b.Property("SumPayment") .HasColumnType("float"); b.HasKey("ID"); - b.ToTable("Paymeants", (string)null); + b.HasIndex("PaymentID"); + + b.ToTable("Paymeants"); }); modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Product", b => @@ -200,7 +205,7 @@ namespace ElectronicsShopDataBaseImplement.Migrations b.HasIndex("CostItemID"); - b.ToTable("Products", (string)null); + b.ToTable("Products"); }); modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.CostItem", b => @@ -242,6 +247,13 @@ namespace ElectronicsShopDataBaseImplement.Migrations b.Navigation("_product"); }); + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Paymeant", b => + { + b.HasOne("ElectronicsShopDataBaseImplement.Models.Order", null) + .WithMany("Payments") + .HasForeignKey("PaymentID"); + }); + modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Product", b => { b.HasOne("ElectronicsShopDataBaseImplement.Models.CostItem", "CostItem") @@ -260,6 +272,8 @@ namespace ElectronicsShopDataBaseImplement.Migrations modelBuilder.Entity("ElectronicsShopDataBaseImplement.Models.Order", b => { + b.Navigation("Payments"); + b.Navigation("Products"); }); #pragma warning restore 612, 618 diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Models/Order.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Models/Order.cs index 5322763..13c1ddd 100644 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Models/Order.cs +++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Models/Order.cs @@ -43,7 +43,10 @@ namespace ElectronicsShopDataBaseImplement.Models [ForeignKey("OrderID")] public virtual List Products { get; set; } = new(); - public static Order? Create(Database context ,OrderBindingModel? model) + [ForeignKey("PaymentID")] + public virtual List Payments { get; set; } = new(); + + public static Order? Create(Database context ,OrderBindingModel? model) { if (model == null) { @@ -107,5 +110,9 @@ namespace ElectronicsShopDataBaseImplement.Models context.OrderProducts.RemoveRange(orderProducts.Where(rec => !model.ProductList.ContainsKey(rec.ProductID))); context.SaveChanges(); } + + public void SumUpdate(double sumDeduct) { + Sum -= sumDeduct; + } } } diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Models/Paymeant.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Models/Paymeant.cs index cb82a41..04f53fc 100644 --- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Models/Paymeant.cs +++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Models/Paymeant.cs @@ -31,7 +31,10 @@ namespace ElectronicsShopDataBaseImplement.Models public DateTime DatePaymeant { get; set; } - public static Paymeant? Create(PaymeantBindingModel? model) + [NotMapped] + public Dictionary PayProductList { get; set; } = new(); + + public static Paymeant? Create(PaymeantBindingModel? model) { if (model == null) { @@ -44,7 +47,8 @@ namespace ElectronicsShopDataBaseImplement.Models SumPayment = model.SumPayment, PayOption = model.PayOption, ClientID = model.ClientID, - DatePaymeant = model.DatePaymeant + DatePaymeant = model.DatePaymeant, + PayProductList = model.PayProductList }; } public void Update(PaymeantBindingModel? model) @@ -53,7 +57,6 @@ namespace ElectronicsShopDataBaseImplement.Models { return; } - OrderID = model.OrderID; SumPayment = model.SumPayment; PayOption = model.PayOption; } @@ -64,7 +67,8 @@ namespace ElectronicsShopDataBaseImplement.Models SumPayment = SumPayment, PayOption = PayOption, ClientID = ClientID, - DatePaymeant = DatePaymeant + DatePaymeant = DatePaymeant, + PayProductList = PayProductList }; - } + } } diff --git a/ElectronicsShop/ElectronicsShopDataModels/Models/IMessageInfoModel.cs b/ElectronicsShop/ElectronicsShopDataModels/Models/IMessageInfoModel.cs deleted file mode 100644 index 2baae7e..0000000 --- a/ElectronicsShop/ElectronicsShopDataModels/Models/IMessageInfoModel.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ElectronicsShopDataModels.Models -{ - public interface IMessageInfoModel - { - string MessageID { get; } - - int? ClientID { get; } - - string SenderName { get; } - - DateTime DateDelivery { get; } - - string Subject { get; } - - string Body { get; } - } -} diff --git a/ElectronicsShop/ElectronicsShopDataModels/Models/IPaymentModel.cs b/ElectronicsShop/ElectronicsShopDataModels/Models/IPaymentModel.cs index 3e31d6b..e1e1e56 100644 --- a/ElectronicsShop/ElectronicsShopDataModels/Models/IPaymentModel.cs +++ b/ElectronicsShop/ElectronicsShopDataModels/Models/IPaymentModel.cs @@ -15,5 +15,8 @@ namespace ElectronicsShopDataModels.Models PaymeantOption PayOption { get; } DateTime DatePaymeant { get; } int ClientID { get; } - } + + // Список оплаченнх товаров + Dictionary PayProductList { get; } + } } diff --git a/ElectronicsShop/ElectronicsShopEmployeeApp/Controllers/HomeController.cs b/ElectronicsShop/ElectronicsShopEmployeeApp/Controllers/HomeController.cs index 496d352..55503d8 100644 --- a/ElectronicsShop/ElectronicsShopEmployeeApp/Controllers/HomeController.cs +++ b/ElectronicsShop/ElectronicsShopEmployeeApp/Controllers/HomeController.cs @@ -180,8 +180,6 @@ namespace ElectronicsShopEmployeeApp.Controllers { } } - - Response.Redirect("CostItem"); } diff --git a/ElectronicsShop/ElectronicsShopRestAPI/Controllers/ClientController.cs b/ElectronicsShop/ElectronicsShopRestAPI/Controllers/ClientController.cs index 94da2b5..d5a0eaa 100644 --- a/ElectronicsShop/ElectronicsShopRestAPI/Controllers/ClientController.cs +++ b/ElectronicsShop/ElectronicsShopRestAPI/Controllers/ClientController.cs @@ -8,6 +8,7 @@ using ElectronicsShopContracts.SearchModels; using ElectronicsShopContracts.ViewModels; using ElectronicsShopDataBaseImplement.Models; using Microsoft.AspNetCore.Mvc; +using Microsoft.Identity.Client; using MigraDoc.Rendering; namespace ElectronicsShopRestAPI.Controllers { @@ -21,14 +22,16 @@ namespace ElectronicsShopRestAPI.Controllers { private readonly IClientLogic _logic; private readonly IPaymeantLogic _payLogic; private readonly IReportClientLogic _reportLogic; + private readonly IOrderLogic _orderLogic; private readonly AbstractMailWorker _mailWorker; public ClientController(ILogger logger, IClientLogic logic, IPaymeantLogic payLogic, IReportClientLogic reportlogic, - AbstractMailWorker mailWorker) { + IOrderLogic orderLogic, AbstractMailWorker mailWorker) { _logger = logger; _logic = logic; _payLogic = payLogic; _reportLogic = reportlogic; + _orderLogic = orderLogic; _mailWorker = mailWorker; } @@ -71,7 +74,19 @@ namespace ElectronicsShopRestAPI.Controllers { [HttpPost] public void CreatePaymeant (PaymeantBindingModel model) { try { + var products = _orderLogic.ReadElement(new OrderSearchModel { ID = model.OrderID })?.ProductList; + + if (products == null) { + throw new Exception("Ошибка получения товаров"); + } + + model.PayProductList = products; _payLogic.CreatePay(model); + + if (model.PayOption == 0) { + _orderLogic.Delete(new OrderBindingModel { ID = model.OrderID}); + } + } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания оплаты"); diff --git a/ElectronicsShop/ElectronicsShopRestAPI/Controllers/MainController.cs b/ElectronicsShop/ElectronicsShopRestAPI/Controllers/MainController.cs index 1405d1d..a043b3b 100644 --- a/ElectronicsShop/ElectronicsShopRestAPI/Controllers/MainController.cs +++ b/ElectronicsShop/ElectronicsShopRestAPI/Controllers/MainController.cs @@ -21,8 +21,6 @@ namespace ElectronicsShopRestAPI.Controllers { private readonly IPaymeantLogic _paymeant; private readonly IReportClientLogic _reportClientLogic; - //private readonly IMessageInfoLogic _message; - private Dictionary _productlist; public MainController(ILogger logger, IProductLogic product, diff --git a/ElectronicsShop/ElectronicsShopRestAPI/Report b/ElectronicsShop/ElectronicsShopRestAPI/Report index 3e30b7e35d34be36eb44467875826f8567e5d8f8..ee30878e9386381f66f5872d76079817b58994b0 100644 GIT binary patch delta 27794 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 UKR*i*3JQyW2-w+`w3G?{3;Jeo0RR91 delta 34668 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 g01n%>y1BWLH~(Kk@F^ZNA^=3Z;rjKizHWy90N6 -@{ - ViewData["Title"] = "Message"; -} - -
-

Письма

-
-
- @{ - - - - - - - - - - @if (Model != null) - { - @foreach (var item in Model) - { - - - - - } - } - -
- Заголовок - - Тело письма - - Дата письма -
- - @Html.DisplayFor(modelItem => item.Subject) - - @Html.DisplayFor(modelItem => item.Body) - - @Html.DisplayFor(modelItem => item.DateDelivery) -
- } -
\ No newline at end of file diff --git a/ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Payment.cshtml b/ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Payment.cshtml index 04f0ab2..8d0740c 100644 --- a/ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Payment.cshtml +++ b/ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Payment.cshtml @@ -30,7 +30,7 @@
Сумма к оплате:
- +