не пугайтесь

This commit is contained in:
Allllen4a 2024-05-29 14:12:58 +04:00
parent 1fb383c1a2
commit 97cb5b7ecf
4 changed files with 94 additions and 61 deletions

View File

@ -14,8 +14,18 @@ namespace BeautySalonContracts.BindingModels
public string ServiceName { get; set; } = string.Empty;
public double ServicePrice { get; set; }
public int StaffMemberId { get; set; }
public List<ServiceCosmeticViewModel> ServiceCosmetic { get; set; } = new();
public List<ServiceProcedureViewModel> ServiceProcedure { get; set; } = new();
public List<OrderServiceViewModel> OrderService { get; set; } = new();
//public List<ServiceCosmeticViewModel> ServiceCosmetic { get; set; } = new();
//public List<ServiceProcedureViewModel> ServiceProcedure { get; set; } = new();
//public List<OrderServiceViewModel> OrderService { get; set; } = new();
public Dictionary<int, (ICosmeticModel, int)> ServiceCosmetics
{
get;
set;
} = new();
public Dictionary<int, (IProcedureModel, int)> ServiceProcedures
{
get;
set;
} = new();
}
}

View File

@ -19,6 +19,7 @@ namespace BeautySalonContracts.ViewModels
public double OrderAmount { get; set; }
public int ClientId { get; set; }
[DisplayName("Клиент")]
public List<OrderServiceViewModel> OrderService { get; set; } = new();
public List<OrderCosmeticViewModel> OrderCosmetic { get; set; } = new();

View File

@ -23,9 +23,9 @@ namespace BeautySalonContracts.ViewModels
[DisplayName("Сотрудник")]
public string StaffMemberName { get; set; } = string.Empty;
public List<ServiceCosmeticViewModel> ServiceCosmetic { get; set; } = new();
public List<ServiceProcedureViewModel> ServiceProcedure { get; set; } = new();
public List<OrderServiceViewModel> OrderService { get; set; } = new();
Dictionary<int, (ICosmeticModel, int)> ServiceCosmetics { get; } //список косметики "участвующей" в заказе
Dictionary<int, (IProcedureModel, int)> ServiceProcedures { get; } //список процедур "участвующих" в заказе
//public List<OrderServiceViewModel> OrderService { get; set; } = new();
}
}

View File

@ -27,70 +27,75 @@ namespace BeautySalonDatabaseImplement.Models
public int StaffMemberId { get; set; }
public virtual StaffMember StaffMember { get; set; }
// связь услуги и заказов многие - ко - многим
[ForeignKey("ServiceId")]
public virtual List<OrderService> Orders { get; set; } = new();
// связь услуги и косметки многие - ко - многим
[ForeignKey("ServiceId")]
public virtual List<ServiceCosmetic> Cosmetics { get; set; } = new();
// связь услуги и косметки многие - ко - многим
[ForeignKey("ServiceId")]
public virtual List<ServiceProcedure> Procedures { get; set; } = new();
private List<ServiceProcedureViewModel>? _serviceProcedures = null;
private Dictionary<int, string>? _serviceCosmetics = null;//Это поле для хранения словаря OrderCosmetics.
[NotMapped]
public List<ServiceProcedureViewModel> ServiceProcedures
public Dictionary<int, string> ServiceCosmetics//представляет список косметики, участвующей в заказе. Не присутствует в базе данных.
{
get
{
_serviceProcedures ??= Procedures
.Select(pc => new ServiceProcedureViewModel(pc.Procedure.GetViewModel, pc.ServiceProcedureCount))
.ToList();
return _serviceProcedures;
}
}
private List<ServiceCosmeticViewModel>? _serviceCosmetics = null;
[NotMapped]
public List<ServiceCosmeticViewModel> ServiceCosmetics
{
get
{
_serviceCosmetics ??= Cosmetics
.Select(pc => new ServiceCosmeticViewModel(pc.Cosmetic.GetViewModel, pc.Service.GetViewModel, pc.ServiceCosmeticCount))
.ToList();
if (_serviceCosmetics == null)
{
_serviceCosmetics = Cosmetics
.ToDictionary(recPC => recPC.CosmeticId, recPC => recPC.Cosmetic.CosmeticName);
}
return _serviceCosmetics;
}
}
[ForeignKey("serviceId")]
public virtual List<OrderCosmetic> Cosmetics { get; set; } = new();//представляет список косметических товаров для данного заказа.
private Dictionary<int, string>? _serviceProcedures = null;//Это поле для хранения словаря OrderCosmetics.
[NotMapped]
public Dictionary<int, string> ServiceProcedures//представляет список косметики, участвующей в заказе. Не присутствует в базе данных.
{
get
{
if (_serviceProcedures == null)
{
_serviceProcedures = Procedures
.ToDictionary(recPC => recPC.ProcedureId, recPC => recPC.Procedure.ProcedureName);
}
return _serviceProcedures;
}
}
[ForeignKey("ServiceId")]
public virtual List<ServiceProcedure> Procedures { get; set; } = new();//представляет список косметических товаров для данного заказа.
public static Service Create(BeautySalonDatabase context, ServiceBindingModel model)
{
return new Service()
if (model == null)
{
return null;
}
var service = new Service()
{
Id = model.Id,
ServiceName = model.ServiceName,
ServicePrice = model.ServicePrice,
Cosmetics = model.ServiceCosmetic.Select(x => new ServiceCosmetic()
StaffMemberId = model.StaffMemberId,
Cosmetics = model.ServiceCosmetics.Select(x => new ServiceCosmetic
{
Cosmetic = context.Cosmetics.First(y => y.Id == x.Cosmetic.Id),
ServiceCosmeticCount = x.Count
Cosmetic = context.Cosmetics.First(y => y.Id == x.Key)
}).ToList(),
Procedures = model.ServiceProcedure.Select(x => new ServiceProcedure()
Procedures = model.ServiceProcedures.Select(x => new ServiceProcedure
{
Procedure = context.Procedures.First(y => y.Id == x.Procedure.Id),
ServiceProcedureCount = x.Count
}).ToList(),
StaffMemberId = model.StaffMemberId
Procedure = context.Procedures.First(y => y.Id == x.Key)
}).ToList()
};
return service;
}
public void Update(ServiceBindingModel model)
{
ServiceName = model.ServiceName;
ServicePrice = model.ServicePrice;
StaffMemberId = model.StaffMemberId;
}
public ServiceViewModel GetViewModel => new()
@ -103,46 +108,63 @@ namespace BeautySalonDatabaseImplement.Models
StaffMemberId = StaffMemberId,
};
public void UpdateCosmetics(BeautySalonDatabase context, ServiceBindingModel model)
{
var serviceCosmetics = context.ServiceCosmetics
.Where(x => x.ServiceId == model.Id)
.ToList();
context.ServiceCosmetics
.RemoveRange(serviceCosmetics);
var serviceCosmetics = context.ServiceCosmetics.Where(rec => rec.ServiceId == model.Id).ToList();
if (serviceCosmetics != null && serviceCosmetics.Count > 0)
{ // удалили те, которых нет в модели
context.ServiceCosmetics.RemoveRange(serviceCosmetics.Where(rec => !model.ServiceCosmetics.ContainsKey(rec.CosmeticId)));
context.SaveChanges();
// обновили количество у существующих записей
foreach (var updateCosmetic in serviceCosmetics)
{
model.ServiceCosmetics.Remove(updateCosmetic.CosmeticId);
}
context.SaveChanges();
}
var service = context.Services.First(x => x.Id == Id);
foreach (var record in model.ServiceCosmetic)
foreach (var rp in model.ServiceCosmetics)
{
context.ServiceCosmetics.Add(new ServiceCosmetic
{
Service = service,
Cosmetic = context.Cosmetics.First(x => x.Id == record.Cosmetic.Id),
ServiceCosmeticCount = record.Count
Cosmetic = context.Cosmetics.First(x => x.Id == rp.Key),
});
context.SaveChanges();
}
_serviceCosmetics = null;
}
public void UpdateProcedures(BeautySalonDatabase context, ServiceBindingModel model)
{
var serviceProcedures = context.ServiceProcedures
.Where(x => x.ServiceId == model.Id)
.ToList();
context.ServiceProcedures
.RemoveRange(serviceProcedures);
var serviceProcedures = context.ServiceProcedures.Where(rec => rec.ServiceId == model.Id).ToList();
if (serviceProcedures != null && serviceProcedures.Count > 0)
{ // удалили те, которых нет в модели
context.ServiceProcedures.RemoveRange(serviceProcedures.Where(rec => !model.ServiceProcedures.ContainsKey(rec.ProcedureId)));
context.SaveChanges();
// обновили количество у существующих записей
foreach (var updateCosmetic in serviceProcedures)
{
model.ServiceProcedures.Remove(updateCosmetic.ProcedureId);
}
context.SaveChanges();
}
var service = context.Services.First(x => x.Id == Id);
foreach (var record in model.ServiceProcedure)
foreach (var rp in model.ServiceProcedures)
{
context.ServiceProcedures.Add(new ServiceProcedure
{
Service = service,
Procedure = context.Procedures.First(x => x.Id == record.Procedure.Id),
ServiceProcedureCount = record.Count
Procedure = context.Procedures.First(x => x.Id == rp.Key),
});
context.SaveChanges();
}
_serviceProcedures = null;
}
}
}