diff --git a/VetClinic/VetClinicBusinessLogic/BusinessLogics/GuidanceLogic.cs b/VetClinic/VetClinicBusinessLogic/BusinessLogics/GuidanceLogic.cs new file mode 100644 index 0000000..ba9c190 --- /dev/null +++ b/VetClinic/VetClinicBusinessLogic/BusinessLogics/GuidanceLogic.cs @@ -0,0 +1,108 @@ +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.BindingModels; +using VetClinicContracts.BusinessLogicsContracts; +using VetClinicContracts.SearchModels; +using VetClinicContracts.StoragesContracts; +using VetClinicContracts.ViewModels; + +namespace VetClinicBusinessLogic.BusinessLogics +{ + public class GuidanceLogic : IGuidanceLogic + { + private readonly ILogger _logger; + private readonly IGuidanceStorage _guidanceStorage; + + public GuidanceLogic(ILogger logger, IGuidanceStorage guidanceStorage) + { + _logger = logger; + _guidanceStorage = guidanceStorage; + } + + public GuidanceViewModel? ReadElement(GuidanceSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + _logger.LogInformation("ReadElement. Id:{ Id}", model.Id); + var element = _guidanceStorage.GetElement(model); + if (element == null) + { + _logger.LogWarning("ReadElement element not found"); + return null; + } + _logger.LogInformation("ReadElement find. Id:{Id}", element.Id); + return element; + } + + public List? ReadList(GuidanceSearchModel? model) + { + _logger.LogInformation("ReadList. Id:{ Id}", model?.Id); + var list = model == null ? _guidanceStorage.GetFullList() : + _guidanceStorage.GetFilteredList(model); + if (list == null) + { + _logger.LogWarning("ReadList return null list"); + return null; + } + _logger.LogInformation("ReadList. Count:{Count}", list.Count); + return list; + } + + public bool Create(GuidanceBindingModel model) + { + CheckModel(model); + if (_guidanceStorage.Insert(model) == null) + { + _logger.LogWarning("Insert operation failed"); + return false; + } + return true; + } + public bool Update(GuidanceBindingModel model) + { + CheckModel(model); + if (_guidanceStorage.Update(model) == null) + { + _logger.LogWarning("Update operation failed"); + return false; + } + return true; + } + public bool Delete(GuidanceBindingModel model) + { + CheckModel(model, false); + _logger.LogInformation("Delete. Id:{Id}", model.Id); + if (_guidanceStorage.Delete(model) == null) + { + _logger.LogWarning("Delete operation failed"); + return false; + } + return true; + } + private void CheckModel(GuidanceBindingModel model, bool withParams = + true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (string.IsNullOrEmpty(model.Text)) + { + throw new ArgumentNullException("Нет текста рекомендации", + nameof(model.Text)); + } + + _logger.LogInformation("Guidance. Text:{Text}.", model.Text); + } + } +} diff --git a/VetClinic/VetClinicBusinessLogic/BusinessLogics/MedicineLogic.cs b/VetClinic/VetClinicBusinessLogic/BusinessLogics/MedicineLogic.cs new file mode 100644 index 0000000..ac1bf77 --- /dev/null +++ b/VetClinic/VetClinicBusinessLogic/BusinessLogics/MedicineLogic.cs @@ -0,0 +1,119 @@ +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.BindingModels; +using VetClinicContracts.BusinessLogicsContracts; +using VetClinicContracts.SearchModels; +using VetClinicContracts.StoragesContracts; +using VetClinicContracts.ViewModels; + +namespace VetClinicBusinessLogic.BusinessLogics +{ + public class MedicineLogic : IMedicineLogic + { + private readonly ILogger _logger; + private readonly IMedicineStorage _medicineStorage; + public MedicineLogic(ILogger logger, IMedicineStorage iceCreamStorage) + { + _logger = logger; + _medicineStorage = iceCreamStorage; + } + + public List? ReadList(MedicineSearchModel? model) + { + _logger.LogInformation("ReadList. MedicineName:{MedicineName}. Id:{ Id}", model?.MedicineName, model?.Id); + var list = model == null ? _medicineStorage.GetFullList() : +_medicineStorage.GetFilteredList(model); + if (list == null) + { + _logger.LogWarning("ReadList return null list"); + return null; + } + _logger.LogInformation("ReadList. Count:{Count}", list.Count); + return list; + } + public MedicineViewModel? ReadElement(MedicineSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + _logger.LogInformation("ReadElement. MedicineName:{MedicineName}.Id:{ Id}", model.MedicineName, model.Id); + var element = _medicineStorage.GetElement(model); + if (element == null) + { + _logger.LogWarning("ReadElement element not found"); + return null; + } + _logger.LogInformation("ReadElement find. Id:{Id}", element.Id); + return element; + } + + public bool Create(MedicineBindingModel model) + { + CheckModel(model); + if (_medicineStorage.Insert(model) == null) + { + _logger.LogWarning("Insert operation failed"); + return false; + } + return true; + } + + public bool Update(MedicineBindingModel model) + { + CheckModel(model); + if (_medicineStorage.Update(model) == null) + { + _logger.LogWarning("Update operation failed"); + return false; + } + return true; + } + public bool Delete(MedicineBindingModel model) + { + CheckModel(model, false); + _logger.LogInformation("Delete. Id:{Id}", model.Id); + if (_medicineStorage.Delete(model) == null) + { + _logger.LogWarning("Delete operation failed"); + return false; + } + return true; + } + + private void CheckModel(MedicineBindingModel model, bool withParams = +true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (string.IsNullOrEmpty(model.MedicineName)) + { + throw new ArgumentNullException("Нет названия медикамента", + nameof(model.MedicineName)); + } + if (model.Price <= 0) + { + throw new ArgumentNullException("Цена медикамента должна быть больше 0", nameof(model.Price)); + } + _logger.LogInformation("Medicine. Medicine:{MedicineName}. Price:{ Price }. Id: { Id}", model.MedicineName, model.Price, model.Id); + var element = _medicineStorage.GetElement(new MedicineSearchModel + { + MedicineName = model.MedicineName + }); + if (element != null && element.Id != model.Id) + { + throw new InvalidOperationException("Медикамент с таким названием уже есть"); + } + } + } +} diff --git a/VetClinic/VetClinicBusinessLogic/BusinessLogics/PharmacistLogic.cs b/VetClinic/VetClinicBusinessLogic/BusinessLogics/PharmacistLogic.cs new file mode 100644 index 0000000..5050ce5 --- /dev/null +++ b/VetClinic/VetClinicBusinessLogic/BusinessLogics/PharmacistLogic.cs @@ -0,0 +1,123 @@ +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.BindingModels; +using VetClinicContracts.BusinessLogicsContracts; +using VetClinicContracts.SearchModels; +using VetClinicContracts.StoragesContracts; +using VetClinicContracts.ViewModels; + +namespace VetClinicBusinessLogic.BusinessLogics +{ + public class PharmacistLogic : IPharmacistLogic + { + private readonly ILogger _logger; + private readonly IPharmacistStorage _pharmacistStorage; + public PharmacistLogic(ILogger logger, IPharmacistStorage + pharmacistStorage) + { + _logger = logger; + _pharmacistStorage = pharmacistStorage; + } + public List? ReadList(PharmacistSearchModel? model) + { + _logger.LogInformation("ReadList. PharmacistFIO:{PharmacistFIO}. Id:{ Id}", model?.PharmacistFIO, model?.Id); + var list = model == null ? _pharmacistStorage.GetFullList() : + _pharmacistStorage.GetFilteredList(model); + if (list == null) + { + _logger.LogWarning("ReadList return null list"); + return null; + } + _logger.LogInformation("ReadList. Count:{Count}", list.Count); + return list; + } + public PharmacistViewModel? ReadElement(PharmacistSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + _logger.LogInformation("ReadElement. PharmacistFIO:{PharmacistFIO}.Id:{ Id}", model.PharmacistFIO, model.Id); + var element = _pharmacistStorage.GetElement(model); + if (element == null) + { + _logger.LogWarning("ReadElement element not found"); + return null; + } + _logger.LogInformation("ReadElement find. Id:{Id}", element.Id); + return element; + } + public bool Create(PharmacistBindingModel model) + { + CheckModel(model); + if (_pharmacistStorage.Insert(model) == null) + { + _logger.LogWarning("Insert operation failed"); + return false; + } + return true; + } + public bool Update(PharmacistBindingModel model) + { + CheckModel(model); + if (_pharmacistStorage.Update(model) == null) + { + _logger.LogWarning("Update operation failed"); + return false; + } + return true; + } + public bool Delete(PharmacistBindingModel model) + { + CheckModel(model, false); + _logger.LogInformation("Delete. Id:{Id}", model.Id); + if (_pharmacistStorage.Delete(model) == null) + { + _logger.LogWarning("Delete operation failed"); + return false; + } + return true; + } + private void CheckModel(PharmacistBindingModel model, bool withParams = + true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (string.IsNullOrEmpty(model.PharmacistFIO)) + { + throw new ArgumentNullException("Нет ФИО клиента", + nameof(model.PharmacistFIO)); + } + if (string.IsNullOrEmpty(model.Email)) + { + throw new ArgumentNullException("Нет Email клиента", + nameof(model.Email)); + } + if (string.IsNullOrEmpty(model.Password)) + { + throw new ArgumentNullException("Нет пароля клиента", + nameof(model.Password)); + } + _logger.LogInformation("Pharmacist. PharmacistFIO:{PharmacistFIO}." + + "Email:{ Email}. Password:{ Password}. Id: { Id} ", model.PharmacistFIO, model.Email, model.Password, model.Id); + var element = _pharmacistStorage.GetElement(new PharmacistSearchModel + { + Email = model.Email, + }); + if (element != null && element.Id != model.Id) + { + throw new InvalidOperationException("Клиент с таким логином уже есть"); + } + } + } +} diff --git a/VetClinic/VetClinicBusinessLogic/BusinessLogics/ServiceLogic.cs b/VetClinic/VetClinicBusinessLogic/BusinessLogics/ServiceLogic.cs new file mode 100644 index 0000000..ba326ed --- /dev/null +++ b/VetClinic/VetClinicBusinessLogic/BusinessLogics/ServiceLogic.cs @@ -0,0 +1,120 @@ +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.BindingModels; +using VetClinicContracts.BusinessLogicsContracts; +using VetClinicContracts.SearchModels; +using VetClinicContracts.StoragesContracts; +using VetClinicContracts.ViewModels; + +namespace VetClinicBusinessLogic.BusinessLogics +{ + public class ServiceLogic : IServiceLogic + { + private readonly ILogger _logger; + private readonly IServiceStorage _serviceStorage; + public ServiceLogic(ILogger logger, IServiceStorage serviceStorage) + { + _logger = logger; + _serviceStorage = serviceStorage; + } + + public List? ReadList(ServiceSearchModel? model) + { + _logger.LogInformation("ReadList. ServiceName:{ServiceName}. Id:{ Id}", model?.ServiceName, model?.Id); + var list = model == null ? _serviceStorage.GetFullList() : +_serviceStorage.GetFilteredList(model); + if (list == null) + { + _logger.LogWarning("ReadList return null list"); + return null; + } + _logger.LogInformation("ReadList. Count:{Count}", list.Count); + return list; + } + public ServiceViewModel? ReadElement(ServiceSearchModel model) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + _logger.LogInformation("ReadElement. ServiceName:{ServiceName}.Id:{ Id}", model.ServiceName, model.Id); + var element = _serviceStorage.GetElement(model); + if (element == null) + { + _logger.LogWarning("ReadElement element not found"); + return null; + } + _logger.LogInformation("ReadElement find. Id:{Id}", element.Id); + return element; + } + + public bool Create(ServiceBindingModel model) + { + CheckModel(model); + if (_serviceStorage.Insert(model) == null) + { + _logger.LogWarning("Insert operation failed"); + return false; + } + return true; + } + + public bool Update(ServiceBindingModel model) + { + CheckModel(model); + if (_serviceStorage.Update(model) == null) + { + _logger.LogWarning("Update operation failed"); + return false; + } + return true; + } + public bool Delete(ServiceBindingModel model) + { + CheckModel(model, false); + _logger.LogInformation("Delete. Id:{Id}", model.Id); + if (_serviceStorage.Delete(model) == null) + { + _logger.LogWarning("Delete operation failed"); + return false; + } + return true; + } + + private void CheckModel(ServiceBindingModel model, bool withParams = +true) + { + if (model == null) + { + throw new ArgumentNullException(nameof(model)); + } + if (!withParams) + { + return; + } + if (string.IsNullOrEmpty(model.ServiceName)) + { + throw new ArgumentNullException("Нет названия услуги", + nameof(model.ServiceName)); + } + if (model.Price <= 0) + { + throw new ArgumentNullException("Цена мороженного услуги быть больше 0", nameof(model.Price)); + } + _logger.LogInformation("Service. ServiceName:{ServiceName}. Price:{ Price }. Id: { Id}", model.ServiceName, model.Price, model.Id); + var element = _serviceStorage.GetElement(new ServiceSearchModel + { + ServiceName = model.ServiceName + }); + if (element != null && element.Id != model.Id) + { + throw new InvalidOperationException("Услуга с таким названием уже есть"); + } + } + + } +} diff --git a/VetClinic/VetClinicContracts/BindingModels/GuidanceBindingModel.cs b/VetClinic/VetClinicContracts/BindingModels/GuidanceBindingModel.cs new file mode 100644 index 0000000..bcb0639 --- /dev/null +++ b/VetClinic/VetClinicContracts/BindingModels/GuidanceBindingModel.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicDataModels.Models; + +namespace VetClinicContracts.BindingModels +{ + public class GuidanceBindingModel : IGuidanceModel + { + public int Id { get; set; } + public string Text { get; set; } = string.Empty; + public DateTime Date { get; set; } + public int ServiceId { get; set; } + } +} diff --git a/VetClinic/VetClinicContracts/BindingModels/MedicineBindingModel.cs b/VetClinic/VetClinicContracts/BindingModels/MedicineBindingModel.cs new file mode 100644 index 0000000..5abd45c --- /dev/null +++ b/VetClinic/VetClinicContracts/BindingModels/MedicineBindingModel.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicDataModels.Models; + +namespace VetClinicContracts.BindingModels +{ + public class MedicineBindingModel : IMedicineModel + { + public int Id { get; set; } + public string MedicineName { get; set; } = string.Empty; + public int Price { get; set; } + public int PharmacistId { get; set; } + public Dictionary MedicineAnimals { get; set; } = new(); + } +} diff --git a/VetClinic/VetClinicContracts/BindingModels/PharmacistBindingModel.cs b/VetClinic/VetClinicContracts/BindingModels/PharmacistBindingModel.cs new file mode 100644 index 0000000..31a9c92 --- /dev/null +++ b/VetClinic/VetClinicContracts/BindingModels/PharmacistBindingModel.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicDataModels.Models; + +namespace VetClinicContracts.BindingModels +{ + public class PharmacistBindingModel : IPharmacistModel + { + public int Id { get; set; } + public string PharmacistFIO { get; set; } = string.Empty; + public string Email { get; set; } = string.Empty; + public string Password { get; set; } = string.Empty; + } +} diff --git a/VetClinic/VetClinicContracts/BindingModels/ServiceBindingModel.cs b/VetClinic/VetClinicContracts/BindingModels/ServiceBindingModel.cs new file mode 100644 index 0000000..2ff2fd7 --- /dev/null +++ b/VetClinic/VetClinicContracts/BindingModels/ServiceBindingModel.cs @@ -0,0 +1,19 @@ +using Microsoft.Identity.Client; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicDataModels.Models; + +namespace VetClinicContracts.BindingModels +{ + public class ServiceBindingModel : IServiceModel + { + public int Id { get; set; } + public string ServiceName { get; set; } = string.Empty; + public int Price { get; set; } + public int PharmacistId { get; set; } + public Dictionary ServiceMedicines { get; set; } = new(); + } +} diff --git a/VetClinic/VetClinicContracts/BusinessLogicsContracts/IGuidanceLogic.cs b/VetClinic/VetClinicContracts/BusinessLogicsContracts/IGuidanceLogic.cs new file mode 100644 index 0000000..068b019 --- /dev/null +++ b/VetClinic/VetClinicContracts/BusinessLogicsContracts/IGuidanceLogic.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.BindingModels; +using VetClinicContracts.SearchModels; +using VetClinicContracts.ViewModels; + +namespace VetClinicContracts.BusinessLogicsContracts +{ + public interface IGuidanceLogic + { + List? ReadList(GuidanceSearchModel? model); + GuidanceViewModel? ReadElement(GuidanceSearchModel model); + bool Create(GuidanceBindingModel model); + bool Update(GuidanceBindingModel model); + bool Delete(GuidanceBindingModel model); + } +} diff --git a/VetClinic/VetClinicContracts/BusinessLogicsContracts/IMedicineLogic.cs b/VetClinic/VetClinicContracts/BusinessLogicsContracts/IMedicineLogic.cs new file mode 100644 index 0000000..91e79c9 --- /dev/null +++ b/VetClinic/VetClinicContracts/BusinessLogicsContracts/IMedicineLogic.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.BindingModels; +using VetClinicContracts.SearchModels; +using VetClinicContracts.ViewModels; + +namespace VetClinicContracts.BusinessLogicsContracts +{ + public interface IMedicineLogic + { + List? ReadList(MedicineSearchModel? model); + MedicineViewModel? ReadElement(MedicineSearchModel model); + bool Create(MedicineBindingModel model); + bool Update(MedicineBindingModel model); + bool Delete(MedicineBindingModel model); + } +} diff --git a/VetClinic/VetClinicContracts/BusinessLogicsContracts/IPharmacistLogic.cs b/VetClinic/VetClinicContracts/BusinessLogicsContracts/IPharmacistLogic.cs new file mode 100644 index 0000000..6620899 --- /dev/null +++ b/VetClinic/VetClinicContracts/BusinessLogicsContracts/IPharmacistLogic.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.BindingModels; +using VetClinicContracts.SearchModels; +using VetClinicContracts.ViewModels; + +namespace VetClinicContracts.BusinessLogicsContracts +{ + public interface IPharmacistLogic + { + List? ReadList(PharmacistSearchModel? model); + PharmacistViewModel? ReadElement(PharmacistSearchModel model); + bool Create(PharmacistBindingModel model); + bool Update(PharmacistBindingModel model); + bool Delete(PharmacistBindingModel model); + } +} diff --git a/VetClinic/VetClinicContracts/BusinessLogicsContracts/IServiceLogic.cs b/VetClinic/VetClinicContracts/BusinessLogicsContracts/IServiceLogic.cs new file mode 100644 index 0000000..ba9387b --- /dev/null +++ b/VetClinic/VetClinicContracts/BusinessLogicsContracts/IServiceLogic.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.BindingModels; +using VetClinicContracts.SearchModels; +using VetClinicContracts.ViewModels; + +namespace VetClinicContracts.BusinessLogicsContracts +{ + public interface IServiceLogic + { + List? ReadList(ServiceSearchModel? model); + ServiceViewModel? ReadElement(ServiceSearchModel model); + bool Create(ServiceBindingModel model); + bool Update(ServiceBindingModel model); + bool Delete(ServiceBindingModel model); + } +} diff --git a/VetClinic/VetClinicContracts/SearchModels/GuidanceSearchModel.cs b/VetClinic/VetClinicContracts/SearchModels/GuidanceSearchModel.cs new file mode 100644 index 0000000..bb4e0af --- /dev/null +++ b/VetClinic/VetClinicContracts/SearchModels/GuidanceSearchModel.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VetClinicContracts.SearchModels +{ + public class GuidanceSearchModel + { + public int? Id { get; set; } + public string? Text { get; set; } + public DateTime? DateFrom { get; set; } + public DateTime? DateTo { get; set; } + public int? ServiceId { get; set; } + } +} diff --git a/VetClinic/VetClinicContracts/SearchModels/MedicineSearchModel.cs b/VetClinic/VetClinicContracts/SearchModels/MedicineSearchModel.cs new file mode 100644 index 0000000..c7caf8e --- /dev/null +++ b/VetClinic/VetClinicContracts/SearchModels/MedicineSearchModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VetClinicContracts.SearchModels +{ + public class MedicineSearchModel + { + public int? Id { get; set; } + public string? MedicineName { get; set; } = string.Empty; + public int? PharmacistId { get; set; } + } +} diff --git a/VetClinic/VetClinicContracts/SearchModels/PharmacistSearchModel.cs b/VetClinic/VetClinicContracts/SearchModels/PharmacistSearchModel.cs new file mode 100644 index 0000000..c505976 --- /dev/null +++ b/VetClinic/VetClinicContracts/SearchModels/PharmacistSearchModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VetClinicContracts.SearchModels +{ + public class PharmacistSearchModel + { + public int? Id { get; set; } + public string? PharmacistFIO { get; set; } = string.Empty; + public string? Email { get; set; } = string.Empty; + public string? Password { get; set; } = string.Empty; + } +} diff --git a/VetClinic/VetClinicContracts/SearchModels/ServiceSearchModel.cs b/VetClinic/VetClinicContracts/SearchModels/ServiceSearchModel.cs new file mode 100644 index 0000000..edf5d11 --- /dev/null +++ b/VetClinic/VetClinicContracts/SearchModels/ServiceSearchModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VetClinicContracts.SearchModels +{ + public class ServiceSearchModel + { + public int? Id { get; set; } + public string? ServiceName { get; set; } = string.Empty; + public int? PharmacistId { get; set; } + } +} diff --git a/VetClinic/VetClinicContracts/StoragesContracts/IGuidanceStorage.cs b/VetClinic/VetClinicContracts/StoragesContracts/IGuidanceStorage.cs new file mode 100644 index 0000000..b3d7c3e --- /dev/null +++ b/VetClinic/VetClinicContracts/StoragesContracts/IGuidanceStorage.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.BindingModels; +using VetClinicContracts.SearchModels; +using VetClinicContracts.ViewModels; + +namespace VetClinicContracts.StoragesContracts +{ + public interface IGuidanceStorage + { + List GetFullList(); + List GetFilteredList(GuidanceSearchModel model); + GuidanceViewModel? GetElement(GuidanceSearchModel model); + GuidanceViewModel? Insert(GuidanceBindingModel model); + GuidanceViewModel? Update(GuidanceBindingModel model); + GuidanceViewModel? Delete(GuidanceBindingModel model); + } +} diff --git a/VetClinic/VetClinicContracts/StoragesContracts/IMedicineStorage.cs b/VetClinic/VetClinicContracts/StoragesContracts/IMedicineStorage.cs new file mode 100644 index 0000000..83da44e --- /dev/null +++ b/VetClinic/VetClinicContracts/StoragesContracts/IMedicineStorage.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.BindingModels; +using VetClinicContracts.SearchModels; +using VetClinicContracts.ViewModels; + +namespace VetClinicContracts.StoragesContracts +{ + public interface IMedicineStorage + { + List GetFullList(); + List GetFilteredList(MedicineSearchModel model); + MedicineViewModel? GetElement(MedicineSearchModel model); + MedicineViewModel? Insert(MedicineBindingModel model); + MedicineViewModel? Update(MedicineBindingModel model); + MedicineViewModel? Delete(MedicineBindingModel model); + } +} diff --git a/VetClinic/VetClinicContracts/StoragesContracts/IPharmacistStorage.cs b/VetClinic/VetClinicContracts/StoragesContracts/IPharmacistStorage.cs new file mode 100644 index 0000000..49bfc6f --- /dev/null +++ b/VetClinic/VetClinicContracts/StoragesContracts/IPharmacistStorage.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.BindingModels; +using VetClinicContracts.SearchModels; +using VetClinicContracts.ViewModels; + +namespace VetClinicContracts.StoragesContracts +{ + public interface IPharmacistStorage + { + List GetFullList(); + List GetFilteredList(PharmacistSearchModel model); + PharmacistViewModel? GetElement(PharmacistSearchModel model); + PharmacistViewModel? Insert(PharmacistBindingModel model); + PharmacistViewModel? Update(PharmacistBindingModel model); + PharmacistViewModel? Delete(PharmacistBindingModel model); + } +} diff --git a/VetClinic/VetClinicContracts/StoragesContracts/IServiceStorage.cs b/VetClinic/VetClinicContracts/StoragesContracts/IServiceStorage.cs new file mode 100644 index 0000000..f94ac6f --- /dev/null +++ b/VetClinic/VetClinicContracts/StoragesContracts/IServiceStorage.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicContracts.BindingModels; +using VetClinicContracts.SearchModels; +using VetClinicContracts.ViewModels; + +namespace VetClinicContracts.StoragesContracts +{ + public interface IServiceStorage + { + List GetFullList(); + List GetFilteredList(ServiceSearchModel model); + ServiceViewModel? GetElement(ServiceSearchModel model); + ServiceViewModel? Insert(ServiceBindingModel model); + ServiceViewModel? Update(ServiceBindingModel model); + ServiceViewModel? Delete(ServiceBindingModel model); + } +} diff --git a/VetClinic/VetClinicContracts/ViewModels/GuidanceViewModel.cs b/VetClinic/VetClinicContracts/ViewModels/GuidanceViewModel.cs new file mode 100644 index 0000000..a868c55 --- /dev/null +++ b/VetClinic/VetClinicContracts/ViewModels/GuidanceViewModel.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicDataModels.Models; + +namespace VetClinicContracts.ViewModels +{ + public class GuidanceViewModel : IGuidanceModel + { + public int Id { get; set; } + [DisplayName("Текст рекомендации")] + public string Text { get; set; } = string.Empty; + [DisplayName("Дата рекомендации")] + public DateTime Date { get; set; } + [DisplayName("Услуга")] + public string ServiceName { get; set; } = string.Empty; + public int ServiceId { get; set; } + } +} diff --git a/VetClinic/VetClinicContracts/ViewModels/MedicineViewModel.cs b/VetClinic/VetClinicContracts/ViewModels/MedicineViewModel.cs new file mode 100644 index 0000000..87bdb71 --- /dev/null +++ b/VetClinic/VetClinicContracts/ViewModels/MedicineViewModel.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicDataModels.Models; + +namespace VetClinicContracts.ViewModels +{ + public class MedicineViewModel : IMedicineModel + { + public int Id { get; set; } + [DisplayName("Название медикамента")] + public string MedicineName { get; set; } = string.Empty; + [DisplayName("Цена медикамента")] + public int Price { get; set; } + [DisplayName("Фармацевт")] + public string PharmacistFIO { get; set; } = string.Empty; + public int PharmacistId { get; set; } + public Dictionary MedicineAnimals { get; set; } = new(); + } +} diff --git a/VetClinic/VetClinicContracts/ViewModels/PharmacistViewModel.cs b/VetClinic/VetClinicContracts/ViewModels/PharmacistViewModel.cs new file mode 100644 index 0000000..8f91c9f --- /dev/null +++ b/VetClinic/VetClinicContracts/ViewModels/PharmacistViewModel.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicDataModels.Models; + +namespace VetClinicContracts.ViewModels +{ + public class PharmacistViewModel : IPharmacistModel + { + public int Id { get; set; } + [DisplayName("ФИО кладовщика")] + public string PharmacistFIO { get; set; } = string.Empty; + [DisplayName("Логин (эл. почта)")] + public string Email { get; set; } = string.Empty; + [DisplayName("Пароль")] + public string Password { get; set; } = string.Empty; + } +} diff --git a/VetClinic/VetClinicContracts/ViewModels/ServiceViewModel.cs b/VetClinic/VetClinicContracts/ViewModels/ServiceViewModel.cs new file mode 100644 index 0000000..4d6ec24 --- /dev/null +++ b/VetClinic/VetClinicContracts/ViewModels/ServiceViewModel.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VetClinicDataModels.Models; + +namespace VetClinicContracts.ViewModels +{ + public class ServiceViewModel : IServiceModel + { + public int Id { get; set; } + [DisplayName("Название услуги")] + public string ServiceName { get; set; } = string.Empty; + [DisplayName("Цена услуги")] + public int Price { get; set; } + [DisplayName("Фармацевт")] + public string PharmacistFIO { get; set; } = string.Empty; + public int PharmacistId { get; set; } + public Dictionary ServiceMedicines { get; set; } = new(); + } +} diff --git a/VetClinic/VetClinicDataModels/Models/IGuidanceModel.cs b/VetClinic/VetClinicDataModels/Models/IGuidanceModel.cs new file mode 100644 index 0000000..ce4e90c --- /dev/null +++ b/VetClinic/VetClinicDataModels/Models/IGuidanceModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VetClinicDataModels.Models +{ + public interface IGuidanceModel : IId + { + string Text { get; } + DateTime Date { get; } + int ServiceId { get; } + } +} diff --git a/VetClinic/VetClinicDataModels/Models/IMedicineModel.cs b/VetClinic/VetClinicDataModels/Models/IMedicineModel.cs new file mode 100644 index 0000000..8793843 --- /dev/null +++ b/VetClinic/VetClinicDataModels/Models/IMedicineModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VetClinicDataModels.Models +{ + public interface IMedicineModel : IId + { + string MedicineName { get; } + int Price { get; } + int PharmacistId { get; } + Dictionary MedicineAnimals { get; } + } +} diff --git a/VetClinic/VetClinicDataModels/Models/IPharmacistModel.cs b/VetClinic/VetClinicDataModels/Models/IPharmacistModel.cs new file mode 100644 index 0000000..4416edb --- /dev/null +++ b/VetClinic/VetClinicDataModels/Models/IPharmacistModel.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VetClinicDataModels.Models +{ + public interface IPharmacistModel : IId + { + string PharmacistFIO { get; } + string Email { get; } + string Password { get; } + } +} diff --git a/VetClinic/VetClinicDataModels/Models/IServiceModel.cs b/VetClinic/VetClinicDataModels/Models/IServiceModel.cs new file mode 100644 index 0000000..28a7527 --- /dev/null +++ b/VetClinic/VetClinicDataModels/Models/IServiceModel.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace VetClinicDataModels.Models +{ + public interface IServiceModel : IId + { + string ServiceName { get; } + int Price { get; } + int PharmacistId { get; } + Dictionary ServiceMedicines { get; } + } +}