ISEbd-22_CourseWork_School/School/SchoolBusinessLogics/BusinessLogics/DisciplineLogic.cs

132 lines
5.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using SchoolContracts.BindingModels;
using SchoolContracts.BusinessLogicContracts;
using SchoolContracts.SearchModels;
using SchoolContracts.StoragesContracts;
using SchoolContracts.ViewModels;
using Microsoft.Extensions.Logging;
namespace SchoolBusinessLogics.BusinessLogics
{
public class DisciplineLogic : IDisciplineLogic
{
private readonly ILogger _logger;
private readonly IDisciplineStorage _disciplineStorage;
public DisciplineLogic(ILogger<DisciplineLogic> logger, IDisciplineStorage disciplineStorage)
{
_logger = logger;
_disciplineStorage = disciplineStorage;
}
public void CheckModel(DisciplineBindingModel model, bool checkParams = true)
{
const string txt = "Произошла ошибка на уровне проверки DisciplineBindingModel.";
if (model == null)
{
throw new ArgumentNullException(nameof(model), txt);
}
if (checkParams is false)
{
return;
}
}
public List<DisciplineViewModel> ReadList(DisciplineSearchModel? model)
{
try
{
var results = model != null ? _disciplineStorage.GetFilteredList(model) : _disciplineStorage.GetFullList();
_logger.LogDebug("Список полученных дисциплин на посещение: {@disciplinesVisit}", results);
_logger.LogInformation("Извлечение списка в количестве {Count} c дисциплин на посещение по модели: {@DisciplineSearchModel}", results.Count, model);
return results;
}
catch (Exception e)
{
_logger.LogError(e, "Произошла ошибка при попытки получить список по модели: {@DisciplineSearchModel}", model);
throw;
}
}
public DisciplineViewModel ReadElement(DisciplineSearchModel model)
{
try
{
var result = _disciplineStorage.GetElement(model);
if (result == null)
{
throw new ArgumentNullException($"Результат получения элемента с айди {model.Id} оказался нулевым");
}
_logger.LogInformation("Извлечение элемента {@DisciplineViewModel} c дисциплин на посещение по модели: {@DisciplineSearchModel}", result, model);
return result;
}
catch (Exception e)
{
_logger.LogError(e, "Произошла ошибка при попытки получить элемент по модели: {@DisciplineSearchModel}", model);
throw;
}
}
public bool Create(DisciplineBindingModel model)
{
try
{
CheckModel(model);
var result = _disciplineStorage.Insert(model);
if (result == null)
{
throw new ArgumentNullException($"Результат создания дисциплины на посещение оказался нулевым");
}
_logger.LogInformation("Была создана сущность: {@DisciplineViewModel}", result);
return true;
}
catch (Exception e)
{
_logger.LogError(e, "Произошла ошибка при попытки создать элемент по модели: {@DisciplineBindingModel}", model);
throw;
}
}
public bool Update(DisciplineBindingModel model)
{
try
{
CheckModel(model);
var result = _disciplineStorage.Update(model);
if (result == null)
{
throw new ArgumentNullException($"Результат обновления дисциплины на посещение оказался нулевым");
}
_logger.LogInformation("Была обновлена сущность на: {@DisciplineViewModel}", result);
return true;
}
catch (Exception e)
{
_logger.LogError(e, "Произошла ошибка при попытки обновить элемент по модели: {@DisciplineBindingModel}", model);
throw;
}
}
public bool Delete(DisciplineBindingModel model)
{
try
{
CheckModel(model, false);
var result = _disciplineStorage.Delete(model);
if (result == null)
{
throw new ArgumentNullException($"Результат удаления дисциплины на посещение оказался нулевым");
}
_logger.LogInformation("Была удалена сущность: {@DisciplineViewModel}", result);
return true;
}
catch (Exception e)
{
_logger.LogError(e, "Произошла ошибка при попытки удалить элемент по модели: {@DisciplineBindingModel}", model);
throw;
}
}
}
}