Небольшие фиксы не до конца реализованных моделей + готовая модель Build в DatabaseImplement

This commit is contained in:
Николай 2023-04-01 14:53:34 +04:00
parent a2b24139b0
commit 33562b0143
5 changed files with 71 additions and 56 deletions

View File

@ -23,6 +23,8 @@ namespace HardwareShopDatabaseImplement
public virtual DbSet<Build> Builds { set; get; }
public virtual DbSet<BuildComponent> BuildsComponents { set; get; }
public virtual DbSet<Comment> Comments { set; get; }
public virtual DbSet<Component> Components { set; get; }

View File

@ -1,4 +1,6 @@
using HardwareShopDataModels.Models;
using HardwareShopContracts.BindingModels;
using HardwareShopContracts.ViewModels;
using HardwareShopDataModels.Models;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
@ -18,6 +20,8 @@ namespace HardwareShopDatabaseImplement.Models
[Required]
public int UserID { get; set; }
public virtual User User { get; set; }
[ForeignKey("BuildId")]
public virtual List<BuildComponent>? Components { get; set; }
@ -42,64 +46,67 @@ namespace HardwareShopDatabaseImplement.Models
}
}
//public static Build Create(HardwareShopDatabase context, BuildBindingModel model)
//{
// return new Build()
// {
// Id = model.Id,
// BuildName = model.BuildName,
// Price = model.Price,
// Components = model.BuildComponents.Select(x => new BuildComponent
// {
// Component = context.Components.First(y => y.Id == x.Key),
// Count = x.Value.Item2
// }).ToList()
// };
//}
public static Build Create(HardwareShopDatabase context, BuildBindingModel model)
{
return new Build()
{
Id = model.Id,
Price = model.Price,
BuildName = model.BuildName,
UserID = model.UserID,
Components = model.BuildComponents.Select(x => new BuildComponent
{
Component = context.Components.First(y => y.Id == x.Key),
Count = x.Value.Item2
}).ToList()
};
}
//public void Update(BuildBindingModel model)
//{
// BuildName = model.BuildName;
// Price = model.Price;
//}
public void Update(BuildBindingModel model)
{
BuildName = model.BuildName;
Price = model.Price;
}
//public BuildViewModel GetViewModel => new()
//{
// Id = Id,
// BuildName = BuildName,
// Price = Price,
// BuildComponents = BuildComponents
//};
public BuildViewModel GetViewModel => new()
{
Id = Id,
BuildName = BuildName,
Price = Price,
UserEmail = User.Email,
UserID = UserID,
BuildComponents = BuildComponents
};
//public void UpdateComponents(HardwareShopDatabase context, BuildBindingModel model)
//{
// var buildComponents = context.BuildComponents.Where(rec => rec.BuildId == model.Id).ToList();
// if (buildComponents != null && buildComponents.Count > 0)
// { // удалили те в бд, которых нет в модели
// context.BuildComponents.RemoveRange(buildComponents.Where(rec => !model.BuildComponents.ContainsKey(rec.ComponentId)));
// context.SaveChanges();
// // обновили количество у существующих записей
// foreach (var updateComponent in buildComponents)
// {
// updateComponent.Count = model.BuildComponents[updateComponent.ComponentId].Item2;
// model.BuildComponents.Remove(updateComponent.ComponentId);
// }
// context.SaveChanges();
// }
// var build = context.Builds.First(x => x.Id == Id);
// //добавляем в бд блюда которые есть в моделе, но ещё нет в бд
// foreach (var dc in model.BuildComponents)
// {
// context.BuildComponents.Add(new BuildComponent
// {
// Build = build,
// Component = context.Components.First(x => x.Id == dc.Key),
// Count = dc.Value.Item2
// });
// context.SaveChanges();
// }
// _buildComponents = null;
//}
public void UpdateComponents(HardwareShopDatabase context, BuildBindingModel model)
{
var buildComponents = context.BuildsComponents.Where(rec => rec.BuildID == model.Id).ToList();
if (buildComponents != null && buildComponents.Count > 0)
{ // удалили те в бд, которых нет в модели
context.BuildsComponents.RemoveRange(buildComponents.Where(rec => !model.BuildComponents.ContainsKey(rec.ComponentId)));
context.SaveChanges();
// обновили количество у существующих записей
foreach (var updateComponent in buildComponents)
{
updateComponent.Count = model.BuildComponents[updateComponent.ComponentId].Item2;
model.BuildComponents.Remove(updateComponent.ComponentId);
}
context.SaveChanges();
}
var build = context.Builds.First(x => x.Id == Id);
//добавляем в бд блюда которые есть в моделе, но ещё нет в бд
foreach (var dc in model.BuildComponents)
{
context.BuildsComponents.Add(new BuildComponent
{
Build = build,
Component = context.Components.First(x => x.Id == dc.Key),
Count = dc.Value.Item2
});
context.SaveChanges();
}
_buildComponents = null;
}
}
}

View File

@ -10,5 +10,7 @@ namespace HardwareShopDatabaseImplement.Models
public class Component : IComponentModel
{
public int Id { get; set; }
public virtual User User { get; set; }
}
}

View File

@ -11,5 +11,7 @@ namespace HardwareShopDatabaseImplement.Models
public class Good : IGoodModel
{
public int Id { get; set; }
public virtual User User { get; set; }
}
}

View File

@ -7,5 +7,7 @@ namespace HardwareShopDatabaseImplement.Models
public class Order : IOrderModel
{
public int Id { get; set; }
public virtual User User { get; set; }
}
}