This commit is contained in:
Илья Федотов 2024-06-01 05:00:05 +04:00
parent 277588130b
commit 0cbba88298
11 changed files with 88 additions and 54 deletions

View File

@ -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}");
}

View File

@ -12,8 +12,6 @@ namespace ElectronicsShopContracts.BindingModels
{
public int ID { get; set; }
public int ProductID { get; set; }
public int OrderID { get; set; }
public double SumPayment { get; set; }

View File

@ -12,8 +12,8 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace ElectronicsShopDataBaseImplement.Migrations
{
[DbContext(typeof(Database))]
[Migration("20240531153626_Init")]
partial class Init
[Migration("20240601002930_InitMigration")]
partial class InitMigration
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@ -200,9 +200,6 @@ namespace ElectronicsShopDataBaseImplement.Migrations
b.Property<int?>("PaymentID")
.HasColumnType("int");
b.Property<int>("ProductID")
.HasColumnType("int");
b.Property<double>("SumPayment")
.HasColumnType("float");

View File

@ -6,7 +6,7 @@ using Microsoft.EntityFrameworkCore.Migrations;
namespace ElectronicsShopDataBaseImplement.Migrations
{
/// <inheritdoc />
public partial class Init : Migration
public partial class InitMigration : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
@ -111,7 +111,6 @@ namespace ElectronicsShopDataBaseImplement.Migrations
{
ID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ProductID = table.Column<int>(type: "int", nullable: false),
OrderID = table.Column<int>(type: "int", nullable: false),
SumPayment = table.Column<double>(type: "float", nullable: false),
PayOption = table.Column<int>(type: "int", nullable: false),

View File

@ -197,9 +197,6 @@ namespace ElectronicsShopDataBaseImplement.Migrations
b.Property<int?>("PaymentID")
.HasColumnType("int");
b.Property<int>("ProductID")
.HasColumnType("int");
b.Property<double>("SumPayment")
.HasColumnType("float");

View File

@ -17,9 +17,6 @@ namespace ElectronicsShopDataBaseImplement.Models
{
public int ID { get; set; }
[ForeignKey("ProductID")]
public int ProductID { get; set; }
[ForeignKey("OrderID")]
public int OrderID { get; set; }
@ -38,7 +35,6 @@ namespace ElectronicsShopDataBaseImplement.Models
return new Paymeant()
{
ID = model.ID,
ProductID = model.ProductID,
OrderID = model.OrderID,
SumPayment = model.SumPayment,
PayOption = model.PayOption,
@ -50,7 +46,6 @@ namespace ElectronicsShopDataBaseImplement.Models
{
return;
}
ProductID = model.ProductID;
OrderID = model.OrderID;
SumPayment = model.SumPayment;
PayOption = model.PayOption;
@ -59,7 +54,6 @@ namespace ElectronicsShopDataBaseImplement.Models
public PaymeantViewModel GetViewModel => new()
{
ID = ID,
ProductID = ProductID,
OrderID = OrderID,
SumPayment = SumPayment,
PayOption = PayOption,

View File

@ -10,7 +10,6 @@ namespace ElectronicsShopDataModels.Models
{
public interface IPaymentModel: IID
{
int ProductID { get; }
int OrderID { get; }
double SumPayment { get; }
PaymeantOption PayOption { get; }

View File

@ -13,10 +13,12 @@ namespace ElectronicsShopRestAPI.Controllers {
private readonly ILogger _logger;
private readonly IClientLogic _logic;
private readonly IPaymeantLogic _payLogic;
public ClientController(ILogger<ClientController> logger, IClientLogic logic) {
public ClientController(ILogger<ClientController> logger, IClientLogic logic, IPaymeantLogic payLogic) {
_logger = logger;
_logic = logic;
_payLogic = payLogic;
}
[HttpGet]
@ -54,5 +56,15 @@ namespace ElectronicsShopRestAPI.Controllers {
throw;
}
}
[HttpPost]
public void CreatePaymeant (PaymeantBindingModel model) {
try {
_payLogic.CreatePay(model);
}
catch (Exception ex) {
_logger.LogError(ex, "Ошибка создания оплаты");
}
}
}
}

View File

@ -15,12 +15,14 @@ builder.Services.AddTransient<IEmployeeStorage, EmployeeStorage>();
builder.Services.AddTransient<IProductStorage, ProductStorage>();
builder.Services.AddTransient<IOrderStorage, OrderStorage>();
builder.Services.AddTransient<ICostItemStorage, CostItemStorage>();
builder.Services.AddTransient<IPaymeantStorage, PaymeantStorage>();
builder.Services.AddTransient<IClientLogic, ClientLogic>();
builder.Services.AddTransient<IEmployeeLogic, EmployeeLogic>();
builder.Services.AddTransient<IProductLogic, ProductLogic>();
builder.Services.AddTransient<IOrderLogic, OrderLogic>();
builder.Services.AddTransient<ICostItemLogic, CostItemLogic>();
builder.Services.AddTransient<IPaymeantLogic, PaymeantLogic>();
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle

View File

@ -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;
@ -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<ProductViewModel>($"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<List<ProductViewModel>>($"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<List<List<string>>>($"api/main/getorderproducts?_orderid={id}");
@ -256,6 +253,38 @@ namespace ElectronicsShopUserApp.Controllers {
(int, Dictionary<int, (IProductModel, int)>) 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 = sum,
PayOption = PayOptionCalc(sum, paysum)
});
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.Íåîïëà÷åíî;
}
}
}
}

View File

@ -16,17 +16,23 @@
<div class="col-4"></div>
<div class="col-8">
<input id="id" type="hidden" name="id" readonly value="@Model.Item1" />
<div class="row">
<div class="col-4">Сумма платежа:</div>
<div class="col-8">
<input type="text" name="paysum" id="paysum" />
<input type="submit" value="Оплатить!" class="btn btn-primary" />
</div>
</div>
</div>
</div>
<div class=" text-center">
<div class="row">
<div class="col-4">Сумма платежа:</div>
<div class="col-8">
<input type="text" name="paysum" id="paysum" />
</div>
</div>
<div class="row">
<div class="col-4">Сумма к оплате:</div>
<div class="col-8">
<input type="text" name="sum" id="sum" readonly />
</divЫ>
<input type="submit" value="Оплатить!" class="btn btn-primary" />
</div>
<table class="table">
<thead>
<tr>
@ -70,28 +76,29 @@
<div class="row">
<div class="col-4"></div>
<div class="col-8">
<input type="submit" value="Заказ готов, вернуться!" class="btn btn-primary" />
<a class="btn btn-primary btn-sm" asp-action="Index">Отменить - вернуться на главную страницу</a>
</div>
</div>
</div>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
</form>
<script>
$('#paysum').on('change', function () {
check();
$('#btn').on('click', function () {
calc();
});
function check() {
var paysum = $('#paysum').val();
if (count && product) {
$.ajax({
method: "POST",
url: "/Home/Calc",
data: { paysum: paysum },
success: function (result) {
$("#sum").val(result);
}
});
};
let sum = 0;
const elementRows = document.querySelectorAll('.element');
calc();
function calc() {
elementRows.forEach(row => {
const count = parseInt(row.querySelector('.count').innerHTML, 10);
const countsum = parseInt(row.querySelector('.countsum').innerHTML, 10);
const rowTotal = count * countsum;
sum += rowTotal;
});
$('#sum').val(sum);
}
</script>