diff --git a/Hospital/HospitalContracts/BindingModels/PatientsDescriptionProceduresBindingModel.cs b/Hospital/HospitalContracts/BindingModels/PatientsDescriptionProceduresBindingModel.cs new file mode 100644 index 0000000..fc0424d --- /dev/null +++ b/Hospital/HospitalContracts/BindingModels/PatientsDescriptionProceduresBindingModel.cs @@ -0,0 +1,15 @@ + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace HospitalContracts.BindingModels +{ + public class PatientsDescriptionProceduresBindingModel + { + public string FileName { get; set; } = string.Empty; + public List<int> Medicines { get; set; } = new(); + } +} diff --git a/Hospital/HospitalContracts/SearchModels/DescriptionProcedureSearchModel.cs b/Hospital/HospitalContracts/SearchModels/DescriptionProcedureSearchModel.cs index 7e68e7a..90672c7 100644 --- a/Hospital/HospitalContracts/SearchModels/DescriptionProcedureSearchModel.cs +++ b/Hospital/HospitalContracts/SearchModels/DescriptionProcedureSearchModel.cs @@ -11,6 +11,7 @@ namespace HospitalContracts.SearchModels public int? Id { get; set; } public string? Description { get; set; } = string.Empty; public int? PharmacistId { get; set; } - + public int? ProcedureId { get; set; } + } } diff --git a/Hospital/HospitalContracts/StoragesContracts/IMedicineStorage.cs b/Hospital/HospitalContracts/StoragesContracts/IMedicineStorage.cs index c85c314..791f072 100644 --- a/Hospital/HospitalContracts/StoragesContracts/IMedicineStorage.cs +++ b/Hospital/HospitalContracts/StoragesContracts/IMedicineStorage.cs @@ -13,6 +13,8 @@ namespace HospitalContracts.StoragesContracts { List<MedicineViewModel> GetFullList(); List<MedicineViewModel> GetFilteredList(MedicineSearchModel model); + List<Tuple<MedicineViewModel, List<Tuple<ProcedureViewModel, List<DescriptionProcedureViewModel>>>>> GetDescriptionProceduresInfo(PatientDescriptionProceduresSearchModel model); + List<Tuple<MedicineViewModel, List<Tuple<ProcedureViewModel, List<PatientViewModel>>>>> GetPatientsInfo(PatientDescriptionProceduresSearchModel model); MedicineViewModel? GetElement(MedicineSearchModel model); MedicineViewModel? Insert(MedicineBindingModel model); MedicineViewModel? Update(MedicineBindingModel model); diff --git a/Hospital/HospitalDataBaseImplement/Implementss/MedicineStorage.cs b/Hospital/HospitalDataBaseImplement/Implementss/MedicineStorage.cs index 04c36f8..0c309da 100644 --- a/Hospital/HospitalDataBaseImplement/Implementss/MedicineStorage.cs +++ b/Hospital/HospitalDataBaseImplement/Implementss/MedicineStorage.cs @@ -35,6 +35,40 @@ namespace HospitalDatabaseImplement.Implements .Select(x => x.GetViewModel) .ToList(); } + public List<Tuple<MedicineViewModel, List<Tuple<ProcedureViewModel, List<DescriptionProcedureViewModel>>>>> GetDescriptionProceduresInfo(PatientDescriptionProceduresSearchModel model) + { + if (model.medicinesIds == null) + { + return new(); + } + using var context = new HospitalDatabase(); + return context.Medicines + .Where(medicine => model.medicinesIds.Contains(medicine.Id)) + .Select(medicine => new Tuple<MedicineViewModel, List<Tuple<ProcedureViewModel, List<DescriptionProcedureViewModel>>>>(medicine.GetViewModel, + context.ProcedureMedicines.Include(service => service.Procedure) + .Include(service => service.Medicine).Where(service => medicine.Id == service.MedicineId). + Select(service => new Tuple<ProcedureViewModel, List<DescriptionProcedureViewModel>>(service.Procedure.GetViewModel, + context.DescriptionProcedures.Include(x => x.Procedures). + Select(x => x.GetViewModel).ToList())).ToList())).ToList(); + + } + public List<Tuple<MedicineViewModel, List<Tuple<ProcedureViewModel, List<PatientViewModel>>>>> GetPatientsInfo(PatientDescriptionProceduresSearchModel model) + { + if (model.medicinesIds == null) + { + return new(); + } + using var context = new HospitalDatabase(); + return context.Medicines + .Where(medicine => model.medicinesIds.Contains(medicine.Id)) + .Select(medicine => new Tuple<MedicineViewModel, List<Tuple<ProcedureViewModel, List<PatientViewModel>>>>(medicine.GetViewModel, + context.ProcedureMedicines.Include(service => service.Procedure) + .Include(service => service.Medicine).Where(service => medicine.Id == service.MedicineId). + Select(service => new Tuple<ProcedureViewModel, List<PatientViewModel>>(service.Procedure.GetViewModel, + context.PatientProcedures.Include(x => x.Patient).Where(x => x.ProcedureId == service.ProcedureId ). + Select(x => x.Patient.GetViewModel).ToList())).ToList())).ToList(); + + } public MedicineViewModel? GetElement(MedicineSearchModel model) { diff --git a/Hospital/HospitalDatabaseImplement/Implementss/ProcedureStorage.cs b/Hospital/HospitalDatabaseImplement/Implementss/ProcedureStorage.cs index 46c2b8e..f3e23e5 100644 --- a/Hospital/HospitalDatabaseImplement/Implementss/ProcedureStorage.cs +++ b/Hospital/HospitalDatabaseImplement/Implementss/ProcedureStorage.cs @@ -89,18 +89,18 @@ namespace HospitalDatabaseImplement.Implements using var transaction = context.Database.BeginTransaction(); try { - var iceCream = context.Procedures.Include(x => x.Pharmacist) + var Procedure = context.Procedures.Include(x => x.Pharmacist) .Include(x => x.Medicines).ThenInclude(x => x.Medicine).FirstOrDefault(rec => rec.Id == model.Id); - if (iceCream == null) + if (Procedure == null) { return null; } - iceCream.Update(model); + Procedure.Update(model); context.SaveChanges(); - iceCream.UpdateMedicines(context, model); + Procedure.UpdateMedicines(context, model); transaction.Commit(); - return iceCream.GetViewModel; + return Procedure.GetViewModel; } catch {