fix furniture
This commit is contained in:
parent
83943268b6
commit
543946a9fe
@ -18,8 +18,9 @@ namespace FurnitureAssemblyDatabaseImplement.Implements
|
|||||||
{
|
{
|
||||||
using var context = new FurnitureAssemblyDatabase();
|
using var context = new FurnitureAssemblyDatabase();
|
||||||
return context.Furnitures
|
return context.Furnitures
|
||||||
.Include(x => x.User)
|
|
||||||
.Include(x => x.Materials)
|
.Include(x => x.Materials)
|
||||||
|
.ThenInclude(x => x.Material)
|
||||||
|
.Include(x => x.User)
|
||||||
.Select(x => x.GetViewModel).ToList();
|
.Select(x => x.GetViewModel).ToList();
|
||||||
}
|
}
|
||||||
public List<FurnitureViewModel> GetFilteredList(FurnitureSearchModel model)
|
public List<FurnitureViewModel> GetFilteredList(FurnitureSearchModel model)
|
||||||
@ -70,7 +71,7 @@ namespace FurnitureAssemblyDatabaseImplement.Implements
|
|||||||
}
|
}
|
||||||
context.Furnitures.Add(newFurniture);
|
context.Furnitures.Add(newFurniture);
|
||||||
context.SaveChanges();
|
context.SaveChanges();
|
||||||
return newFurniture.GetViewModel;
|
return context.Furnitures.Include(x => x.Materials).Include(x => x.User).FirstOrDefault(x => x.Id == newFurniture.Id)?.GetViewModel;
|
||||||
}
|
}
|
||||||
public FurnitureViewModel? Update(FurnitureBindingModel model)
|
public FurnitureViewModel? Update(FurnitureBindingModel model)
|
||||||
{
|
{
|
||||||
@ -79,8 +80,9 @@ namespace FurnitureAssemblyDatabaseImplement.Implements
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var furniture = context.Furnitures
|
var furniture = context.Furnitures
|
||||||
.Include(x => x.User)
|
|
||||||
.Include(x => x.Materials)
|
.Include(x => x.Materials)
|
||||||
|
.Include(x => x.User)
|
||||||
|
.ThenInclude(x => x.Role)
|
||||||
.FirstOrDefault(rec => rec.Id == model.Id);
|
.FirstOrDefault(rec => rec.Id == model.Id);
|
||||||
if (furniture == null)
|
if (furniture == null)
|
||||||
{
|
{
|
||||||
@ -90,7 +92,7 @@ namespace FurnitureAssemblyDatabaseImplement.Implements
|
|||||||
context.SaveChanges();
|
context.SaveChanges();
|
||||||
furniture.UpdateMaterials(context, model);
|
furniture.UpdateMaterials(context, model);
|
||||||
transaction.Commit();
|
transaction.Commit();
|
||||||
return furniture.GetViewModel;
|
return context.Furnitures.Include(x => x.Materials).Include(x => x.User).FirstOrDefault(x => x.Id == model.Id)?.GetViewModel;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
@ -24,6 +24,7 @@ namespace FurnitureAssemblyDatabaseImplement.Models
|
|||||||
[Required]
|
[Required]
|
||||||
public int UserId { get; set; }
|
public int UserId { get; set; }
|
||||||
public virtual User User { get; set; }
|
public virtual User User { get; set; }
|
||||||
|
|
||||||
public Dictionary<int, (IMaterialModel, int)>? _furnitureMaterials = null;
|
public Dictionary<int, (IMaterialModel, int)>? _furnitureMaterials = null;
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public Dictionary<int, (IMaterialModel, int)> FurnitureMaterials
|
public Dictionary<int, (IMaterialModel, int)> FurnitureMaterials
|
||||||
@ -82,9 +83,11 @@ namespace FurnitureAssemblyDatabaseImplement.Models
|
|||||||
rec.FurnitureId == model.Id).ToList();
|
rec.FurnitureId == model.Id).ToList();
|
||||||
if (furnitureMaterials != null && furnitureMaterials.Count > 0)
|
if (furnitureMaterials != null && furnitureMaterials.Count > 0)
|
||||||
{ // удалили те, которых нет в модели
|
{ // удалили те, которых нет в модели
|
||||||
context.FurnitureMaterials.RemoveRange(furnitureMaterials.Where(rec
|
var last = furnitureMaterials.Where(rec
|
||||||
=> !model.FurnitureMaterials.ContainsKey(rec.MaterialId)));
|
=> !model.FurnitureMaterials.ContainsKey(rec.MaterialId));
|
||||||
|
context.FurnitureMaterials.RemoveRange(last);
|
||||||
context.SaveChanges();
|
context.SaveChanges();
|
||||||
|
last.ToList().ForEach(l => furnitureMaterials.Remove(l));
|
||||||
// обновили количество у существующих записей
|
// обновили количество у существующих записей
|
||||||
foreach (var updateMaterial in furnitureMaterials)
|
foreach (var updateMaterial in furnitureMaterials)
|
||||||
{
|
{
|
||||||
|
@ -21,7 +21,7 @@ namespace FurnitureAssemblyDatabaseImplement.Models
|
|||||||
public double Cost { get; set; }
|
public double Cost { get; set; }
|
||||||
[Required]
|
[Required]
|
||||||
public int ScopeId { get; set; }
|
public int ScopeId { get; set; }
|
||||||
public virtual Scope Scope { get; set; }
|
public virtual Scope Scope { get; set; } = new();
|
||||||
[Required]
|
[Required]
|
||||||
public int UserId { get; set; }
|
public int UserId { get; set; }
|
||||||
public virtual User User { get; set; }
|
public virtual User User { get; set; }
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
using FurnitureAssemblyContracts.BindingModels;
|
using FurnitureAssemblyContracts.BindingModels;
|
||||||
|
using FurnitureAssemblyContracts.SearchModels;
|
||||||
|
using FurnitureAssemblyContracts.StorageContracts;
|
||||||
using FurnitureAssemblyContracts.ViewModels;
|
using FurnitureAssemblyContracts.ViewModels;
|
||||||
using FurnitureAssemblyDataModels.Models;
|
using FurnitureAssemblyDataModels.Models;
|
||||||
using FurnitureAssemblyStoreKeeperClientApp.Models;
|
using FurnitureAssemblyStoreKeeperClientApp.Models;
|
||||||
@ -10,10 +12,11 @@ namespace FurnitureAssemblyStoreKeeperClientApp.Controllers
|
|||||||
public class HomeController : Controller
|
public class HomeController : Controller
|
||||||
{
|
{
|
||||||
private readonly ILogger<HomeController> _logger;
|
private readonly ILogger<HomeController> _logger;
|
||||||
|
private readonly IFurnitureStorage _furnitureStorage;
|
||||||
public HomeController(ILogger<HomeController> logger)
|
public HomeController(ILogger<HomeController> logger, IFurnitureStorage furnitureStorage)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_furnitureStorage = furnitureStorage;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IActionResult Index()
|
public IActionResult Index()
|
||||||
@ -278,8 +281,8 @@ namespace FurnitureAssemblyStoreKeeperClientApp.Controllers
|
|||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetFurnitureList()
|
public IActionResult GetFurnitureList()
|
||||||
{
|
{
|
||||||
|
return View(_furnitureStorage.GetFullList());
|
||||||
return View(APIClient.GetRequest<List<FurnitureViewModel>>($"api/furniture/getfurniturelist"));
|
//return View(APIClient.GetRequest<List<FurnitureViewModel>>($"api/furniture/getfurniturelist"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
@ -319,15 +322,22 @@ namespace FurnitureAssemblyStoreKeeperClientApp.Controllers
|
|||||||
cost += counts[i] * materials.Where(m => m.Id == MaterialsIds[i]).FirstOrDefault().Cost;
|
cost += counts[i] * materials.Where(m => m.Id == MaterialsIds[i]).FirstOrDefault().Cost;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
_furnitureStorage.Insert(new FurnitureBindingModel
|
||||||
APIClient.PostRequest("api/furniture/addfurniture", new FurnitureBindingModel
|
|
||||||
{
|
{
|
||||||
Name = name,
|
Name = name,
|
||||||
Cost = cost,
|
Cost = cost,
|
||||||
UserId = userId,
|
UserId = userId,
|
||||||
DateCreate = DateTime.UtcNow,
|
FurnitureMaterials = FurnitureMaterials,
|
||||||
FurnitureMaterials = FurnitureMaterials
|
DateCreate = DateTime.UtcNow
|
||||||
});
|
});
|
||||||
|
//APIClient.PostRequest("api/furniture/addfurniture", new FurnitureBindingModel
|
||||||
|
//{
|
||||||
|
// Name = name,
|
||||||
|
// Cost = cost,
|
||||||
|
// UserId = userId,
|
||||||
|
// DateCreate = DateTime.UtcNow,
|
||||||
|
// FurnitureMaterials = FurnitureMaterials
|
||||||
|
//});
|
||||||
Response.Redirect("GetMaterialsList");
|
Response.Redirect("GetMaterialsList");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -338,8 +348,19 @@ namespace FurnitureAssemblyStoreKeeperClientApp.Controllers
|
|||||||
{
|
{
|
||||||
return Redirect("~/Home/Enter");
|
return Redirect("~/Home/Enter");
|
||||||
}
|
}
|
||||||
var model = APIClient.GetRequest<FurnitureViewModel>($"api/furniture/GetFurniture?id={id}");
|
var model = _furnitureStorage.GetElement(new FurnitureSearchModel
|
||||||
return View(model);
|
{
|
||||||
|
Id = id
|
||||||
|
|
||||||
|
});
|
||||||
|
if(model!= null)
|
||||||
|
{
|
||||||
|
return View(model);
|
||||||
|
|
||||||
|
}
|
||||||
|
else return Redirect("~/Home/GetFurnitureList");
|
||||||
|
//var model = APIClient.GetRequest<FurnitureViewModel>($"api/furniture/GetFurniture?id={id}");
|
||||||
|
//return model != null ? View(model) : RedirectToPage("GetFurnitureList");
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public void UpdateFurniture(int id, string name, double cost, int userId, int[] MaterialsIds, int[] counts)
|
public void UpdateFurniture(int id, string name, double cost, int userId, int[] MaterialsIds, int[] counts)
|
||||||
@ -361,14 +382,15 @@ namespace FurnitureAssemblyStoreKeeperClientApp.Controllers
|
|||||||
FurnitureMaterials.Add(MaterialsIds[i], elem);
|
FurnitureMaterials.Add(MaterialsIds[i], elem);
|
||||||
price += elem.Item1.Cost * elem.Item2;
|
price += elem.Item1.Cost * elem.Item2;
|
||||||
}
|
}
|
||||||
APIClient.PostRequest("api/furniture/updatefurniture", new FurnitureBindingModel
|
_furnitureStorage.Update(new FurnitureBindingModel
|
||||||
{
|
{
|
||||||
Id = id,
|
Id = id,
|
||||||
Name = name,
|
Name = name,
|
||||||
Cost = price,
|
Cost = price,
|
||||||
UserId=userId,
|
UserId = userId,
|
||||||
FurnitureMaterials = FurnitureMaterials
|
FurnitureMaterials = FurnitureMaterials
|
||||||
});
|
});
|
||||||
|
|
||||||
Response.Redirect("GetFurnitureList");
|
Response.Redirect("GetFurnitureList");
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\FurnitureAssemblyContracts\FurnitureAssemblyContracts.csproj" />
|
<ProjectReference Include="..\FurnitureAssemblyContracts\FurnitureAssemblyContracts.csproj" />
|
||||||
|
<ProjectReference Include="..\FurnitureAssemblyDatabaseImplement\FurnitureAssemblyDatabaseImplement.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
using FurnitureAssemblyContracts.StorageContracts;
|
||||||
|
using FurnitureAssemblyDatabaseImplement.Implements;
|
||||||
using FurnitureAssemblyStoreKeeperClientApp;
|
using FurnitureAssemblyStoreKeeperClientApp;
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
@ -5,6 +7,8 @@ var builder = WebApplication.CreateBuilder(args);
|
|||||||
// Add services to the container.
|
// Add services to the container.
|
||||||
builder.Services.AddControllersWithViews();
|
builder.Services.AddControllersWithViews();
|
||||||
|
|
||||||
|
builder.Services.AddTransient<IFurnitureStorage, FurnitureStorage> ();
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
APIClient.Connect(builder.Configuration);
|
APIClient.Connect(builder.Configuration);
|
||||||
// Configure the HTTP request pipeline.
|
// Configure the HTTP request pipeline.
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
<div class="col-4">Изготовитель:</div>
|
<div class="col-4">Изготовитель:</div>
|
||||||
|
|
||||||
<div class="col-8">
|
<div class="col-8">
|
||||||
<select name="userId">
|
<select id="userId" name="userId">
|
||||||
<option value="0" disabled></option>
|
<option value="0" disabled></option>
|
||||||
@foreach (var user in userList)
|
@foreach (var user in userList)
|
||||||
{
|
{
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<h2 class="display-4">Обновление мебели</h2>
|
<h2 class="display-4">Обновление мебели</h2>
|
||||||
</div>
|
</div>
|
||||||
<form method="post">
|
<form method="post">
|
||||||
<div class="row" id = @Model.Id>
|
<div class="row" id = @Model?.Id>
|
||||||
<div class="col-4">Название:</div>
|
<div class="col-4">Название:</div>
|
||||||
<div class="col-8"><input type="text" name="name" id="name" value=@Model.Name /></div>
|
<div class="col-8"><input type="text" name="name" id="name" value=@Model.Name /></div>
|
||||||
</div>
|
</div>
|
||||||
@ -21,14 +21,9 @@
|
|||||||
<div class="col-4">Изготовитель:</div>
|
<div class="col-4">Изготовитель:</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-8">
|
<div class="col-8">
|
||||||
<select id="userId" name="userId" class="form-control" onselect = @Model.UserName>
|
|
||||||
@foreach (var item in userList)
|
@Html.DisplayFor(modelItem => Model.UserName)
|
||||||
{
|
|
||||||
<option value="@item.Id">
|
|
||||||
@Html.DisplayFor(modelItem => item.Name)
|
|
||||||
</option>
|
|
||||||
}
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -75,7 +70,18 @@
|
|||||||
@Html.DisplayFor(modelItem => item.Cost)
|
@Html.DisplayFor(modelItem => item.Cost)
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input type="text" id="@item.Id:count" name="counts[]" />
|
@if(Model.FurnitureMaterials.Keys.Contains(item.Id))
|
||||||
|
{
|
||||||
|
int count = Model.FurnitureMaterials[item.Id].Item2;
|
||||||
|
<input type="text" id="@item.Id:count" name="counts[]" value=@count />
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<input type="text" id="@item.Id:count" name="counts[]"/>
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
@Html.DisplayFor(modelItem => item.UserName)
|
@Html.DisplayFor(modelItem => item.UserName)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user