Files
PIBD-23_Coursach_YouAreProg…/YouAreProgrammerShop/YAPWebAPI/Adapters/WorkerAdapter.cs

113 lines
3.7 KiB
C#

using AutoMapper;
using YAPContracts.AdapterContracts;
using YAPContracts.BindingModels;
using YAPContracts.BusinessLogicContracts;
using YAPContracts.DataModels;
using YAPContracts.DataModels.UserRoles;
using YAPContracts.Extentions;
using YAPContracts.ViewModels;
using YAPDatabase.Models;
namespace YAPWebAPI.Adapters
{
public class WorkerAdapter : IWorkerAdapter
{
private readonly IWorkerBusinessLogicContract _workerBL;
private readonly ILogger _logger;
private readonly Mapper _mapper;
public WorkerAdapter(IWorkerBusinessLogicContract workerBL, ILogger logger)
{
_logger = logger;
_workerBL = workerBL;
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<WorkerBindingModel, WorkerDataModel>();
cfg.CreateMap<WorkerDataModel, WorkerViewModel>();
cfg.CreateMap<WorkerViewModel, WorkerDataModel>();
});
_mapper = new Mapper(config);
}
public List<WorkerViewModel> GetList()
{
try
{
return _workerBL.GetAllWorkers()
.Select(x => _mapper.Map<WorkerViewModel>(x)).ToList();
}
catch (Exception ex)
{
// Handle exceptions as needed, e.g., log them or rethrow
_logger.LogError(ex, "Error in Worker GetList");
throw new Exception("Error retrieving users list", ex);
}
}
public WorkerViewModel? GetElement(string data)
{
try
{
var dataModel = _workerBL.GetWorkerByData(data);
return dataModel != null ? _mapper.Map<WorkerViewModel>(dataModel) : null;
}
catch (Exception ex)
{
_logger.LogError(ex, "Error in Worker GetElement");
throw new Exception($"Error retrieving user with data {data}", ex);
}
}
public void Register(WorkerBindingModel model)
{
try
{
if (model == null)
{
throw new ArgumentNullException(nameof(model), "User data model cannot be null");
}
var dataModel = _mapper.Map<WorkerDataModel>(model);
_workerBL.InsertWorker(dataModel);
}
catch (Exception ex)
{
_logger.LogError(ex, "Error in Worker Register");
throw new Exception("Error adding user data model", ex);
}
}
public void Update(WorkerBindingModel model)
{
try
{
if (model == null)
{
throw new ArgumentNullException(nameof(model), "User data model cannot be null");
}
var dataModel = _mapper.Map<WorkerDataModel>(model);
_workerBL.UpdateWorker(dataModel);
}
catch (Exception ex)
{
_logger.LogError(ex, "Error in Worker Update");
throw new Exception("Error adding user data model", ex);
}
}
public void Delete(string id)
{
try
{
if (!id.IsGuid()) throw new ArgumentException(nameof(id), "Incorrect Id");
_workerBL.DeleteWorker(id);
}
catch (Exception ex)
{
// Handle exceptions as needed, e.g., log them or rethrow
_logger.LogError(ex, "Error in Worker Delete");
throw new Exception($"Error deleting purchase with ID {id}", ex);
}
}
}
}