132 lines
5.5 KiB
C#
132 lines
5.5 KiB
C#
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;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|