CourseWork_Bank/Bank/BankBusinessLogics/BusinessLogic/PurchaseLogic.cs

129 lines
5.0 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 BankContracts.BindingModels;
using BankContracts.BusinessLogicContracts;
using BankContracts.SearchModels;
using BankContracts.StoragesContracts;
using BankContracts.ViewModels;
using Microsoft.Extensions.Logging;
namespace BankBusinessLogics.BusinessLogic
{
public class PurchaseLogic : IPurchaseLogic
{
private readonly ILogger _logger;
private readonly IPurchaseStorage _purchaseVisitStorage;
public PurchaseLogic(ILogger<PurchaseLogic> logger, IPurchaseStorage purchaseVisitStorage)
{
_logger = logger;
_purchaseVisitStorage = purchaseVisitStorage;
}
public void CheckModel(PurchaseBindingModel model, bool checkParams = true)
{
if (model == null)
{
throw new ArgumentNullException(nameof(model));
}
if (checkParams is false)
{
return;
}
}
public List<PurchaseViewModel> ReadList(PurchaseSearchModel? model)
{
try
{
var results = model != null ? _purchaseVisitStorage.GetFilteredList(model) : _purchaseVisitStorage.GetFullList();
_logger.LogDebug("Полученные покупки: {@purchasesVisit}", results);
_logger.LogInformation("Извлечение списка в количестве {Count} c покупки по {@PurchaseSearchModel} модели", results.Count, model);
return results;
}
catch (Exception e)
{
_logger.LogError(e, "Произошла ошибка при попытки получить список по {@PurchaseSearchModel} модели", model);
throw;
}
}
public PurchaseViewModel ReadElement(PurchaseSearchModel model)
{
try
{
var result = _purchaseVisitStorage.GetElement(model);
if (result == null)
{
throw new ArgumentNullException($"Не получилось получить эдемент с id {model.Id}");
}
_logger.LogInformation("Извлечение элемента {@PurchaseViewModel} c покупки по {@PurchaseSearchModel} модели", result, model);
return result;
}
catch (Exception e)
{
_logger.LogError(e, "Произошла ошибка при попытки получить элемент по {@PurchaseSearchModel} модели", model);
throw;
}
}
public bool Create(PurchaseBindingModel model)
{
try
{
CheckModel(model);
var result = _purchaseVisitStorage.Insert(model);
if (result == null)
{
throw new ArgumentNullException($"Не удалось создать покупку");
}
_logger.LogInformation("Создана сущность {@PurchaseViewModel}", result);
return true;
}
catch (Exception e)
{
_logger.LogError(e, "Произошла ошибка при попытки создать элемент по {@PurchaseBindingModel} модели", model);
throw;
}
}
public bool Update(PurchaseBindingModel model)
{
try
{
CheckModel(model);
var result = _purchaseVisitStorage.Update(model);
if (result == null)
{
throw new ArgumentNullException($"Не удалось обновить покупку");
}
_logger.LogInformation("Была обновлена сущность на: {@PurchaseViewModel}", result);
return true;
}
catch (Exception e)
{
_logger.LogError(e, "Произошла ошибка при попытки обновить элемент по {@PurchaseBindingModel} модели", model);
throw;
}
}
public bool Delete(PurchaseBindingModel model)
{
try
{
CheckModel(model, false);
var result = _purchaseVisitStorage.Delete(model);
if (result == null)
{
throw new ArgumentNullException($"Ну удалось удалить покупку");
}
_logger.LogInformation("Сущность {@PurchaseViewModel} удалена ", result);
return true;
}
catch (Exception e)
{
_logger.LogError(e, "Произошла ошибка при попытки удалить элемент по {@PurchaseBindingModel} модели", model);
throw;
}
}
}
}