реализованны все модели БД для сущности Работник
This commit is contained in:
parent
a7cebe62b7
commit
e948a1c60f
@ -33,7 +33,7 @@ namespace HardwareShopDatabaseImplement
|
|||||||
|
|
||||||
public virtual DbSet<Order> Orders { set; get; }
|
public virtual DbSet<Order> Orders { set; get; }
|
||||||
|
|
||||||
public virtual DbSet<Purchase> Purchase { set; get; }
|
public virtual DbSet<Purchase> Purchases { set; get; }
|
||||||
|
|
||||||
public virtual DbSet<PurchaseBuild> PurchasesBuilds { set; get; }
|
public virtual DbSet<PurchaseBuild> PurchasesBuilds { set; get; }
|
||||||
|
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
using HardwareShopDataModels.Enums;
|
using HardwareShopContracts.BindingModels;
|
||||||
|
using HardwareShopContracts.ViewModels;
|
||||||
|
using HardwareShopDataModels.Enums;
|
||||||
using HardwareShopDataModels.Models;
|
using HardwareShopDataModels.Models;
|
||||||
using HardwareShopDataModels.Models;
|
|
||||||
using System.ComponentModel;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace HardwareShopDatabaseImplement.Models
|
namespace HardwareShopDatabaseImplement.Models
|
||||||
{
|
{
|
||||||
@ -20,18 +21,137 @@ namespace HardwareShopDatabaseImplement.Models
|
|||||||
|
|
||||||
public virtual User User { get; set; }
|
public virtual User User { get; set; }
|
||||||
|
|
||||||
[NotMapped]
|
|
||||||
public Dictionary<int, (IBuildModel, int)>? PurchaseBuilds { get; set; }
|
|
||||||
|
|
||||||
[NotMapped]
|
|
||||||
public Dictionary<int, (IGoodModel, int)> PurchaseGoods { get; set; } = new();
|
|
||||||
|
|
||||||
|
|
||||||
[ForeignKey("PurchaseId")]
|
[ForeignKey("PurchaseId")]
|
||||||
public virtual List<PurchaseBuild>? Builds { get; set; }
|
public virtual List<PurchaseBuild>? Builds { get; set; }
|
||||||
|
|
||||||
|
public Dictionary<int, (IBuildModel, int)>? _purchaseBuilds = null;
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
public Dictionary<int, (IBuildModel, int)>? PurchaseBuilds
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_purchaseBuilds == null)
|
||||||
|
{
|
||||||
|
_purchaseBuilds = Builds.ToDictionary(recPB => recPB.BuildID, recPB => (recPB.Build as IBuildModel, recPB.Count));
|
||||||
|
}
|
||||||
|
return _purchaseBuilds;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[ForeignKey("PurchaseId")]
|
[ForeignKey("PurchaseId")]
|
||||||
public virtual List<PurchaseGood> Goods { get; set; } = new();
|
public virtual List<PurchaseGood> Goods { get; set; } = new();
|
||||||
|
|
||||||
|
public Dictionary<int, (IGoodModel, int)>? _purchaseGoods = null;
|
||||||
|
[NotMapped]
|
||||||
|
public Dictionary<int, (IGoodModel, int)>? PurchaseGoods
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_purchaseGoods == null)
|
||||||
|
{
|
||||||
|
_purchaseGoods = Goods.ToDictionary(recPG => recPG.GoodID, recPG => (recPG.Good as IGoodModel, recPG.Count));
|
||||||
|
}
|
||||||
|
return _purchaseGoods;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Purchase Create(HardwareShopDatabase context, PurchaseBindingModel model)
|
||||||
|
{
|
||||||
|
return new Purchase()
|
||||||
|
{
|
||||||
|
Id = model.Id,
|
||||||
|
Sum = model.Sum,
|
||||||
|
PurchaseStatus = model.PurchaseStatus,
|
||||||
|
DatePurchase = model.DatePurchase,
|
||||||
|
UserID = model.UserID,
|
||||||
|
Builds = model.PurchaseBuilds.Select(x => new PurchaseBuild
|
||||||
|
{
|
||||||
|
Build = context.Builds.First(y => y.Id == x.Key),
|
||||||
|
Count = x.Value.Item2
|
||||||
|
}).ToList(),
|
||||||
|
Goods = model.PurchaseGoods.Select(x => new PurchaseGood
|
||||||
|
{
|
||||||
|
Good = context.Goods.First(y => y.Id == x.Key),
|
||||||
|
Count = x.Value.Item2
|
||||||
|
}).ToList()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update(PurchaseBindingModel model)
|
||||||
|
{
|
||||||
|
PurchaseStatus = model.PurchaseStatus;
|
||||||
|
DatePurchase = model.DatePurchase;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PurchaseViewModel GetViewModel => new()
|
||||||
|
{
|
||||||
|
Id = Id,
|
||||||
|
Sum = Sum,
|
||||||
|
PurchaseStatus = PurchaseStatus,
|
||||||
|
DatePurchase = DatePurchase,
|
||||||
|
UserID = UserID,
|
||||||
|
UserEmail = User.Email,
|
||||||
|
PurchaseBuilds = PurchaseBuilds,
|
||||||
|
PurchaseGoods = PurchaseGoods
|
||||||
|
};
|
||||||
|
|
||||||
|
public void UpdateBuilds(HardwareShopDatabase context, PurchaseBindingModel model)
|
||||||
|
{
|
||||||
|
var purchaseBuilds = context.PurchasesBuilds.Where(rec => rec.PurchaseID == model.Id).ToList();
|
||||||
|
if (purchaseBuilds != null && purchaseBuilds.Count > 0)
|
||||||
|
{
|
||||||
|
context.PurchasesBuilds.RemoveRange(purchaseBuilds.Where(rec => !model.PurchaseBuilds.ContainsKey(rec.BuildID)));
|
||||||
|
context.SaveChanges();
|
||||||
|
foreach (var updateBuild in purchaseBuilds)
|
||||||
|
{
|
||||||
|
updateBuild.Count = model.PurchaseBuilds[updateBuild.BuildID].Item2;
|
||||||
|
model.PurchaseBuilds.Remove(updateBuild.BuildID);
|
||||||
|
}
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
var purchase = context.Purchases.First(x => x.Id == Id);
|
||||||
|
foreach (var dc in model.PurchaseBuilds)
|
||||||
|
{
|
||||||
|
context.PurchasesBuilds.Add(new PurchaseBuild
|
||||||
|
{
|
||||||
|
Purchase = purchase,
|
||||||
|
Build = context.Builds.First(x => x.Id == dc.Key),
|
||||||
|
Count = dc.Value.Item2
|
||||||
|
});
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
_purchaseBuilds = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateGoods(HardwareShopDatabase context, PurchaseBindingModel model)
|
||||||
|
{
|
||||||
|
var purchaseGoods = context.PurchasesGoods.Where(rec => rec.PurchaseID == model.Id).ToList();
|
||||||
|
if (purchaseGoods != null && purchaseGoods.Count > 0)
|
||||||
|
{ // удалили те в бд, которых нет в модели
|
||||||
|
context.PurchasesGoods.RemoveRange(purchaseGoods.Where(rec => !model.PurchaseGoods.ContainsKey(rec.GoodID)));
|
||||||
|
context.SaveChanges();
|
||||||
|
// обновили количество у существующих записей
|
||||||
|
foreach (var updateGood in purchaseGoods)
|
||||||
|
{
|
||||||
|
updateGood.Count = model.PurchaseGoods[updateGood.GoodID].Item2;
|
||||||
|
model.PurchaseGoods.Remove(updateGood.GoodID);
|
||||||
|
}
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
var purchase = context.Purchases.First(x => x.Id == Id);
|
||||||
|
//добавляем в бд блюда которые есть в моделе, но ещё нет в бд
|
||||||
|
foreach (var dc in model.PurchaseGoods)
|
||||||
|
{
|
||||||
|
context.PurchasesGoods.Add(new PurchaseGood
|
||||||
|
{
|
||||||
|
Purchase = purchase,
|
||||||
|
Good = context.Goods.First(x => x.Id == dc.Key),
|
||||||
|
Count = dc.Value.Item2
|
||||||
|
});
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
_purchaseGoods = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user