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 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 GetComponentHistory(string componentId) { return _componentStorageContract.GetComponentHistory(componentId); } public ComponentDataModel GetComponentByData(string data) { return new ComponentDataModel("", "", ComponentType.None, "", 0, false); } } }