кошмар на улице Вязов

This commit is contained in:
Allllen4a 2024-05-29 15:21:44 +04:00
parent 4f48beb8c9
commit d27881cec2
3 changed files with 133 additions and 51 deletions

View File

@ -11,7 +11,13 @@ namespace BeautySalonContracts.BindingModels
public double ProcedurePrice { get; set; }
public double ProcedureDuration { get; set; }
public int ClientId { get; set; }
public List<CosmeticProcedureViewModel> ProcedureCosmetics { get; set; } = new();
//public List<CosmeticProcedureViewModel> ProcedureCosmetics { get; set; } = new();
public Dictionary<int, (ICosmeticModel, int)> ProcedureCosmetics
{
get;
set;
} = new();
public List<ServiceProcedureViewModel> ServiceProcedure { get; set; } = new();
public List<OrderProcedureViewModel> OrderProcedure { get; set; } = new();
}

View File

@ -27,14 +27,30 @@ namespace BeautySalonDatabaseImplement.Models
public int LaborCostId { get; set; }
public virtual LaborCosts LaborCost { get; set; } = new();
[ForeignKey("CosmeticId")]
public virtual List<OrderCosmetic> Orders { get; set; } = new();
//[ForeignKey("CosmeticId")]
//public virtual List<OrderCosmetic> Orders { get; set; } = new();
[ForeignKey("CosmeticId")]
public virtual List<CosmeticProcedure> Procedures { get; set; } = new();
[ForeignKey("CosmeticId")]
public virtual List<ServiceCosmetic> Services { get; set; } = new();
private Dictionary<int, string>? _procedureCosmetics = null;//Это поле для хранения словаря OrderCosmetics.
[NotMapped]
public Dictionary<int, string> ProcedureCosmetic//представляет список косметики, участвующей в заказе. Не присутствует в базе данных.
{
get
{
if (_procedureCosmetics == null)
{
_procedureCosmetics = Procedures
.ToDictionary(recPC => recPC.ProcedureId, recPC => recPC.Procedure.ProcedureName);
}
return _procedureCosmetics;
}
}
public virtual List<CosmeticProcedure> Procedures { get; set; } = new();//представляет список косметических товаров для данного заказ
//[ForeignKey("CosmeticId")]
//public virtual List<ServiceCosmetic> Services { get; set; } = new();
public static Cosmetic Create(CosmeticBindingModel model)
{
@ -73,5 +89,32 @@ namespace BeautySalonDatabaseImplement.Models
CosmeticPrice = CosmeticPrice,
LaborCostId = LaborCostId
};
public void UpdateProcedure(BeautySalonDatabase context, CosmeticBindingModel model)
{
var procedureCosmetic = context.CosmeticProcedures.Where(rec => rec.CosmeticId == model.Id).ToList();
if (CosmeticProcedures != null && cosmeticProcedures.Count > 0)
{ // удалили те, которых нет в модели
context.CosmeticProcedures.RemoveRange(cosmeticProcedures.Where(rec => !model.CosmeticProcedure.ContainsKey(rec.ProcedureId)));
context.SaveChanges();
// обновили количество у существующих записей
foreach (var updateProcedure in procedureCosmetic)
{
model.CosmeticProcedures.Remove(updateProcedure.CosmeticId);
}
context.SaveChanges();
}
var cosmetic = context.Cosmetics.First(x => x.Id == Id);
foreach (var rp in model.CosmeticProcedures)
{
context.CosmeticProcedures.Add(new Procedure
{
Cosmetic = cosmetic,
Procedure = context.Procedures.First(x => x.Id == rp.Key),
});
context.SaveChanges();
}
_procedureCosmetics = null;
}
}
}

View File

@ -27,66 +27,92 @@ namespace BeautySalonDatabaseImplement.Models
public int ClientId { get; set; }
public virtual Client Client { get; set; } = null!;
// связь процедуры и оценок один - ко - многим
[ForeignKey("ProcedureId")]
public virtual List<Evaluation> Evaluations { get; set; } = new();
private List<EvaluationViewModel>? _procedureEvaluations = null;
[NotMapped]
public List<EvaluationViewModel> ProcedureEvaluations
{
get
{
_procedureEvaluations ??= Evaluations
.Select(x => x.GetViewModel)
.ToList();
return _procedureEvaluations;
}
}
//// связь процедуры и оценок один - ко - многим
//[ForeignKey("ProcedureId")]
//public virtual List<Evaluation> Evaluations { get; set; } = new();
//private List<EvaluationViewModel>? _procedureEvaluations = null;
//[NotMapped]
//public List<EvaluationViewModel> ProcedureEvaluations
//{
// get
// {
// _procedureEvaluations ??= Evaluations
// .Select(x => x.GetViewModel)
// .ToList();
// return _procedureEvaluations;
// }
//}
// связь процедур и косметки многие - ко - многим
[ForeignKey("ProcedureId")]
public virtual List<CosmeticProcedure> Cosmetics { get; set; } = new();
//[ForeignKey("ProcedureId")]
//public virtual List<CosmeticProcedure> Cosmetics { get; set; } = new();
private List<CosmeticProcedureViewModel>? _cosmeticProcedures = null;
//private List<CosmeticProcedureViewModel>? _cosmeticProcedures = null;
//[NotMapped]
//public List<CosmeticProcedureViewModel> CosmeticProcedures
//{
// get
// {
// _cosmeticProcedures ??= Cosmetics
// .Select(pc => new CosmeticProcedureViewModel(pc.Cosmetic.GetViewModel, pc.Procedure.GetViewModel, pc.ProcedureCosmeticCount))
// .ToList();
// return _cosmeticProcedures;
// }
//}
private Dictionary<int, string>? _cosmeticProcedures = null;//Это поле для хранения словаря OrderCosmetics.
[NotMapped]
public List<CosmeticProcedureViewModel> CosmeticProcedures
public Dictionary<int, string> CosmeticProcedure//представляет список косметики, участвующей в заказе. Не присутствует в базе данных.
{
get
{
_cosmeticProcedures ??= Cosmetics
.Select(pc => new CosmeticProcedureViewModel(pc.Cosmetic.GetViewModel, pc.Procedure.GetViewModel, pc.ProcedureCosmeticCount))
.ToList();
if (_cosmeticProcedures == null)
{
_cosmeticProcedures = Cosmetics
.ToDictionary(recPC => recPC.CosmeticId, recPC => recPC.Cosmetic.CosmeticName);
}
return _cosmeticProcedures;
}
}
// связь процедур и заказов многие - ко - многим
[ForeignKey("ProcedureId")]
public virtual List<OrderProcedure> Orders { get; set; } = new();
public virtual List<CosmeticProcedure> Cosmetics { get; set; } = new();//представляет список косметических товаров для данного заказа.
// связь процедур и заказов многие - ко - многим
[ForeignKey("ProcedureId")]
public virtual List<ServiceProcedure> Services { get; set; } = new();
//[ForeignKey("ProcedureId")]
//// связь процедур и заказов многие - ко - многим
//[ForeignKey("ProcedureId")]
//public virtual List<OrderProcedure> Orders { get; set; } = new();
//// связь процедур и заказов многие - ко - многим
//[ForeignKey("ProcedureId")]
//public virtual List<ServiceProcedure> Services { get; set; } = new();
public static Procedure Create(BeautySalonDatabase context, ProcedureBindingModel model)
{
return new Procedure()
if (model == null)
{
return null;
}
var procedure = new Procedure()
{
Id = model.Id,
ProcedureName = model.ProcedureName,
ProcedurePrice = model.ProcedurePrice,
ProcedureDuration = model.ProcedureDuration,
Cosmetics = model.ProcedureCosmetics.Select(x => new CosmeticProcedure()
{
Cosmetic = context.Cosmetics.First(y => y.Id == x.Cosmetic.Id),
ProcedureCosmeticCount = x.Count
}).ToList(),
ClientId = model.ClientId,
Cosmetics = model.ProcedureCosmetics.Select(x => new ProcedureCosmetic
{
Cosmetic = context.Cosmetics.First(y => y.Id == x.Key)
}).ToList(),
};
}
return procedure;
}
public void Update(ProcedureBindingModel model)
{
ProcedureName = model.ProcedureName;
@ -106,24 +132,31 @@ namespace BeautySalonDatabaseImplement.Models
public void UpdateCosmetics(BeautySalonDatabase context, ProcedureBindingModel model)
{
var procedureCosmetics = context.CosmeticProcedures
.Where(x => x.ProcedureId == model.Id)
.ToList();
context.CosmeticProcedures
.RemoveRange(procedureCosmetics);
var procedure = context.Procedures.First(x => x.Id == Id);
foreach (var record in model.ProcedureCosmetics)
var procedureCosmetics = context.CosmeticProcedures.Where(rec => rec.ProcedureId == model.Id).ToList();
if (procedureCosmetics != null && procedureCosmetics.Count > 0)
{ // удалили те, которых нет в модели
context.CosmeticProcedures.RemoveRange(procedureCosmetics.Where(rec => !model.CosmeticProcedure.ContainsKey(rec.CosmeticId)));
context.SaveChanges();
// обновили количество у существующих записей
foreach (var updateCosmetic in procedureCosmetics)
{
model.ProcedureCosmetics.Remove(updateCosmetic.ProcedureId);
}
context.SaveChanges();
}
var service = context.Procedures.First(x => x.Id == Id);
foreach (var rp in model.ProcedureCosmetics)
{
context.CosmeticProcedures.Add(new CosmeticProcedure
context.CosmeticProcedures.Add(new Procedure
{
Procedure = procedure,
Cosmetic = context.Cosmetics.First(x => x.Id == record.Cosmetic.Id),
ProcedureCosmeticCount = record.Count
Cosmetic = context.Cosmetics.First(x => x.Id == rp.Key),
});
context.SaveChanges();
}
_cosmeticProcedures = null;
}
}
}