using PolyclinicContracts.BindingModels; using PolyclinicContracts.BusinessLogicsContracts; using PolyclinicContracts.SearchModels; using PolyclinicContracts.StoragesContracts; using PolyclinicContracts.ViewModels; namespace PolyclinicBusinessLogic.BusinessLogics { public class ImplementerReportLogic : IImplementerReportLogic { private readonly IDiagnoseStorage _diagnoseStorage; private readonly IMedicamentStorage _medicamentStorage; private readonly ICourseStorage _courseStorage; private readonly ISymptomStorage _symptomStorage; public ImplementerReportLogic(IDiagnoseStorage diagnoseStorage, IMedicamentStorage medicamentStorage, ICourseStorage courseStorage, ISymptomStorage symptomStorage) { _diagnoseStorage = diagnoseStorage; _medicamentStorage = medicamentStorage; _courseStorage = courseStorage; _symptomStorage = symptomStorage; } public List GetDiagnoses() { throw new NotImplementedException(); } public List GetMedicamentsByDiagnoses(ReportBindingModel model) { var diagnoses = _diagnoseStorage .GetFilteredList(new DiagnoseSearchModel { From = model.DateFrom, To = model.DateTo }); var symptomes = _symptomStorage .GetFullList(); var medicaments = _medicamentStorage.GetFullList(); List result = new(); foreach (var diagnose in diagnoses) { var diagnoseSymptomes = symptomes .Where(x => x.SymptomDiagnoses.ContainsKey(diagnose.Id)) .ToList(); var diagnoseMedicaments = new List(); foreach (var symptom in diagnoseSymptomes) { diagnoseMedicaments.AddRange(medicaments.Where(x => x.SymptomId == symptom.Id)); } var diagnoseReportModel = new ReportMedicamentsByDiagnoseViewModel { DiagnoseId = diagnose.Id, DiagnoseName = diagnose.Name, DiagnoseComment = diagnose.Comment, DiagnoseDateStart = diagnose.DateStartDiagnose, DiagnoseDateStop = diagnose.DateStopDiagnose, Medicaments = diagnoseMedicaments.Distinct().Select(x => x.Name).ToList() }; result.Add(diagnoseReportModel); } return result; } public void SaveOrdersToPdfFile(ReportBindingModel model) { throw new NotImplementedException(); } public void SaveSecureComponentToExcelFile(ReportBindingModel model) { throw new NotImplementedException(); } public void SaveSecuresToWordFile(ReportBindingModel model) { throw new NotImplementedException(); } } }