че то доделал

This commit is contained in:
Milana Ievlewa 2024-05-01 16:19:18 +03:00
parent 75d5cacd33
commit 15e5c0be35
21 changed files with 152 additions and 98 deletions

1
.gitignore vendored
View File

@ -398,3 +398,4 @@ FodyWeavers.xsd
# JetBrains Rider
*.sln.iml
/BeautySalonView/BeautySalonContracts/SearchModels/EvaluationSearchModel.cs

View File

@ -67,7 +67,7 @@ namespace BeutySalonClientApp.Controllers
{
try
{
return procedure.ReadList(new ProcedureSearchModel { ClientId = userId, PageNumber = page, PageSize = 10 });
return procedure.ReadList(new ProcedureSearchModel { ClientId = userId});
}
catch (Exception ex)
{

View File

@ -3,7 +3,10 @@
public class EvaluationSearchModel
{
public int? Id { get; set; }
public double? PointsProcedure { get; set; }
public double? PointsCosmetics { get; set; }
public int? ClientId { get; set; }
public int? ProcedureId { get; set; }
public int? PageNumber { get; set; }
public int? PageSize { get; set; }
}
}

View File

@ -2,14 +2,12 @@
{
public class OrderCosmeticViewModel
{
public int OrderId { get; set; }
public CosmeticViewModel Cosmetic { get; set; } = null!;
public OrderCosmeticViewModel() { }
public OrderCosmeticViewModel(int orderId, CosmeticViewModel cosmetic)
public OrderCosmeticViewModel(CosmeticViewModel cosmetic)
{
OrderId = orderId;
Cosmetic = cosmetic;
}
}

View File

@ -2,15 +2,13 @@
{
public class OrderProcedureViewModel
{
public int OrderId { get; set; }
public ProcedureViewModel Procedure { get; set; } = null!;
public int Count { get; set; }
public OrderProcedureViewModel() { }
public OrderProcedureViewModel(int orderId, ProcedureViewModel procedure, int count)
public OrderProcedureViewModel(ProcedureViewModel procedure, int count)
{
OrderId = orderId;
Procedure = procedure;
Count = count;
}

View File

@ -2,15 +2,13 @@
{
public class OrderServiceViewModel
{
public int OrderId { get; set; }
public ServiceViewModel Service { get; set; } = null!;
public int Count { get; set; }
public OrderServiceViewModel() { }
public OrderServiceViewModel(int orderId, ServiceViewModel service, int count)
public OrderServiceViewModel(ServiceViewModel service, int count)
{
OrderId = orderId;
Service = service;
Count = count;
}

View File

@ -1,18 +0,0 @@
namespace BeautySalonContracts.ViewModels
{
public class ProcedureEvaluationViewModel
{
public int OrderId { get; set; }
public EvaluationViewModel Evaluation { get; set; } = null!;
public int Count { get; set; }
public ProcedureEvaluationViewModel() { }
public ProcedureEvaluationViewModel(int orderId, EvaluationViewModel evaluation, int count)
{
OrderId = orderId;
Evaluation = evaluation;
Count = count;
}
}
}

View File

@ -2,15 +2,15 @@
{
public class ServiceCosmeticViewModel
{
public int CosmeticId { get; set; }
public CosmeticViewModel Cosmetic { get; set; } = null!;
public ServiceViewModel Service { get; set; } = null!;
public int Count { get; set; }
public ServiceCosmeticViewModel() { }
public ServiceCosmeticViewModel(int cosmeticId, ServiceViewModel service, int count)
public ServiceCosmeticViewModel(CosmeticViewModel cosmetic, ServiceViewModel service, int count)
{
CosmeticId = cosmeticId;
Cosmetic = cosmetic;
Service = service;
Count = count;
}

View File

@ -8,15 +8,13 @@ namespace BeautySalonContracts.ViewModels
{
public class ServiceProcedureViewModel
{
public int ServiceId { get; set; }
public ProcedureViewModel Procedure { get; set; } = null!;
public int Count { get; set; }
public ServiceProcedureViewModel() { }
public ServiceProcedureViewModel(int serviceId, ProcedureViewModel procedure, int count)
public ServiceProcedureViewModel(ProcedureViewModel procedure, int count)
{
ServiceId = serviceId;
Procedure = procedure;
Count = count;
}

View File

@ -31,6 +31,7 @@ namespace BeautySalonDatabaseImplement
public virtual DbSet<Evaluation> Evaluations { set; get; }
public virtual DbSet<Procedure> Procedures { set; get; }
public virtual DbSet<ServiceCosmetic> ServiceCosmetics { set; get; }
public virtual DbSet<ServiceProcedure> ServiceProcedures { set; get; }
public virtual DbSet<StaffMember> StaffMembers { set; get; }
public virtual DbSet<Client> Clients { set; get; }
public virtual DbSet<OrderCosmetic> OrderCosmetics { set; get; }

View File

@ -3,6 +3,7 @@ using BeautySalonContracts.SearchModels;
using BeautySalonContracts.StoragesContracts;
using BeautySalonContracts.ViewModels;
using BeautySalonDatabaseImplement.Models;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
@ -15,10 +16,11 @@ namespace BeautySalonDatabaseImplement.Implements
{
using var context = new BeautySalonDatabase();
return context.Cosmetics
//.Include(x => x.Procedures)
//.ThenInclude(x => x.Procedure)
.Select(x => x.GetViewModel)
.ToList();
}
public List<CosmeticViewModel> GetFilteredList(CosmeticSearchModel model)
{
using var context = new BeautySalonDatabase();

View File

@ -30,7 +30,7 @@ namespace BeautySalonDatabaseImplement.Implements
if (model.Id.HasValue)
{
return context.Evaluations
.Include(x => x.Procedure)
.Include(x => x.Procedure)
.Where(x => x.Id == model.Id)
.Select(x => x.GetViewModel)
.ToList();
@ -61,17 +61,17 @@ namespace BeautySalonDatabaseImplement.Implements
public EvaluationViewModel? Insert(EvaluationBindingModel model)
{
var newRating = Evaluation.Create(model);
if (newRating == null)
var newEvaluation = Evaluation.Create(model);
if (newEvaluation == null)
{
return null;
}
using var context = new BeautySalonDatabase();
context.Evaluations.Add(newRating);
context.Evaluations.Add(newEvaluation);
context.SaveChanges();
return context.Evaluations
.Include(x => x.Procedure)
.FirstOrDefault(x => x.Id == newRating.Id)
.FirstOrDefault(x => x.Id == newEvaluation.Id)
?.GetViewModel;
}

View File

@ -49,6 +49,13 @@ namespace BeautySalonDatabaseImplement.Implements
.Select(x => x.GetViewModel)
.ToList();
}
if (model.StaffMemberId.HasValue)
{
return context.LaborCosts
.Where(x => x.StaffMemberId == model.StaffMemberId)
.Select(x => x.GetViewModel)
.ToList();
}
return new();
}

View File

@ -19,7 +19,6 @@ namespace BeautySalonDatabaseImplement.Implements
using var context = new BeautySalonDatabase();
var element = context.Procedures
.Include(x => x.Cosmetics)
.Include(x => x.Orders)
.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
@ -62,13 +61,6 @@ namespace BeautySalonDatabaseImplement.Implements
.Select(x => x.GetViewModel)
.ToList();
}
if (model.ClientId.HasValue)
{
return context.Procedures
.Where(x => x.ClientId == model.ClientId)
.Select(x => x.GetViewModel)
.ToList();
}
return new();
}
@ -118,5 +110,19 @@ namespace BeautySalonDatabaseImplement.Implements
throw;
}
}
public List<CosmeticViewModel> GetProcedureCosmetics(ProcedureSearchModel model)
{
if (model == null)
{
return new();
}
using var context = new BeautySalonDatabase();
var cosmetics = context.CosmeticProcedures
.Where(x => x.ProcedureId == model.Id)
.Select(x => x.Cosmetic.GetViewModel)
.ToList();
return cosmetics;
}
}
}

View File

@ -18,8 +18,8 @@ namespace BeautySalonDatabaseImplement.Implements
{
using var context = new BeautySalonDatabase();
var element = context.Services
.Include(x => x.Procedures)
.Include(x => x.Cosmetics)
.Include(x => x.Orders)
.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
@ -38,6 +38,8 @@ namespace BeautySalonDatabaseImplement.Implements
}
using var context = new BeautySalonDatabase();
return context.Services
.Include(x => x.Procedures)
.ThenInclude(x => x.Procedure)
.Include(x => x.Cosmetics)
.ThenInclude(x => x.Cosmetic)
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.ServiceName) && x.ServiceName == model.ServiceName) ||
@ -55,6 +57,8 @@ namespace BeautySalonDatabaseImplement.Implements
if (model.Id.HasValue)
{
return context.Services
.Include(x => x.Procedures)
.ThenInclude(x => x.Procedure)
.Include(x => x.Cosmetics)
.ThenInclude(x => x.Cosmetic)
.Where(x => x.Id == model.Id)
@ -62,6 +66,18 @@ namespace BeautySalonDatabaseImplement.Implements
.Select(x => x.GetViewModel)
.ToList();
}
if (model.StaffMemberId.HasValue)
{
return context.Services
.Include(x => x.Procedures)
.ThenInclude(x => x.Procedure)
.Include(x => x.Cosmetics)
.ThenInclude(x => x.Cosmetic)
.Where(x => x.StaffMemberId == model.StaffMemberId)
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
return new();
}
@ -69,6 +85,8 @@ namespace BeautySalonDatabaseImplement.Implements
{
using var context = new BeautySalonDatabase();
return context.Services
.Include(x => x.Procedures)
.ThenInclude(x => x.Procedure)
.Include(x => x.Cosmetics)
.ThenInclude(x => x.Cosmetic)
.Select(x => x.GetViewModel)
@ -102,6 +120,7 @@ namespace BeautySalonDatabaseImplement.Implements
service.Update(model);
context.SaveChanges();
service.UpdateCosmetics(context, model);
service.UpdateProcedures(context, model);
transaction.Commit();
return service.GetViewModel;
}

View File

@ -17,7 +17,8 @@ namespace BeautySalonDatabaseImplement.Models
public string ClientFIO { get; set; } = string.Empty;
[Required]
public string ClientEmail { get; set; } = string.Empty;
[Required]
public string ClientPhone { get; set; } = string.Empty;
[Required]
public string ClientPhone { get; set; } = string.Empty;

View File

@ -23,8 +23,9 @@ namespace BeautySalonDatabaseImplement.Models
[Required]
public double CosmeticPrice { get; set; }
[Required]
public int LaborCostId { get; set; }
public virtual LaborCosts LaborCost { get; set; }
public virtual LaborCosts LaborCost { get; set; } = new();
[ForeignKey("CosmeticId")]
public virtual List<OrderCosmetic> Orders { get; set; } = new();

View File

@ -84,17 +84,17 @@ namespace BeautySalonDatabaseImplement.Models
Id = model.Id,
OrderDate = model.OrderDate,
OrderAmount = model.OrderAmount,
Services = model.OrderServices.Select(x => new OrderService()
Services = model.OrderService.Select(x => new OrderService()
{
Service = context.Services.First(y => y.Id == x.Service.Id),
OrderServiceCount = x.Count
}).ToList(),
Procedures = model.OrderProcedures.Select(x => new OrderProcedure()
Procedures = model.OrderProcedure.Select(x => new OrderProcedure()
{
Procedure = context.Procedures.First(y => y.Id == x.Procedure.Id),
OrderProcedureCount = x.Count
}).ToList(),
Cosmetics= model.OrderCosmetics.Select(x => new OrderCosmetic()
Cosmetics= model.OrderCosmetic.Select(x => new OrderCosmetic()
{
Cosmetic = context.Cosmetics.First(y => y.Id == x.Cosmetic.Id),
}).ToList(),
@ -127,7 +127,7 @@ namespace BeautySalonDatabaseImplement.Models
context.OrderServices
.RemoveRange(orderServices);
var order = context.Orders.First(x => x.Id == Id);
foreach (var record in model.OrderServices)
foreach (var record in model.OrderService)
{
context.OrderServices.Add(new OrderService
{
@ -148,7 +148,7 @@ namespace BeautySalonDatabaseImplement.Models
context.OrderProcedures
.RemoveRange(orderProcedures);
var order = context.Orders.First(x => x.Id == Id);
foreach (var record in model.OrderProcedures)
foreach (var record in model.OrderProcedure)
{
context.OrderProcedures.Add(new OrderProcedure
{
@ -169,7 +169,7 @@ namespace BeautySalonDatabaseImplement.Models
context.OrderCosmetics
.RemoveRange(orderCosmetic);
var order = context.Orders.First(x => x.Id == Id);
foreach (var record in model.OrderCosmetics)
foreach (var record in model.OrderCosmetic)
{
context.OrderCosmetics.Add(new OrderCosmetic
{

View File

@ -25,26 +25,11 @@ namespace BeautySalonDatabaseImplement.Models
public double ProcedureDuration { get; set; }
public int ClientId { get; set; }
public virtual Client Client { get; set; } = null!;
private List<CosmeticProcedureViewModel>? _cosmeticProcedures = null;
[NotMapped]
public List<CosmeticProcedureViewModel> CosmeticProcedures
{
get
{
_cosmeticProcedures ??= Cosmetics
.Select(pc => new CosmeticProcedureViewModel(pc.Cosmetic.GetViewModel, pc.ProcedureCosmeticCount))
.ToList();
return _cosmeticProcedures;
}
}
// связь процедуры и оценок один - ко - многим
[ForeignKey("ProcedureId")]
public virtual List<Evaluation> Evaluations { get; set; } = new();
private List<EvaluationViewModel>? _procedureEvaluations = null;
[NotMapped]
public List<EvaluationViewModel> ProcedureEvaluations
@ -62,10 +47,28 @@ namespace BeautySalonDatabaseImplement.Models
[ForeignKey("ProcedureId")]
public virtual List<CosmeticProcedure> Cosmetics { get; set; } = new();
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;
}
}
// связь процедур и заказов многие - ко - многим
[ForeignKey("ProcedureId")]
public virtual List<OrderCosmetic> Orders { get; set; } = new();
// связь процедур и заказов многие - ко - многим
[ForeignKey("ProcedureId")]
public virtual List<ServiceProcedure> Services { get; set; } = new();
public static Procedure Create(BeautySalonDatabase context, ProcedureBindingModel model)
{
@ -74,6 +77,7 @@ namespace BeautySalonDatabaseImplement.Models
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),
@ -87,6 +91,7 @@ namespace BeautySalonDatabaseImplement.Models
{
ProcedureName = model.ProcedureName;
ProcedurePrice = model.ProcedurePrice;
ProcedureDuration = model.ProcedureDuration;
}
public ProcedureViewModel GetViewModel => new()
@ -94,8 +99,8 @@ namespace BeautySalonDatabaseImplement.Models
Id = Id,
ProcedureName = ProcedureName,
ProcedurePrice = ProcedurePrice,
ProcedureDuration = ProcedureDuration,
CosmeticProcedures = CosmeticProcedures,
ProcedureEvaluations = ProcedureEvaluations,
ClientId = ClientId
};

View File

@ -27,31 +27,44 @@ 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;
[NotMapped]
public List<ServiceProcedureViewModel> ServiceProcedures
{
get
{
_serviceProcedures ??= Procedures
.Select(pc => new ServiceProcedureViewModel(pc.Procedure.GetViewModel, pc.ServiceProcedureCount))
.ToList();
return _serviceProcedures;
}
}
private List<ServiceCosmeticViewModel>? _serviceCosmetics = null;
private List<ServiceProcedureViewModel>? _serviceProcedure = null;
[NotMapped]
public List<ServiceCosmeticViewModel> ServiceCosmetics
{
get
{
_serviceCosmetics ??= Cosmetics
.Select(pc => new ServiceCosmeticViewModel(pc.Cosmetic.GetViewModel, pc.ServiceCosmeticCount))
.Select(pc => new ServiceCosmeticViewModel(pc.Cosmetic.GetViewModel, pc.Service.GetViewModel, pc.ServiceCosmeticCount))
.ToList();
return _serviceCosmetics;
}
}
// связь услуги и косметки многие - ко - многим
[ForeignKey("ServiceId")]
public virtual List<ServiceCosmetic> Cosmetics { get; set; } = new();
// связь услуги и заказов многие - ко - многим
[ForeignKey("ServiceId")]
public virtual List<OrderService> Orders { get; set; } = new();
public static Service Create(BeautySalonDatabase context, ServiceBindingModel model)
{
return new Service()
@ -64,6 +77,11 @@ namespace BeautySalonDatabaseImplement.Models
Cosmetic = context.Cosmetics.First(y => y.Id == x.Cosmetic.Id),
ServiceCosmeticCount = x.Count
}).ToList(),
Procedures = model.ServiceProcedure.Select(x => new ServiceProcedure()
{
Procedure = context.Procedures.First(y => y.Id == x.Procedure.Id),
ServiceProcedureCount = x.Count
}).ToList(),
StaffMemberId = model.StaffMemberId
};
}
@ -81,16 +99,17 @@ namespace BeautySalonDatabaseImplement.Models
ServiceName = ServiceName,
ServicePrice = ServicePrice,
ServiceCosmetic = ServiceCosmetics,
ServiceProcedure = ServiceProcedures,
StaffMemberId = StaffMemberId,
};
public void UpdateCosmetics(BeautySalonDatabase context, ServiceBindingModel model)
{
var serviceSosmetics = context.ServiceCosmetics
var serviceCosmetics = context.ServiceCosmetics
.Where(x => x.ServiceId == model.Id)
.ToList();
context.ServiceCosmetics
.RemoveRange(serviceSosmetics);
.RemoveRange(serviceCosmetics);
var service = context.Services.First(x => x.Id == Id);
foreach (var record in model.ServiceCosmetic)
{
@ -104,5 +123,26 @@ namespace BeautySalonDatabaseImplement.Models
}
_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 service = context.Services.First(x => x.Id == Id);
foreach (var record in model.ServiceProcedure)
{
context.ServiceProcedures.Add(new ServiceProcedure
{
Service = service,
Procedure = context.Procedures.First(x => x.Id == record.Procedure.Id),
ServiceProcedureCount = record.Count
});
context.SaveChanges();
}
_serviceProcedures = null;
}
}
}

View File

@ -11,10 +11,7 @@ namespace BeautySalonDatabaseImplement.Models
public int Id { get; set; }
[Required]
public string StaffMemberName { get; set; } = string.Empty;
[Required]
public string StaffMemberSurname { get; set; } = string.Empty;
public string StaffMemberFIO { get; set; } = string.Empty;
[Required]
public string StaffMemberSpecialty { get; set; } = string.Empty;
@ -47,8 +44,7 @@ namespace BeautySalonDatabaseImplement.Models
return new StaffMember()
{
Id = model.Id,
StaffMemberName = model.StaffMemberName,
StaffMemberSurname = model.StaffMemberSurname,
StaffMemberFIO = model.StaffMemberFIO,
StaffMemberSpecialty = model.StaffMemberSpecialty,
StaffMemberLogin = model.StaffMemberLogin,
StaffMemberEmail = model.StaffMemberEmail,
@ -63,8 +59,7 @@ namespace BeautySalonDatabaseImplement.Models
{
return;
}
StaffMemberName = model.StaffMemberName;
StaffMemberSurname = model.StaffMemberSurname;
StaffMemberFIO = model.StaffMemberFIO;
StaffMemberSpecialty = model.StaffMemberSpecialty;
StaffMemberLogin = model.StaffMemberLogin;
StaffMemberEmail = model.StaffMemberEmail;
@ -75,8 +70,7 @@ namespace BeautySalonDatabaseImplement.Models
public StaffMemberViewModel GetViewModel => new()
{
Id = Id,
StaffMemberName = StaffMemberName,
StaffMemberSurname = StaffMemberSurname,
StaffMemberFIO = StaffMemberFIO,
StaffMemberSpecialty = StaffMemberSpecialty,
StaffMemberLogin = StaffMemberLogin,
StaffMemberEmail = StaffMemberEmail,