From 98c303acaea589c15ffbd1bd8ff94c738da3328b Mon Sep 17 00:00:00 2001 From: gg12 darfren Date: Thu, 2 May 2024 18:22:44 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=94=D0=95=D0=9B=D0=90=D0=9B=20=D0=A1?= =?UTF-8?q?=D0=94=D0=95=D0=9B=D0=90=D0=9B=20=D0=A1=D0=94=D0=95=D0=9B=D0=90?= =?UTF-8?q?=D0=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VisistsGuidesBindingModel.cs | 14 ++++++++ .../SearchModels/VisitServicesSearchModel.cs | 13 +++++++ .../StoragesContracts/IMedicineStorage.cs | 3 ++ .../Implements/MedicineStorage.cs | 34 +++++++++++++++++++ .../Implements/VisitsGuidesViewModel.cs | 16 +++++++++ 5 files changed, 80 insertions(+) create mode 100644 VetClinic/VetClinicContracts/BindingModels/VisistsGuidesBindingModel.cs create mode 100644 VetClinic/VetClinicContracts/SearchModels/VisitServicesSearchModel.cs create mode 100644 VetClinic/VetClinicDataBaseImplement/Implements/VisitsGuidesViewModel.cs diff --git a/VetClinic/VetClinicContracts/BindingModels/VisistsGuidesBindingModel.cs b/VetClinic/VetClinicContracts/BindingModels/VisistsGuidesBindingModel.cs new file mode 100644 index 0000000..b32384d --- /dev/null +++ b/VetClinic/VetClinicContracts/BindingModels/VisistsGuidesBindingModel.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VetClinicContracts.BindingModels +{ + public class VisistsGuidesBindingModel + { + public string FileName { get; set; } = string.Empty; + public List Medicines { get; set; } = new(); + } +} diff --git a/VetClinic/VetClinicContracts/SearchModels/VisitServicesSearchModel.cs b/VetClinic/VetClinicContracts/SearchModels/VisitServicesSearchModel.cs new file mode 100644 index 0000000..783cb35 --- /dev/null +++ b/VetClinic/VetClinicContracts/SearchModels/VisitServicesSearchModel.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VetClinicContracts.SearchModels +{ + public class VisitServicesSearchModel + { + public List? medicinesIds { get; set; } + } +} diff --git a/VetClinic/VetClinicContracts/StoragesContracts/IMedicineStorage.cs b/VetClinic/VetClinicContracts/StoragesContracts/IMedicineStorage.cs index 83da44e..d638c77 100644 --- a/VetClinic/VetClinicContracts/StoragesContracts/IMedicineStorage.cs +++ b/VetClinic/VetClinicContracts/StoragesContracts/IMedicineStorage.cs @@ -17,5 +17,8 @@ namespace VetClinicContracts.StoragesContracts MedicineViewModel? Insert(MedicineBindingModel model); MedicineViewModel? Update(MedicineBindingModel model); MedicineViewModel? Delete(MedicineBindingModel model); + public List>>>> GetGuidancesInfo(VisitServicesSearchModel model); + public List>>>> GetVisitsInfo(VisitServicesSearchModel model); + } } diff --git a/VetClinic/VetClinicDataBaseImplement/Implements/MedicineStorage.cs b/VetClinic/VetClinicDataBaseImplement/Implements/MedicineStorage.cs index eae920a..e3a3073 100644 --- a/VetClinic/VetClinicDataBaseImplement/Implements/MedicineStorage.cs +++ b/VetClinic/VetClinicDataBaseImplement/Implements/MedicineStorage.cs @@ -33,6 +33,40 @@ namespace VetClinicDataBaseImplement.Implements .Select(x => x.GetViewModel) .ToList(); } + public List>>>> GetGuidancesInfo(VisitServicesSearchModel model) + { + if (model.medicinesIds == null) + { + return new(); + } + using var context = new VetClinicDatabase(); + return context.Medicines + .Where(medicine => model.medicinesIds.Contains(medicine.Id)) + .Select(medicine => new Tuple>>>(medicine.GetViewModel, + context.ServiceMedicines.Include(service => service.Service) + .Include(service => service.Medicine).Where(service => medicine.Id == service.MedicineId). + Select(service => new Tuple>(service.Service.GetViewModel, + context.Guidances.Include(x => x.Service).Where(x => x.ServiceId == service.ServiceId). + Select(x => x.GetViewModel).ToList())).ToList())).ToList(); + + } + public List>>>> GetVisitsInfo(VisitServicesSearchModel model) + { + if (model.medicinesIds == null) + { + return new(); + } + using var context = new VetClinicDatabase(); + return context.Medicines + .Where(medicine => model.medicinesIds.Contains(medicine.Id)) + .Select(medicine => new Tuple>>>(medicine.GetViewModel, + context.ServiceMedicines.Include(service => service.Service) + .Include(service => service.Medicine).Where(service => medicine.Id == service.MedicineId). + Select(service => new Tuple>(service.Service.GetViewModel, + context.ServiceVisits.Include(x => x.Visit).Where(x => x.ServiceId == service.ServiceId). + Select(x => x.Visit.GetViewModel).ToList())).ToList())).ToList(); + + } public MedicineViewModel? GetElement(MedicineSearchModel model) { if (string.IsNullOrEmpty(model.MedicineName) && diff --git a/VetClinic/VetClinicDataBaseImplement/Implements/VisitsGuidesViewModel.cs b/VetClinic/VetClinicDataBaseImplement/Implements/VisitsGuidesViewModel.cs new file mode 100644 index 0000000..c8c3057 --- /dev/null +++ b/VetClinic/VetClinicDataBaseImplement/Implements/VisitsGuidesViewModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.ViewModels; + +namespace VetClinicDataBaseImplement.Implements +{ + public class VisitsGuidesViewModel + { + string MedicineName { get; set; } = string.Empty; + List Visits { get; set; } + List Guidances { get; set; } + } +}