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, bool modelUpdate = false) { if (model == null) { throw new ArgumentNullException(nameof(model)); } else if (string.IsNullOrEmpty(model.Name)) { throw new ArgumentNullException(nameof(model.Name)); } if (!modelUpdate && ReadList(new SpecializationSearchModel { Name = model.Name }).Count != 0) { throw new InvalidOperationException($"Специальность с таким названием уже есть: \"{model.Name}\""); } } protected override SpecializationViewModel GetViewModel(Specialization model) { return new SpecializationViewModel { Id = model.Id, Name = model.Name, IsPediatric = model.IsPediatric, IsTherapeutic = model.IsTherapeutic }; } } }