add Furniture
This commit is contained in:
parent
8caf2860a6
commit
897acf6c08
@ -20,7 +20,6 @@ namespace FurnitureAssemblyDatabaseImplement.Implements
|
|||||||
return context.Furnitures
|
return context.Furnitures
|
||||||
.Include(x => x.User)
|
.Include(x => x.User)
|
||||||
.Include(x => x.Materials)
|
.Include(x => x.Materials)
|
||||||
.ThenInclude(x => x.Material).ToList()
|
|
||||||
.Select(x => x.GetViewModel).ToList();
|
.Select(x => x.GetViewModel).ToList();
|
||||||
}
|
}
|
||||||
public List<FurnitureViewModel> GetFilteredList(FurnitureSearchModel model)
|
public List<FurnitureViewModel> GetFilteredList(FurnitureSearchModel model)
|
||||||
@ -81,6 +80,7 @@ namespace FurnitureAssemblyDatabaseImplement.Implements
|
|||||||
{
|
{
|
||||||
var furniture = context.Furnitures
|
var furniture = context.Furnitures
|
||||||
.Include(x => x.User)
|
.Include(x => x.User)
|
||||||
|
.Include(x => x.Materials)
|
||||||
.FirstOrDefault(rec => rec.Id == model.Id);
|
.FirstOrDefault(rec => rec.Id == model.Id);
|
||||||
if (furniture == null)
|
if (furniture == null)
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using FurnitureAssemblyContracts.BindingModels;
|
using FurnitureAssemblyContracts.BindingModels;
|
||||||
using FurnitureAssemblyContracts.ViewModels;
|
using FurnitureAssemblyContracts.ViewModels;
|
||||||
|
using FurnitureAssemblyDataModels.Models;
|
||||||
using FurnitureAssemblyStoreKeeperClientApp.Models;
|
using FurnitureAssemblyStoreKeeperClientApp.Models;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
@ -96,7 +97,8 @@ namespace FurnitureAssemblyStoreKeeperClientApp.Controllers
|
|||||||
Response.Redirect("Enter");
|
Response.Redirect("Enter");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
[HttpGet]
|
#region Scope
|
||||||
|
[HttpGet]
|
||||||
public IActionResult GetScopeList()
|
public IActionResult GetScopeList()
|
||||||
{
|
{
|
||||||
return View(APIClient.GetRequest<List<ScopeViewModel>>($"api/scope/GetScopeList"));
|
return View(APIClient.GetRequest<List<ScopeViewModel>>($"api/scope/GetScopeList"));
|
||||||
@ -177,7 +179,8 @@ namespace FurnitureAssemblyStoreKeeperClientApp.Controllers
|
|||||||
});
|
});
|
||||||
Response.Redirect("GetScopeList");
|
Response.Redirect("GetScopeList");
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
#region Material
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetMaterialsList()
|
public IActionResult GetMaterialsList()
|
||||||
{
|
{
|
||||||
@ -269,6 +272,127 @@ namespace FurnitureAssemblyStoreKeeperClientApp.Controllers
|
|||||||
});
|
});
|
||||||
Response.Redirect("GetMaterialsList");
|
Response.Redirect("GetMaterialsList");
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Furniture
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult GetFurnitureList()
|
||||||
|
{
|
||||||
|
|
||||||
|
return View(APIClient.GetRequest<List<FurnitureViewModel>>($"api/furniture/getfurniturelist"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult CreateFurniture()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public double Calc(int count, int furniture)
|
||||||
|
{
|
||||||
|
var prod = APIClient.GetRequest<FurnitureViewModel>($"api/main/getfurniture?furnitureId={furniture}"
|
||||||
|
);
|
||||||
|
return count * (prod?.Cost ?? 1);
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public void CreateFurniture(string name, int userId, int[] MaterialsIds, int[] counts)
|
||||||
|
{
|
||||||
|
if (APIClient.User == null)
|
||||||
|
{
|
||||||
|
throw new Exception("Вы как суда попали?");
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(name))
|
||||||
|
{
|
||||||
|
throw new Exception("Название не указано");
|
||||||
|
}
|
||||||
|
if(counts == null || MaterialsIds.Length != counts.Length)
|
||||||
|
{
|
||||||
|
throw new Exception("Неверно заполнены компоненты");
|
||||||
|
}
|
||||||
|
var materials = APIClient.GetRequest<List<MaterialViewModel>>($"api/material/getmateriallist");
|
||||||
|
Dictionary<int, (IMaterialModel, int)> FurnitureMaterials = new Dictionary<int, (IMaterialModel, int)>();
|
||||||
|
double cost = 0;
|
||||||
|
for(int i = 0; i<counts.Length; i++)
|
||||||
|
{
|
||||||
|
var elem = (materials.Where(m => m.Id == MaterialsIds[i]).FirstOrDefault(), counts[i]);
|
||||||
|
FurnitureMaterials.Add(MaterialsIds[i], elem);
|
||||||
|
cost += counts[i] * materials.Where(m => m.Id == MaterialsIds[i]).FirstOrDefault().Cost;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
APIClient.PostRequest("api/furniture/addfurniture", new FurnitureBindingModel
|
||||||
|
{
|
||||||
|
Name = name,
|
||||||
|
Cost = cost,
|
||||||
|
UserId = userId,
|
||||||
|
DateCreate = DateTime.UtcNow,
|
||||||
|
FurnitureMaterials = FurnitureMaterials
|
||||||
|
});
|
||||||
|
Response.Redirect("GetMaterialsList");
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult UpdateFurniture(int id)
|
||||||
|
{
|
||||||
|
if (APIClient.User == null)
|
||||||
|
{
|
||||||
|
return Redirect("~/Home/Enter");
|
||||||
|
}
|
||||||
|
var model = APIClient.GetRequest<FurnitureViewModel>($"api/furniture/GetFurniture?id={id}");
|
||||||
|
return View(model);
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public void UpdateFurniture(int id, string name, double cost, int userId, int[] MaterialsIds, int[] counts)
|
||||||
|
{
|
||||||
|
if (APIClient.User == null)
|
||||||
|
{
|
||||||
|
throw new Exception("Вы как суда попали?");
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(name))
|
||||||
|
{
|
||||||
|
throw new Exception("Название не указано");
|
||||||
|
}
|
||||||
|
var materials = APIClient.GetRequest<List<MaterialViewModel>>($"api/material/getmateriallist");
|
||||||
|
Dictionary<int, (IMaterialModel, int)> FurnitureMaterials = new Dictionary<int, (IMaterialModel, int)>();
|
||||||
|
double price = 0;
|
||||||
|
for (int i = 0; i < counts.Length; i++)
|
||||||
|
{
|
||||||
|
var elem = (materials.Where(m => m.Id == MaterialsIds[i]).FirstOrDefault(), counts[i]);
|
||||||
|
FurnitureMaterials.Add(MaterialsIds[i], elem);
|
||||||
|
price += elem.Item1.Cost * elem.Item2;
|
||||||
|
}
|
||||||
|
APIClient.PostRequest("api/furniture/updatefurniture", new FurnitureBindingModel
|
||||||
|
{
|
||||||
|
Id = id,
|
||||||
|
Name = name,
|
||||||
|
Cost = price,
|
||||||
|
UserId=userId,
|
||||||
|
FurnitureMaterials = FurnitureMaterials
|
||||||
|
});
|
||||||
|
Response.Redirect("GetFurnitureList");
|
||||||
|
}
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult DeleteFurniture()
|
||||||
|
{
|
||||||
|
if (APIClient.User == null)
|
||||||
|
{
|
||||||
|
return Redirect("~/Home/Enter");
|
||||||
|
}
|
||||||
|
return View(APIClient.GetRequest<List<FurnitureViewModel>>($"api/furniture/GetFurnitureList"));
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public void DeleteFurniture(int furniture)
|
||||||
|
{
|
||||||
|
if (APIClient.User == null)
|
||||||
|
{
|
||||||
|
throw new Exception("Вы как суда попали");
|
||||||
|
}
|
||||||
|
APIClient.PostRequest("api/furniture/deletefurniture", new MaterialBindingModel
|
||||||
|
{
|
||||||
|
Id = furniture,
|
||||||
|
});
|
||||||
|
Response.Redirect("GetFurnitureList");
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,95 @@
|
|||||||
|
@using FurnitureAssemblyContracts.ViewModels
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "Создание мебели";
|
||||||
|
var materialList = APIClient.GetRequest<List<MaterialViewModel>>($"api/material/GetMaterialList");
|
||||||
|
var userList = APIClient.GetRequest<List<UserViewModel>>($"api/user/GetUserList");
|
||||||
|
}
|
||||||
|
<div class="text-center">
|
||||||
|
<h2 class="display-4">Создание мебели</h2>
|
||||||
|
</div>
|
||||||
|
<form method="post">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">Название:</div>
|
||||||
|
<div class="col-8"><input type="text" name="name" id="name" /></div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">Стоимость:</div>
|
||||||
|
<div class="col-8"><input type="text" name="cost" id="cost" /></div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">Изготовитель:</div>
|
||||||
|
|
||||||
|
<div class="col-8">
|
||||||
|
<select name="userId">
|
||||||
|
<option value="0" disabled></option>
|
||||||
|
@foreach (var user in userList)
|
||||||
|
{
|
||||||
|
<option value="@user.Id">
|
||||||
|
@Html.DisplayFor(modelItem => user.Name)
|
||||||
|
</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<table class="table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Название
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Стоимость
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Количество
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach (var item in materialList)
|
||||||
|
{
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" class="form-check-input" name="MaterialsIds[]" value="@item.Id" id="@item.Id">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@Html.DisplayFor(modelItem => item.Name)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@Html.DisplayFor(modelItem => item.Cost)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" id="@item.Id:count" name="counts[]" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-8"></div>
|
||||||
|
<div class="col-4"><input type="submit" value="Создать" class="btn btn-primary" /></div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<script>
|
||||||
|
$('#furniture').on('change', function () {
|
||||||
|
check();
|
||||||
|
});
|
||||||
|
$('#count').on('change', function () {
|
||||||
|
check();
|
||||||
|
});
|
||||||
|
function check() {
|
||||||
|
var count = $('#count').val();
|
||||||
|
var furniture = $('#furniture').val();
|
||||||
|
if (count && furniture) {
|
||||||
|
$.ajax({
|
||||||
|
method: "POST",
|
||||||
|
url: "/Home/Calc",
|
||||||
|
data: { count: count, furniture: furniture },
|
||||||
|
success: function (result) {
|
||||||
|
$("#cost").val(result);}});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,27 @@
|
|||||||
|
@using FurnitureAssemblyContracts.ViewModels;
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "Удаление мебели";
|
||||||
|
}
|
||||||
|
@model List<FurnitureViewModel>
|
||||||
|
<div class="text-center">
|
||||||
|
<h2 class="display-4">Удаление мебели</h2>
|
||||||
|
</div>
|
||||||
|
<form method="post">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">Выбранная мебель:</div>
|
||||||
|
<div class="col-8">
|
||||||
|
<select id="furniture" name="furniture" class="form-control">
|
||||||
|
@foreach (var item in Model)
|
||||||
|
{
|
||||||
|
<option value="@item.Id">
|
||||||
|
@Html.DisplayFor(modelItem => item.Name)
|
||||||
|
</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-8"></div>
|
||||||
|
<div class="col-4"><input type="submit" value="Удалить" class="btn btn-primary" /></div>
|
||||||
|
</div>
|
||||||
|
</form>
|
@ -1,5 +1,80 @@
|
|||||||
@*
|
@using FurnitureAssemblyContracts.ViewModels
|
||||||
For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
|
|
||||||
*@
|
@model List<FurnitureViewModel>
|
||||||
|
|
||||||
@{
|
@{
|
||||||
|
ViewData["Title"] = "Мебель";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<h1 class="display-4">Мебель</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
@{
|
||||||
|
if (Model == null)
|
||||||
|
{
|
||||||
|
<h3 class="display-4">Авторизируйтесь</h3>
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<a asp-action="CreateFurniture">Создать</a>
|
||||||
|
|
||||||
|
<a asp-action="DeleteFurniture">Удалить</a>
|
||||||
|
</div>
|
||||||
|
<table class="table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
Id
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Название
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Стоимость
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Дата создания
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Изготовитель
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach (var item in Model)
|
||||||
|
{
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
@Html.DisplayFor(modelItem => item.Id)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@Html.DisplayFor(modelItem => item.Name)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@Html.DisplayFor(modelItem => item.Cost)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@Html.DisplayFor(modelItem => item.DateCreate)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@Html.DisplayFor(modelItem => item.UserName)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-8"></div>
|
||||||
|
<a asp-action="UpdateFurniture" asp-route-id="@item.Id">Обновить</a>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
}
|
||||||
|
</div>
|
@ -0,0 +1,93 @@
|
|||||||
|
@using FurnitureAssemblyContracts.ViewModels
|
||||||
|
@model FurnitureViewModel
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "Обновление мебели";
|
||||||
|
var materialList = APIClient.GetRequest<List<MaterialViewModel>>($"api/material/GetMaterialList");
|
||||||
|
var userList = APIClient.GetRequest<List<UserViewModel>>($"api/user/GetUserList");
|
||||||
|
}
|
||||||
|
<div class="text-center">
|
||||||
|
<h2 class="display-4">Обновление мебели</h2>
|
||||||
|
</div>
|
||||||
|
<form method="post">
|
||||||
|
<div class="row" id = @Model.Id>
|
||||||
|
<div class="col-4">Название:</div>
|
||||||
|
<div class="col-8"><input type="text" name="name" id="name" value=@Model.Name /></div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">Стоимость:</div>
|
||||||
|
<div class="col-8">@Html.DisplayFor(modelItem => Model.Cost)</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">Изготовитель:</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-8">
|
||||||
|
<select id="userId" name="userId" class="form-control" onselect = @Model.UserName>
|
||||||
|
@foreach (var item in userList)
|
||||||
|
{
|
||||||
|
<option value="@item.Id">
|
||||||
|
@Html.DisplayFor(modelItem => item.Name)
|
||||||
|
</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Название
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Стоимость
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Количество
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Изготовитель
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach (var item in materialList)
|
||||||
|
{
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
@if(Model.FurnitureMaterials.Keys.Contains(item.Id))
|
||||||
|
{
|
||||||
|
<input type="checkbox" class="form-check-input" name="MaterialsIds[]" value="@item.Id" id="@item.Id" checked = true>
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<input type="checkbox" class="form-check-input" name="MaterialsIds[]" value="@item.Id" id="@item.Id">
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@Html.DisplayFor(modelItem => item.Name)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@Html.DisplayFor(modelItem => item.Cost)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="text" id="@item.Id:count" name="counts[]" />
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@Html.DisplayFor(modelItem => item.UserName)
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-8"></div>
|
||||||
|
<div class="col-4"><input type="submit" value="Изменить" class="btn btn-primary" /></div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
@ -32,10 +32,7 @@
|
|||||||
<div class="col-4">Стоимость:</div>
|
<div class="col-4">Стоимость:</div>
|
||||||
<div class="col-8"><input type="text" name="cost" id="cost" /></div>
|
<div class="col-8"><input type="text" name="cost" id="cost" /></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
|
||||||
<div class="col-8"></div>
|
|
||||||
<div class="col-4"><input type="submit" value="Изменить" class="btn btn-primary" /></div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-4">Область применения:</div>
|
<div class="col-4">Область применения:</div>
|
||||||
<div class="col-8">
|
<div class="col-8">
|
||||||
@ -62,5 +59,9 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-8"></div>
|
||||||
|
<div class="col-4"><input type="submit" value="Изменить" class="btn btn-primary" /></div>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Мебель</a>
|
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="GetFurnitureList">Мебель</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="GetMaterialsList">Материалы</a>
|
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="GetMaterialsList">Материалы</a>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user