Реализовал логику для специальностей

This commit is contained in:
Никита Потапов 2024-05-15 01:59:17 +04:00
parent c65f745450
commit 06c2363ee3
2 changed files with 58 additions and 1 deletions

View File

@ -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<Specialization, SpecializationViewModel, SpecializationSearchModel>
{
public SpecializationLogic(
ILogger<AbstractLogic<Specialization, SpecializationViewModel, SpecializationSearchModel>> logger,
IStorage<Specialization> 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
};
}
}
}

View File

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