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; } + } +}