diff --git a/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/PaymeantLogic.cs b/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/PaymeantLogic.cs
index c759895..3a10116 100644
--- a/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/PaymeantLogic.cs
+++ b/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/PaymeantLogic.cs
@@ -71,7 +71,7 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
{
throw new ArgumentNullException("Сумма оплаты должна быть больше 0", nameof(model.SumPayment));
}
- _logger.LogInformation($"Payment. ID:{model.ID}.ProductID:{model.ProductID}.Sum:{model.SumPayment}.OrderID:{model.OrderID}" +
+ _logger.LogInformation($"Payment. ID:{model.ID}.Sum:{model.SumPayment}.OrderID:{model.OrderID}" +
$".PayOption{model.PayOption}");
}
diff --git a/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/ReportClientLogic.cs b/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/ReportClientLogic.cs
index 97ef1c7..98c2f95 100644
--- a/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/ReportClientLogic.cs
+++ b/ElectronicsShop/ElectronicsShopBusinessLogic/BusinessLogic/ReportClientLogic.cs
@@ -29,7 +29,7 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
var record = new ReportPaymeantsViewModel
{
PaymeantID=paymeant.ID,
- ProductID=paymeant.ProductID,
+ //ProductID=paymeant.ProductID,
OrderID=paymeant.OrderID,
PayOption=paymeant.PayOption,
SumPayment=paymeant.SumPayment,
diff --git a/ElectronicsShop/ElectronicsShopContracts/BindingModels/PaymeantBindingModel.cs b/ElectronicsShop/ElectronicsShopContracts/BindingModels/PaymeantBindingModel.cs
index c66dd30..30c11b3 100644
--- a/ElectronicsShop/ElectronicsShopContracts/BindingModels/PaymeantBindingModel.cs
+++ b/ElectronicsShop/ElectronicsShopContracts/BindingModels/PaymeantBindingModel.cs
@@ -12,12 +12,12 @@ namespace ElectronicsShopContracts.BindingModels
{
public int ID { get; set; }
- public int ProductID { get; set; }
-
public int OrderID { get; set; }
public double SumPayment { get; set; }
public PaymeantOption PayOption { get; set; } = PaymeantOption.Неоплачено;
+
+ public int ClientID { get; set; }
}
}
diff --git a/ElectronicsShop/ElectronicsShopContracts/SearchModels/PaymeantSearchModel.cs b/ElectronicsShop/ElectronicsShopContracts/SearchModels/PaymeantSearchModel.cs
index 6332616..450909c 100644
--- a/ElectronicsShop/ElectronicsShopContracts/SearchModels/PaymeantSearchModel.cs
+++ b/ElectronicsShop/ElectronicsShopContracts/SearchModels/PaymeantSearchModel.cs
@@ -12,5 +12,6 @@ namespace ElectronicsShopContracts.SearchModels
public int? ProductID { get; set; }
public int? OrderID { get; set; }
public double? SumPay { get; set; }
+ public int? ClientID { get; set; }
}
}
diff --git a/ElectronicsShop/ElectronicsShopContracts/ViewModels/PaymeantViewModel.cs b/ElectronicsShop/ElectronicsShopContracts/ViewModels/PaymeantViewModel.cs
index 995f035..b26ba1e 100644
--- a/ElectronicsShop/ElectronicsShopContracts/ViewModels/PaymeantViewModel.cs
+++ b/ElectronicsShop/ElectronicsShopContracts/ViewModels/PaymeantViewModel.cs
@@ -12,8 +12,6 @@ namespace ElectronicsShopContracts.ViewModels
public class PaymeantViewModel : IPaymentModel {
public int ID { get; set; }
- public int ProductID { get; set; }
-
public int OrderID { get; set; }
[DisplayName("Cумма оплаты продукта")]
@@ -21,5 +19,8 @@ namespace ElectronicsShopContracts.ViewModels
[DisplayName("Статус оплаты")]
public PaymeantOption PayOption { get; set; } = PaymeantOption.Неоплачено;
- }
+
+ [DisplayName("Клиент")]
+ public int ClientID { get; set; }
+ }
}
diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/PaymeantStorage.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/PaymeantStorage.cs
index f3d10a9..0445b3d 100644
--- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/PaymeantStorage.cs
+++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Implements/PaymeantStorage.cs
@@ -48,6 +48,11 @@ namespace ElectronicsShopDataBaseImplement.Implements {
return new();
}
using var context = new Database();
+ if (model.ClientID.HasValue) {
+ return context.Paymeants
+ .Where(x => x.ClientID == model.ClientID)
+ .Select(x => x.GetViewModel).ToList();
+ }
return context.Paymeants
.Where(x => x.ID == model.ID)
.Select(x => x.GetViewModel).ToList();
diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240531153626_Init.Designer.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240601012156_InitMigration.Designer.cs
similarity index 98%
rename from ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240531153626_Init.Designer.cs
rename to ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240601012156_InitMigration.Designer.cs
index e9218ef..31a2e6b 100644
--- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240531153626_Init.Designer.cs
+++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240601012156_InitMigration.Designer.cs
@@ -12,8 +12,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace ElectronicsShopDataBaseImplement.Migrations
{
[DbContext(typeof(Database))]
- [Migration("20240531153626_Init")]
- partial class Init
+ [Migration("20240601012156_InitMigration")]
+ partial class InitMigration
{
///
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@@ -191,6 +191,9 @@ namespace ElectronicsShopDataBaseImplement.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+ b.Property("ClientID")
+ .HasColumnType("int");
+
b.Property("OrderID")
.HasColumnType("int");
@@ -200,9 +203,6 @@ namespace ElectronicsShopDataBaseImplement.Migrations
b.Property("PaymentID")
.HasColumnType("int");
- b.Property("ProductID")
- .HasColumnType("int");
-
b.Property("SumPayment")
.HasColumnType("float");
diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240531153626_Init.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240601012156_InitMigration.cs
similarity index 98%
rename from ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240531153626_Init.cs
rename to ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240601012156_InitMigration.cs
index dc157cf..780ffb3 100644
--- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240531153626_Init.cs
+++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/20240601012156_InitMigration.cs
@@ -6,7 +6,7 @@ using Microsoft.EntityFrameworkCore.Migrations;
namespace ElectronicsShopDataBaseImplement.Migrations
{
///
- public partial class Init : Migration
+ public partial class InitMigration : Migration
{
///
protected override void Up(MigrationBuilder migrationBuilder)
@@ -111,8 +111,8 @@ namespace ElectronicsShopDataBaseImplement.Migrations
{
ID = table.Column(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
- ProductID = table.Column(type: "int", nullable: false),
OrderID = table.Column(type: "int", nullable: false),
+ ClientID = table.Column(type: "int", nullable: false),
SumPayment = table.Column(type: "float", nullable: false),
PayOption = table.Column(type: "int", nullable: false),
PaymentID = table.Column(type: "int", nullable: true)
diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/DatabaseModelSnapshot.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/DatabaseModelSnapshot.cs
index ed01306..0869eef 100644
--- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/DatabaseModelSnapshot.cs
+++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Migrations/DatabaseModelSnapshot.cs
@@ -188,6 +188,9 @@ namespace ElectronicsShopDataBaseImplement.Migrations
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID"));
+ b.Property("ClientID")
+ .HasColumnType("int");
+
b.Property("OrderID")
.HasColumnType("int");
@@ -197,9 +200,6 @@ namespace ElectronicsShopDataBaseImplement.Migrations
b.Property("PaymentID")
.HasColumnType("int");
- b.Property("ProductID")
- .HasColumnType("int");
-
b.Property("SumPayment")
.HasColumnType("float");
diff --git a/ElectronicsShop/ElectronicsShopDataBaseImplement/Models/Paymeant.cs b/ElectronicsShop/ElectronicsShopDataBaseImplement/Models/Paymeant.cs
index ad2accc..851e53c 100644
--- a/ElectronicsShop/ElectronicsShopDataBaseImplement/Models/Paymeant.cs
+++ b/ElectronicsShop/ElectronicsShopDataBaseImplement/Models/Paymeant.cs
@@ -17,13 +17,13 @@ namespace ElectronicsShopDataBaseImplement.Models
{
public int ID { get; set; }
- [ForeignKey("ProductID")]
- public int ProductID { get; set; }
-
[ForeignKey("OrderID")]
public int OrderID { get; set; }
[Required]
+ public int ClientID { get; set; }
+
+ [Required]
public double SumPayment { get; set; }
[Required]
@@ -38,10 +38,10 @@ namespace ElectronicsShopDataBaseImplement.Models
return new Paymeant()
{
ID = model.ID,
- ProductID = model.ProductID,
OrderID = model.OrderID,
SumPayment = model.SumPayment,
PayOption = model.PayOption,
+ ClientID = model.ClientID,
};
}
public void Update(PaymeantBindingModel? model)
@@ -50,7 +50,6 @@ namespace ElectronicsShopDataBaseImplement.Models
{
return;
}
- ProductID = model.ProductID;
OrderID = model.OrderID;
SumPayment = model.SumPayment;
PayOption = model.PayOption;
@@ -59,11 +58,10 @@ namespace ElectronicsShopDataBaseImplement.Models
public PaymeantViewModel GetViewModel => new()
{
ID = ID,
- ProductID = ProductID,
OrderID = OrderID,
SumPayment = SumPayment,
PayOption = PayOption,
+ ClientID = ClientID,
};
-
- }
+ }
}
diff --git a/ElectronicsShop/ElectronicsShopDataModels/Models/IPaymentModel.cs b/ElectronicsShop/ElectronicsShopDataModels/Models/IPaymentModel.cs
index 269c5e4..1170593 100644
--- a/ElectronicsShop/ElectronicsShopDataModels/Models/IPaymentModel.cs
+++ b/ElectronicsShop/ElectronicsShopDataModels/Models/IPaymentModel.cs
@@ -10,9 +10,9 @@ namespace ElectronicsShopDataModels.Models
{
public interface IPaymentModel: IID
{
- int ProductID { get; }
int OrderID { get; }
double SumPayment { get; }
PaymeantOption PayOption { get; }
+ int ClientID { get; }
}
}
diff --git a/ElectronicsShop/ElectronicsShopRestAPI/Controllers/ClientController.cs b/ElectronicsShop/ElectronicsShopRestAPI/Controllers/ClientController.cs
index 8ddf38f..8598ce9 100644
--- a/ElectronicsShop/ElectronicsShopRestAPI/Controllers/ClientController.cs
+++ b/ElectronicsShop/ElectronicsShopRestAPI/Controllers/ClientController.cs
@@ -13,10 +13,12 @@ namespace ElectronicsShopRestAPI.Controllers {
private readonly ILogger _logger;
private readonly IClientLogic _logic;
+ private readonly IPaymeantLogic _payLogic;
- public ClientController(ILogger logger, IClientLogic logic) {
+ public ClientController(ILogger logger, IClientLogic logic, IPaymeantLogic payLogic) {
_logger = logger;
_logic = logic;
+ _payLogic = payLogic;
}
[HttpGet]
@@ -54,5 +56,26 @@ namespace ElectronicsShopRestAPI.Controllers {
throw;
}
}
+
+ [HttpPost]
+ public void CreatePaymeant (PaymeantBindingModel model) {
+ try {
+ _payLogic.CreatePay(model);
+ }
+ catch (Exception ex) {
+ _logger.LogError(ex, "Ошибка создания оплаты");
+ }
+ }
+
+ [HttpPost]
+ public List? GetPaymeants(int _clientID) {
+ try {
+ return _payLogic.ReadList(new PaymeantSearchModel { ClientID = _clientID });
+ }
+ catch (Exception ex) {
+ _logger.LogError(ex, $"Ошибка получения списка оплат клиента id = {_clientID}");
+ throw;
+ }
+ }
}
}
diff --git a/ElectronicsShop/ElectronicsShopRestAPI/Program.cs b/ElectronicsShop/ElectronicsShopRestAPI/Program.cs
index 2228ccc..76cd9f5 100644
--- a/ElectronicsShop/ElectronicsShopRestAPI/Program.cs
+++ b/ElectronicsShop/ElectronicsShopRestAPI/Program.cs
@@ -23,6 +23,7 @@ builder.Services.AddTransient();
builder.Services.AddTransient();
builder.Services.AddTransient();
builder.Services.AddTransient();
+builder.Services.AddTransient();
builder.Services.AddTransient();
builder.Services.AddTransient();
diff --git a/ElectronicsShop/ElectronicsShopShopClientApp/Controllers/HomeController.cs b/ElectronicsShop/ElectronicsShopShopClientApp/Controllers/HomeController.cs
index 9a07824..2ceec77 100644
--- a/ElectronicsShop/ElectronicsShopShopClientApp/Controllers/HomeController.cs
+++ b/ElectronicsShop/ElectronicsShopShopClientApp/Controllers/HomeController.cs
@@ -2,6 +2,7 @@ using ElectronicsShopContracts.BindingModels;
using ElectronicsShopContracts.BusinessLogicContracts;
using ElectronicsShopContracts.SearchModels;
using ElectronicsShopContracts.ViewModels;
+using ElectronicsShopDataModels.Enums;
using ElectronicsShopDataModels.Models;
using ElectronicsShopUserApp.Models;
using Microsoft.AspNetCore.Mvc;
@@ -28,7 +29,7 @@ namespace ElectronicsShopUserApp.Controllers {
if (APIClient.Client == null) {
return Redirect("~/Home/Enter");
}
- return View(APIClient.GetRequset>($"api/main/getorders?_clientid={APIClient.Client.ID}"));
+ return View(APIClient.GetRequset>($"api/client/getpaymeants?_clientid={APIClient.Client.ID}"));
}
[HttpGet]
@@ -150,7 +151,7 @@ namespace ElectronicsShopUserApp.Controllers {
}
[HttpPost]
- public void EditOrder(int sum, int id) {
+ public void EditOrder(double sum, int id) {
if (sum <= 0) {
APIClient.PostRequest($"api/main/deleteorders", new OrderBindingModel { ID = id });
}
@@ -181,7 +182,7 @@ namespace ElectronicsShopUserApp.Controllers {
}
[HttpPost]
- public void OrderView(int sum, int id) {
+ public void OrderView(double sum, int id) {
if (sum <= 0) {
APIClient.PostRequest($"api/main/deleteorders", new OrderBindingModel { ID = id});
}
@@ -211,12 +212,6 @@ namespace ElectronicsShopUserApp.Controllers {
Response.Redirect("OrderView");
}
- [HttpPost]
- public double Calc(int count, int product)
- {
- var _product = APIClient.GetRequset($"api/main/getproduct?_productid={product}");
- return count * (_product?.Price ?? 1);
- }
[HttpGet]
public IActionResult Report()
{
@@ -233,6 +228,8 @@ namespace ElectronicsShopUserApp.Controllers {
//ViewBag.Reports = APIClient.GetRequset>($"api/main/getproducts");
return View();
}
+
+ [HttpGet]
public IActionResult Payment(int id)
{
if (APIClient.Client == null)
@@ -242,7 +239,7 @@ namespace ElectronicsShopUserApp.Controllers {
if (id == 0)
{
- return Redirect("Orders");
+ return Redirect("~/Home/Index");
}
var products = APIClient.GetRequset>>($"api/main/getorderproducts?_orderid={id}");
@@ -256,6 +253,39 @@ namespace ElectronicsShopUserApp.Controllers {
(int, Dictionary) tuple = (id, _productList);
return View(tuple);
}
+
+ [HttpPost]
+ public void Payment(double sum, double paysum, int id) {
+ if (APIClient.Client == null) {
+ throw new Exception(" ");
+ }
+ if (paysum <= 0) {
+ throw new Exception(" 0");
+ }
+ if (paysum > sum) {
+ throw new Exception(" ");
+ }
+ APIClient.PostRequest("api/client/createpaymeant", new PaymeantBindingModel {
+ OrderID = id,
+ SumPayment = paysum,
+ PayOption = PayOptionCalc(sum, paysum),
+ ClientID = APIClient.Client.ID
+ });
+ Response.Redirect("Index");
+ }
+
+ [HttpPost]
+ public PaymeantOption PayOptionCalc(double sum, double paysum) {
+ if (paysum < sum) {
+ return PaymeantOption._;
+ }
+ else if (paysum == sum) {
+ return PaymeantOption._;
+ }
+ else {
+ return PaymeantOption.;
+ }
+ }
}
}
diff --git a/ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Index.cshtml b/ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Index.cshtml
index 3464ddf..ff68e3e 100644
--- a/ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Index.cshtml
+++ b/ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Index.cshtml
@@ -1,6 +1,6 @@
@using ElectronicsShopContracts.ViewModels
-@model List
+@model List
@{
ViewData["Title"] = "Home Page";
@@ -20,14 +20,17 @@
+
+ Номер
+ |
Номер заказа
|
- Дата создания
+ Сумма к оплате
|
- Сумма
+ Статус оплаты
|
@@ -38,10 +41,13 @@
@Html.DisplayFor(modelItem => item.ID)
- @Html.DisplayFor(modelItem => item.DateCreate)
+ @Html.DisplayFor(modelItem => item.OrderID)
|
- @Html.DisplayFor(modelItem => item.Sum)
+ @Html.DisplayFor(modelItem => item.SumPayment)
+ |
+
+ @Html.DisplayFor(modelItem => item.PayOption)
|
}
diff --git a/ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Payment.cshtml b/ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Payment.cshtml
index 625e2c6..a978530 100644
--- a/ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Payment.cshtml
+++ b/ElectronicsShop/ElectronicsShopShopClientApp/Views/Home/Payment.cshtml
@@ -16,17 +16,23 @@
+
+
Сумма платежа:
+
+
+
+
+
+
+
Сумма к оплате:
+
+
+
+
+
@@ -70,28 +76,29 @@
-
+
\ No newline at end of file