From ee7b714fc64470e84d9dcd76b629e7a2f3193c79 Mon Sep 17 00:00:00 2001 From: prodigygirl Date: Wed, 5 Apr 2023 21:25:26 +0400 Subject: [PATCH] =?UTF-8?q?=D0=AD=D1=82=D0=B0=D0=BF=203.=20=D0=97=D0=B0?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B0=20=D0=B4=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D0=B4=D1=80=D1=83=D0=B3=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=D0=B0=20=D0=B8=D0=B7?= =?UTF-8?q?=20=D0=A5ML-=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Models/IPatientModel.cs | 2 +- .../HospitalDatabaseImplement.csproj | 33 ++++++++++ .../LoaderFromXML.cs | 62 +++++++++++++++++++ .../Models/Medicine.cs | 2 +- .../Models/Patient.cs | 22 ++++--- .../Models/Procedure.cs | 17 +++++ .../Models/Treatment.cs | 17 +++++ .../XMLData/Patient.xml | 17 +++++ .../XMLData/Procedure.xml | 30 +++++++++ .../XMLData/Treatment.xml | 34 ++++++++++ 10 files changed, 225 insertions(+), 11 deletions(-) create mode 100644 Hospital/HospitalDatabaseImplement/LoaderFromXML.cs create mode 100644 Hospital/HospitalDatabaseImplement/XMLData/Patient.xml create mode 100644 Hospital/HospitalDatabaseImplement/XMLData/Procedure.xml create mode 100644 Hospital/HospitalDatabaseImplement/XMLData/Treatment.xml diff --git a/Hospital/HospitalDataModels/Models/IPatientModel.cs b/Hospital/HospitalDataModels/Models/IPatientModel.cs index c8aa3c0..c672536 100644 --- a/Hospital/HospitalDataModels/Models/IPatientModel.cs +++ b/Hospital/HospitalDataModels/Models/IPatientModel.cs @@ -2,7 +2,7 @@ { public interface IPatientModel : IId { - string? Surname { get; } + string Surname { get; } string Name { get; } string? Patronymic { get; } DateTime BirthDate { get; } diff --git a/Hospital/HospitalDatabaseImplement/HospitalDatabaseImplement.csproj b/Hospital/HospitalDatabaseImplement/HospitalDatabaseImplement.csproj index d95079c..5fd43f7 100644 --- a/Hospital/HospitalDatabaseImplement/HospitalDatabaseImplement.csproj +++ b/Hospital/HospitalDatabaseImplement/HospitalDatabaseImplement.csproj @@ -6,6 +6,24 @@ enable + + + + + + + + + Always + + + Always + + + Always + + + @@ -20,4 +38,19 @@ + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + diff --git a/Hospital/HospitalDatabaseImplement/LoaderFromXML.cs b/Hospital/HospitalDatabaseImplement/LoaderFromXML.cs new file mode 100644 index 0000000..3e42495 --- /dev/null +++ b/Hospital/HospitalDatabaseImplement/LoaderFromXML.cs @@ -0,0 +1,62 @@ +using HospitalDatabaseImplement.Models; +using System.Xml.Linq; + +namespace HospitalDatabaseImplement +{ + public class LoaderFromXML + { + private static readonly string PatientFileName = "XMLData\\Patient.xml"; + private static readonly string TreatmentFileName = "XMLData\\Treatment.xml"; + private static readonly string ProcedureFileName = "XMLData\\Procedure.xml"; + + private static List? LoadData(string filename, string xmlNodeName, Func selectFunction) + { + if (File.Exists(filename)) + { + return XDocument.Load(filename)?.Root?.Elements(xmlNodeName)?.Select(selectFunction)?.ToList(); + } + return new List(); + } + + public static void LoadPatients() + { + // TODO return LoadData(PatientFileName, "Patient", x => Patient.Create(x)!)!; + using var context = new HospitalDatabase(); + var list = LoadData(PatientFileName, "Patient", x => Patient.Create(x)!)!; + list.ForEach(x => + { + context.Patients.Add(x); + context.SaveChanges(); + }); + + } + + public static void LoadTreatments() + { + using var context = new HospitalDatabase(); + if (context.Treatments.ToList().Count > 0) + return; + var list = LoadData(TreatmentFileName, "Treatment", x => Treatment.Create(context, x)!)!; + list.ForEach(x => + { + context.Treatments.Add(x); + }); + context.SaveChanges(); + } + + public static void LoadProcedures() + { + using var context = new HospitalDatabase(); + if (context.Procedures.ToList().Count > 0) + return; + // TODO return LoadData(ProcedureFileName, "Procedure", x => Procedure.Create(context, x)!)!; + var list = LoadData(ProcedureFileName, "Procedure", x => Procedure.Create(context, x)!)!; + list.ForEach(x => + { + context.Procedures.Add(x); + context.SaveChanges(); + }); + + } + } +} diff --git a/Hospital/HospitalDatabaseImplement/Models/Medicine.cs b/Hospital/HospitalDatabaseImplement/Models/Medicine.cs index 3ef9684..2055f22 100644 --- a/Hospital/HospitalDatabaseImplement/Models/Medicine.cs +++ b/Hospital/HospitalDatabaseImplement/Models/Medicine.cs @@ -22,7 +22,7 @@ namespace HospitalDatabaseImplement.Models public string Dose { get; private set; } = string.Empty; [Required] - public int ApothecaryId { get; private set; } + public int ApothecaryId { get; private set; } = -1; public virtual Apothecary Apothecary { get; set; } diff --git a/Hospital/HospitalDatabaseImplement/Models/Patient.cs b/Hospital/HospitalDatabaseImplement/Models/Patient.cs index 43eef9d..a0f784b 100644 --- a/Hospital/HospitalDatabaseImplement/Models/Patient.cs +++ b/Hospital/HospitalDatabaseImplement/Models/Patient.cs @@ -7,6 +7,7 @@ using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Xml.Linq; namespace HospitalDatabaseImplement.Models { @@ -14,7 +15,7 @@ namespace HospitalDatabaseImplement.Models { public int Id { get; private set; } - public string? Surname { get; private set; } = string.Empty; + public string Surname { get; private set; } = string.Empty; [Required] public string Name { get; private set; } = string.Empty; @@ -42,16 +43,19 @@ namespace HospitalDatabaseImplement.Models }; } - public static Patient Create(PatientViewModel model) + public static Patient? Create(XElement element) { - return new Patient + if (element == null) { - Id = model.Id, - Surname = model.Surname, - Name = model.Name, - Patronymic = model.Patronymic, - BirthDate = model.BirthDate, - TreatmentId = model.TreatmentId + return null; + } + return new Patient() + { + Surname = element.Element("Surname")!.Value, + Name = element.Element("Name")!.Value, + Patronymic = element.Element("Patronymic")?.Value, + BirthDate = DateTime.ParseExact(element.Element("BirthDate")!.Value, "dd.mm.yyyy", null), + TreatmentId = Convert.ToInt32(element.Element("TreatmentId")!.Value) }; } diff --git a/Hospital/HospitalDatabaseImplement/Models/Procedure.cs b/Hospital/HospitalDatabaseImplement/Models/Procedure.cs index 37327d4..52da479 100644 --- a/Hospital/HospitalDatabaseImplement/Models/Procedure.cs +++ b/Hospital/HospitalDatabaseImplement/Models/Procedure.cs @@ -8,6 +8,7 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Xml.Linq; namespace HospitalDatabaseImplement.Models { @@ -52,6 +53,22 @@ namespace HospitalDatabaseImplement.Models }; } + public static Procedure? Create(HospitalDatabase context, XElement element) + { + if (element == null) + { + return null; + } + return new Procedure() + { + Name = element.Element("Name")!.Value, + /* Medicines = element.Element("Medicines")!.Elements("MedicineId").Select(x => new ProcedureMedicine + { + Medicine = context.Medicines?.First(y => y.Id == Convert.ToInt32(x.Value)) + }).ToList()*/ + }; + } + public void Update(ProcedureBindingModel model) { Name = model.Name; diff --git a/Hospital/HospitalDatabaseImplement/Models/Treatment.cs b/Hospital/HospitalDatabaseImplement/Models/Treatment.cs index 798abcd..4f8e2ee 100644 --- a/Hospital/HospitalDatabaseImplement/Models/Treatment.cs +++ b/Hospital/HospitalDatabaseImplement/Models/Treatment.cs @@ -8,6 +8,7 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Xml.Linq; namespace HospitalDatabaseImplement.Models { @@ -54,6 +55,22 @@ namespace HospitalDatabaseImplement.Models }; } + public static Treatment? Create(HospitalDatabase context, XElement element) + { + if (element == null) + { + return null; + } + return new Treatment() + { + Name = element.Element("Name")!.Value, + Procedures = element.Element("Procedures")!.Elements("ProcedureId").Select( x => new TreatmentProcedure + { + Procedure = context.Procedures.First(y => y.Id == Convert.ToInt32(x.Value)) + }).ToList() + }; + } + public void Update(TreatmentBindingModel model) { Name = model.Name; diff --git a/Hospital/HospitalDatabaseImplement/XMLData/Patient.xml b/Hospital/HospitalDatabaseImplement/XMLData/Patient.xml new file mode 100644 index 0000000..38b85ab --- /dev/null +++ b/Hospital/HospitalDatabaseImplement/XMLData/Patient.xml @@ -0,0 +1,17 @@ + + + + Фамилия 1 + Имя 1 + Отчество 1 + 10.01.2021 + 1 + + + Фамилия 2 + Имя 2 + Отчество 1 + 15.04.2001 + 2 + + \ No newline at end of file diff --git a/Hospital/HospitalDatabaseImplement/XMLData/Procedure.xml b/Hospital/HospitalDatabaseImplement/XMLData/Procedure.xml new file mode 100644 index 0000000..a046158 --- /dev/null +++ b/Hospital/HospitalDatabaseImplement/XMLData/Procedure.xml @@ -0,0 +1,30 @@ + + + + Процедура 1 + + 1 + 2 + 3 + + + + Процедура 2 + + 1 + + + + Процедура 3 + + 2 + 3 + + + + Процедура 4 + + + Процедура 5 + + \ No newline at end of file diff --git a/Hospital/HospitalDatabaseImplement/XMLData/Treatment.xml b/Hospital/HospitalDatabaseImplement/XMLData/Treatment.xml new file mode 100644 index 0000000..1d3159e --- /dev/null +++ b/Hospital/HospitalDatabaseImplement/XMLData/Treatment.xml @@ -0,0 +1,34 @@ + + + + Лечение 1 + + 1 + 2 + 3 + + + + Лечение 2 + + 1 + + + + Лечение 3 + + 2 + 3 + + + + Лечение 4 + + + + + Лечение 5 + + + + \ No newline at end of file