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

104 lines
3.6 KiB
C#

using AutoMapper;
using YAPContracts.AdapterContracts.OperationResponses;
using YAPContracts.AdapterContracts;
using YAPContracts.BindingModels;
using YAPContracts.BusinessLogicContracts;
using YAPContracts.DataModels.UserRoles;
using YAPContracts.ViewModels;
namespace YAPWebAPI.Adapters
{
public class StorekeeperAdapter : IStorekeeperAdapter
{
private readonly IStorekeeperBusinessLogicContract _storekeeperBusinessLogic;
private readonly ILogger _logger;
private readonly Mapper _mapper;
public StorekeeperAdapter(IStorekeeperBusinessLogicContract storekeeperBusinessLogic, ILogger logger)
{
_storekeeperBusinessLogic = storekeeperBusinessLogic;
_logger = logger;
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<StorekeeperBindingModel, StorekeeperDataModel>();
cfg.CreateMap<StorekeeperDataModel, StorekeeperViewModel>();
cfg.CreateMap<StorekeeperViewModel, StorekeeperDataModel>();
});
_mapper = new Mapper(config);
}
public StorekeeperOperationResponse GetList()
{
try
{
return StorekeeperOperationResponse.OK(
[.. _storekeeperBusinessLogic.GetAllStorekeepers().Select(x => _mapper.Map<StorekeeperViewModel>(x))]
);
}
catch (Exception ex)
{
_logger.LogError(ex, "Error in GetList");
return StorekeeperOperationResponse.InternalServerError(ex.Message);
}
}
public StorekeeperOperationResponse GetElement(string data)
{
try
{
return StorekeeperOperationResponse.OK(
_mapper.Map<StorekeeperViewModel>(_storekeeperBusinessLogic.GetStorekeeperByData(data))
);
}
catch (Exception ex)
{
_logger.LogError(ex, "Error in GetElement");
return StorekeeperOperationResponse.InternalServerError(ex.Message);
}
}
public StorekeeperOperationResponse Register(StorekeeperBindingModel model)
{
try
{
_storekeeperBusinessLogic.InsertStorekeeper(_mapper.Map<StorekeeperDataModel>(model));
return StorekeeperOperationResponse.NoContent();
}
catch (Exception ex)
{
_logger.LogError(ex, "Error in Register");
return StorekeeperOperationResponse.InternalServerError(ex.Message);
}
}
public StorekeeperOperationResponse Update(StorekeeperBindingModel model)
{
try
{
_storekeeperBusinessLogic.UpdateStorekeeper(_mapper.Map<StorekeeperDataModel>(model));
return StorekeeperOperationResponse.NoContent();
}
catch (Exception ex)
{
_logger.LogError(ex, "Error in Update");
return StorekeeperOperationResponse.InternalServerError(ex.Message);
}
}
public StorekeeperOperationResponse Delete(string id)
{
try
{
_storekeeperBusinessLogic.DeleteStorekeeper(id);
return StorekeeperOperationResponse.NoContent();
}
catch (Exception ex)
{
_logger.LogError(ex, "Error in Delete");
return StorekeeperOperationResponse.InternalServerError(ex.Message);
}
}
}
}