не пугайтесь
This commit is contained in:
parent
1fb383c1a2
commit
97cb5b7ecf
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user