75 lines
2.6 KiB
C#

using Microsoft.Extensions.Logging;
using NorthBridgeContract.BusinessLogicsContracts;
using NorthBridgeContract.DataModels;
using NorthBridgeContract.Enums;
using NorthBridgeContract.Exceptions;
using NorthBridgeContract.StoragesContracts;
namespace NorthBridgeBusinessLogic.Implementations
{
internal class ComponentBusinessLogicContract(IComponentStorageContract componentStorageContract, ILogger logger) : IComponentBusinessLogicContract
{
private readonly ILogger _logger = logger;
private readonly IComponentStorageContract _componentStorageContract = componentStorageContract;
public List<ComponentDataModel> GetAllComponents(bool onlyActive)
{
return [];
}
public ComponentDataModel? GetComponentById(string id)
{
return new ComponentDataModel("", "", ComponentType.None, "", 0, false);
}
public ComponentDataModel? GetComponentByName(string name)
{
return new ComponentDataModel("", "", ComponentType.None, "", 0, false);
}
public void InsertComponent(ComponentDataModel componentDataModel)
{
componentDataModel.Validate();
_componentStorageContract.AddElement(componentDataModel);
}
public void UpdateComponent(ComponentDataModel componentDataModel)
{
var existingComponent = _componentStorageContract.GetElementById(componentDataModel.Id);
if (existingComponent == null)
throw new ValidationException("Component not found");
if (existingComponent.Price != componentDataModel.Price)
{
var historyEntry = new ComponentHistoryDataModel(existingComponent.Id, existingComponent.Price);
historyEntry.Validate();
_componentStorageContract.AddComponentHistory(historyEntry);
}
componentDataModel.Validate();
_componentStorageContract.UpdElement(componentDataModel);
}
public void DeleteComponent(string id)
{
_componentStorageContract.DelElement(id);
}
public void RestoreComponent(string id)
{
_componentStorageContract.ResElement(id);
}
public List<ComponentHistoryDataModel> GetComponentHistory(string componentId)
{
return _componentStorageContract.GetComponentHistory(componentId);
}
public ComponentDataModel GetComponentByData(string data)
{
return new ComponentDataModel("", "", ComponentType.None, "", 0, false);
}
}
}