From 06c2363ee3a6a4a1d0ffe12d3423a7b80a91b397 Mon Sep 17 00:00:00 2001 From: "ns.potapov" Date: Wed, 15 May 2024 01:59:17 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BB=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D1=83=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=81=D0=BF=D0=B5=D1=86=D0=B8=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=D1=81=D1=82=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusinessLogics/SpecializationLogic.cs | 53 +++++++++++++++++++ .../SearchModels/SpecializationSearchModel.cs | 6 ++- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 Medical/MedicalBusinessLogic/BusinessLogics/SpecializationLogic.cs diff --git a/Medical/MedicalBusinessLogic/BusinessLogics/SpecializationLogic.cs b/Medical/MedicalBusinessLogic/BusinessLogics/SpecializationLogic.cs new file mode 100644 index 0000000..1765c76 --- /dev/null +++ b/Medical/MedicalBusinessLogic/BusinessLogics/SpecializationLogic.cs @@ -0,0 +1,53 @@ +using MedicalDatabaseContracts; +using MedicalDatabaseContracts.Models; +using MedicalDatabaseContracts.SearchModels; +using MedicalDatabaseContracts.ViewModels; +using Microsoft.Extensions.Logging; + +namespace MedicalBusinessLogic.BusinessLogics +{ + public class SpecializationLogic : AbstractLogic + { + public SpecializationLogic( + ILogger> logger, + IStorage storage) : base(logger, storage) { } + + protected override bool CheckModelBySearchModel(Specialization model, SpecializationSearchModel searchModel) + { + if (searchModel.Id != null && searchModel.Id != model.Id) + return false; + if (!string.IsNullOrEmpty(searchModel.Name) && searchModel.Name != model.Name) + return false; + if (searchModel.IsPediatric != null && searchModel.IsPediatric != model.IsPediatric) + return false; + if (searchModel.IsTherapeutic != null && searchModel.IsTherapeutic != model.IsTherapeutic) + return false; + return true; + } + + protected override void CheckModelIsValid(Specialization model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + else if (string.IsNullOrEmpty(model.Name)) + { + throw new ArgumentNullException(nameof(model.Name)); + } + else if (ReadList(new SpecializationSearchModel { Name = model.Name }).Count != 0) + { + throw new InvalidOperationException($"Специальность с таким названием уже есть: \"{model.Name}\""); + } + } + + protected override SpecializationViewModel GetViewModel(Specialization model) + { + return new SpecializationViewModel { + Name = model.Name, + IsPediatric = model.IsPediatric, + IsTherapeutic = model.IsTherapeutic + }; + } + } +} diff --git a/Medical/MedicalDatabaseContracts/SearchModels/SpecializationSearchModel.cs b/Medical/MedicalDatabaseContracts/SearchModels/SpecializationSearchModel.cs index 0553df9..c3ba412 100644 --- a/Medical/MedicalDatabaseContracts/SearchModels/SpecializationSearchModel.cs +++ b/Medical/MedicalDatabaseContracts/SearchModels/SpecializationSearchModel.cs @@ -1,4 +1,8 @@ namespace MedicalDatabaseContracts.SearchModels { - public class SpecializationSearchModel : AbstractSearchModel { } + public class SpecializationSearchModel : AbstractSearchModel { + public string? Name { get; set; } + public bool? IsPediatric { get; set; } + public bool? IsTherapeutic { get; set; } + } }