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