Траблы с заказом
This commit is contained in:
parent
9b14abf7e3
commit
06baeba759
@ -5,11 +5,7 @@ using ElectronicsShopContracts.StorageContracts;
|
|||||||
using ElectronicsShopContracts.ViewModels;
|
using ElectronicsShopContracts.ViewModels;
|
||||||
using ElectronicsShopDataModels.Enums;
|
using ElectronicsShopDataModels.Enums;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace ElectronicsShopBusinessLogic.BusinessLogic
|
namespace ElectronicsShopBusinessLogic.BusinessLogic
|
||||||
{
|
{
|
||||||
@ -63,7 +59,7 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
|
|||||||
{
|
{
|
||||||
if (model == null) throw new ArgumentNullException(nameof(model));
|
if (model == null) throw new ArgumentNullException(nameof(model));
|
||||||
_logger.LogInformation($"ReadElement. ID:{model.ID}");
|
_logger.LogInformation($"ReadElement. ID:{model.ID}");
|
||||||
var element = _storage.GetElement(model);
|
var element = _storage.GetElement(model);//Не находит в бд
|
||||||
if (element == null)
|
if (element == null)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("ReadElement. elementn not found");
|
_logger.LogWarning("ReadElement. elementn not found");
|
||||||
@ -72,5 +68,6 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
|
|||||||
_logger.LogInformation($"ReadElement find. ID:{element.ID}");
|
_logger.LogInformation($"ReadElement find. ID:{element.ID}");
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,5 +78,42 @@ namespace ElectronicsShopRestAPI.Controllers {
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
[HttpGet]
|
||||||
|
public List<OrderViewModel>? GetAddProduct(int _clientID,int _orderID)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return _order.ReadList(new OrderSearchModel
|
||||||
|
{
|
||||||
|
ID = _orderID,
|
||||||
|
ClientID = _clientID
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка получения списка заказов клиента id = {Id} ", _clientID);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public void AddProduct(OrderBindingModel model)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var order=_order.ReadElement(new OrderSearchModel { ID = model.ID });//возвращает null
|
||||||
|
if (model != null&& order!=null)
|
||||||
|
{
|
||||||
|
order.ProductList = model.ProductList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка создания заказа");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using ElectronicsShopContracts.BindingModels;
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
using ElectronicsShopContracts.ViewModels;
|
using ElectronicsShopContracts.ViewModels;
|
||||||
using ElectronicsShopDataModels.Models;
|
using ElectronicsShopDataModels.Models;
|
||||||
using ElectronicsShopUserApp.Models;
|
using ElectronicsShopUserApp.Models;
|
||||||
@ -91,31 +92,26 @@ namespace ElectronicsShopUserApp.Controllers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult Create() {
|
public IActionResult CreateOrder() {
|
||||||
ViewBag.Products = APIClient.GetRequset<List<ProductViewModel>>("api/main/getproducts");
|
ViewBag.Products = APIClient.GetRequset<List<ProductViewModel>>("api/main/getproducts");
|
||||||
|
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public void Create(OrderBindingModel order) {
|
public void CreateOrder(OrderBindingModel order) {
|
||||||
if (APIClient.Client == null)
|
if (APIClient.Client == null)
|
||||||
{
|
{
|
||||||
throw new Exception("Âû êàê ñóäà ïîïàëè? Ñóäà âõîä òîëüêî àâòîðèçîâàííûì");
|
throw new Exception("Âû êàê ñóäà ïîïàëè? Ñóäà âõîä òîëüêî àâòîðèçîâàííûì");
|
||||||
}
|
}
|
||||||
if (order.ProductList.Count <= 0)
|
if (order.ProductList.Count > 0)
|
||||||
{
|
{
|
||||||
throw new Exception("Êîëè÷åñòâî è ñóììà äîëæíû áûòü áîëüøå 0");
|
throw new Exception("Êîëè÷åñòâî è ñóììà äîëæíû áûòü áîëüøå 0");
|
||||||
}
|
}
|
||||||
APIClient.PostRequest("api/main/createorder", new OrderBindingModel
|
|
||||||
{
|
|
||||||
ClientID = APIClient.Client.ID,
|
|
||||||
Sum = Calc(order.ProductList),
|
|
||||||
ProductList = order.ProductList,
|
|
||||||
DateCreate = DateTime.Now,
|
|
||||||
});
|
|
||||||
Response.Redirect("Index");
|
Response.Redirect("Index");
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
private double Calc(Dictionary<int, (IProductModel, int)> ProductList)
|
private double CalcAll(Dictionary<int, (IProductModel, int)> ProductList)
|
||||||
{
|
{
|
||||||
Double Sum = 0;
|
Double Sum = 0;
|
||||||
foreach (var ProductItem in ProductList)
|
foreach (var ProductItem in ProductList)
|
||||||
@ -124,5 +120,37 @@ namespace ElectronicsShopUserApp.Controllers {
|
|||||||
}
|
}
|
||||||
return Sum;
|
return Sum;
|
||||||
}
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public double CalcProduct(int count, int product)
|
||||||
|
{
|
||||||
|
var prod =
|
||||||
|
APIClient.GetRequset<ProductViewModel>($"api/main/getproduct?productID={product}"
|
||||||
|
);
|
||||||
|
return count * (prod?.Price ?? 1);
|
||||||
|
}
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult AddProduct()
|
||||||
|
{
|
||||||
|
ViewBag.Products = APIClient.GetRequset<List<ProductViewModel>>("api/main/getproducts");
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public void AddProduct(int count)
|
||||||
|
{
|
||||||
|
if (APIClient.Client == null)
|
||||||
|
{
|
||||||
|
throw new Exception("Âû êàê ñóäà ïîïàëè? Ñóäà âõîä òîëüêî àâòîðèçîâàííûì");
|
||||||
|
}
|
||||||
|
if (count <= 0)
|
||||||
|
{
|
||||||
|
throw new Exception("Êîëè÷åñòâî è ñóììà äîëæíû áûòü áîëüøå 0");
|
||||||
|
}
|
||||||
|
APIClient.PostRequest("api/main/addproduct", new OrderSearchModel
|
||||||
|
{
|
||||||
|
ID = 1,
|
||||||
|
ClientID=APIClient.Client.ID,
|
||||||
|
});
|
||||||
|
Response.Redirect("CreateOrder");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["Title"] = "Create";
|
ViewData["Title"] = "Add Product";
|
||||||
}
|
}
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<h2 class="display-4">Создание заказа</h2>
|
<h2 class="display-4">Создание заказа</h2>
|
||||||
@ -31,7 +31,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-8"></div>
|
<div class="col-8"></div>
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
<input type="submit" value="Создать" class="btn btn-primary" />
|
<input type="submit" value="Добавить" class="btn btn-primary" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
@ -48,8 +48,8 @@
|
|||||||
if (count && product) {
|
if (count && product) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
url: "/Home/Calc",
|
url: "/Home/CalcProduct",
|
||||||
data: { count: count, product: product },
|
data: { count: count, product: product.price },
|
||||||
success: function (result) {
|
success: function (result) {
|
||||||
var roundedResult = parseFloat(result).toFixed(2);
|
var roundedResult = parseFloat(result).toFixed(2);
|
||||||
$("#sum").val(roundedResult);
|
$("#sum").val(roundedResult);
|
@ -0,0 +1,55 @@
|
|||||||
|
@using ElectronicsShopContracts.ViewModels
|
||||||
|
|
||||||
|
@model OrderViewModel
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "Create Order";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<p>
|
||||||
|
<a asp-action="AddProduct">Добавть продукт в корзину</a>
|
||||||
|
</p>
|
||||||
|
<div class="col-4">
|
||||||
|
<input type="submit" value="Создать заказ" class="btn btn-primary" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<h1 class="display-4">Корзина</h1>
|
||||||
|
@{
|
||||||
|
<table class="table">
|
||||||
|
<thead>
|
||||||
|
<th>
|
||||||
|
<th>
|
||||||
|
Продукт
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Количество
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Сумма
|
||||||
|
</th>
|
||||||
|
</th>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@if(Model!=null){
|
||||||
|
@foreach (var item in Model.ProductList)
|
||||||
|
{
|
||||||
|
<th>
|
||||||
|
<th>
|
||||||
|
@Html.DisplayFor(modelItem => item.Value.Item1.ProductName)
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
@Html.DisplayFor(modelItem => item.Value.Item2)
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
@Html.DisplayFor(modelItem => item.Value.Item1.Price*item.Value.Item2)
|
||||||
|
</th>
|
||||||
|
</th>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
}
|
||||||
|
</div>
|
@ -18,7 +18,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
<p>
|
<p>
|
||||||
<a asp-action="Create">Создать заказ</a>
|
<a asp-action="CreateOrder">Создать заказ</a>
|
||||||
</p>
|
</p>
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead>
|
<thead>
|
||||||
|
Loading…
Reference in New Issue
Block a user