Files
Check/MagicCarpetProject/MagicCarpetWebApi/Adapters/EmployeeAdapter.cs
2025-05-22 09:32:03 +04:00

269 lines
11 KiB
C#

using MagicCarpetContracts.AdapterContracts;
using MagicCarpetContracts.AdapterContracts.OperationResponses;
using MagicCarpetContracts.BindingModels;
using MagicCarpetContracts.BuisnessLogicContracts;
using MagicCarpetContracts.DataModels;
using MagicCarpetContracts.Exceptions;
using MagicCarpetContracts.Mapper;
using MagicCarpetContracts.Resources;
using MagicCarpetContracts.ViewModels;
using Microsoft.Extensions.Localization;
namespace MagicCarpetWebApi.Adapters;
internal class EmployeeAdapter(IEmployeeBusinessLogicContract employeeBusinessLogicContract, IStringLocalizer<Messages> localizer, ILogger<EmployeeAdapter> logger) : IEmployeeAdapter
{
private readonly IEmployeeBusinessLogicContract _employeeBusinessLogicContract = employeeBusinessLogicContract;
private readonly IStringLocalizer<Messages> _localizer = localizer;
private readonly ILogger _logger = logger;
private EmployeeViewModel MapEmployeeViewModel(EmployeeDataModel source)
{
return CustomMapper.MapObject<EmployeeViewModel>(source);
}
public EmployeeOperationResponse GetList(bool includeDeleted)
{
try
{
var data = _employeeBusinessLogicContract.GetAllEmployees(!includeDeleted);
return EmployeeOperationResponse.OK(data.Select(MapEmployeeViewModel).ToList());
}
catch (StorageException ex)
{
_logger.LogError(ex, "StorageException");
return EmployeeOperationResponse.InternalServerError(string.Format(_localizer["AdapterMessageStorageException"], ex.InnerException!.Message));
}
catch (Exception ex)
{
_logger.LogError(ex, "Exception");
return EmployeeOperationResponse.InternalServerError(ex.Message);
}
}
public EmployeeOperationResponse GetPostList(string id, bool includeDeleted)
{
try
{
var data = _employeeBusinessLogicContract.GetAllEmployeesByPost(id, !includeDeleted);
return EmployeeOperationResponse.OK(data.Select(MapEmployeeViewModel).ToList());
}
catch (ValidationException ex)
{
_logger.LogError(ex, "ValidationException");
return EmployeeOperationResponse.BadRequest(string.Format(_localizer["AdapterMessageValidationException"], ex.Message));
}
catch (StorageException ex)
{
_logger.LogError(ex, "StorageException");
return EmployeeOperationResponse.InternalServerError(string.Format(_localizer["AdapterMessageStorageException"], ex.InnerException!.Message));
}
catch (Exception ex)
{
_logger.LogError(ex, "Exception");
return EmployeeOperationResponse.InternalServerError(ex.Message);
}
}
public EmployeeOperationResponse GetListByBirthDate(DateTime fromDate, DateTime toDate, bool includeDeleted)
{
try
{
var data = _employeeBusinessLogicContract.GetAllEmployeesByBirthDate(
fromDate.ToUniversalTime(),
toDate.ToUniversalTime(),
!includeDeleted);
return EmployeeOperationResponse.OK(data.Select(MapEmployeeViewModel).ToList());
}
catch (IncorrectDatesException ex)
{
_logger.LogError(ex, "IncorrectDatesException");
return EmployeeOperationResponse.BadRequest(string.Format(_localizer["AdapterMessageIncorrectDatesException"], ex.Message));
}
catch (StorageException ex)
{
_logger.LogError(ex, "StorageException");
return EmployeeOperationResponse.InternalServerError(string.Format(_localizer["AdapterMessageStorageException"], ex.InnerException!.Message));
}
catch (Exception ex)
{
_logger.LogError(ex, "Exception");
return EmployeeOperationResponse.InternalServerError(ex.Message);
}
}
public EmployeeOperationResponse GetListByEmploymentDate(DateTime fromDate, DateTime toDate, bool includeDeleted)
{
try
{
var data = _employeeBusinessLogicContract.GetAllEmployeesByEmploymentDate(
fromDate.ToUniversalTime(),
toDate.ToUniversalTime(),
!includeDeleted);
return EmployeeOperationResponse.OK(data.Select(MapEmployeeViewModel).ToList());
}
catch (IncorrectDatesException ex)
{
_logger.LogError(ex, "IncorrectDatesException");
return EmployeeOperationResponse.BadRequest(string.Format(_localizer["AdapterMessageIncorrectDatesException"], ex.Message));
}
catch (StorageException ex)
{
_logger.LogError(ex, "StorageException");
return EmployeeOperationResponse.InternalServerError(string.Format(_localizer["AdapterMessageStorageException"], ex.InnerException!.Message));
}
catch (Exception ex)
{
_logger.LogError(ex, "Exception");
return EmployeeOperationResponse.InternalServerError(ex.Message);
}
}
public EmployeeOperationResponse GetElement(string data)
{
try
{
var employee = _employeeBusinessLogicContract.GetEmployeeByData(data);
return EmployeeOperationResponse.OK(MapEmployeeViewModel(employee));
}
catch (ArgumentNullException ex)
{
_logger.LogError(ex, "ArgumentNullException");
return EmployeeOperationResponse.BadRequest(_localizer["AdapterMessageEmptyDate"]);
}
catch (ValidationException ex)
{
_logger.LogError(ex, "ValidationException");
return EmployeeOperationResponse.BadRequest(string.Format(_localizer["AdapterMessageValidationException"], ex.Message));
}
catch (ElementNotFoundException ex)
{
_logger.LogError(ex, "ElementNotFoundException");
return EmployeeOperationResponse.NotFound(string.Format(_localizer["AdapterMessageElementNotFoundException"], data));
}
catch (StorageException ex)
{
_logger.LogError(ex, "StorageException");
return EmployeeOperationResponse.InternalServerError(string.Format(_localizer["AdapterMessageStorageException"], ex.InnerException!.Message));
}
catch (Exception ex)
{
_logger.LogError(ex, "Exception");
return EmployeeOperationResponse.InternalServerError(ex.Message);
}
}
public EmployeeOperationResponse RegisterEmployee(EmployeeBindingModel employeeModel)
{
try
{
var dataModel = CustomMapper.MapObject<EmployeeDataModel>(employeeModel);
_employeeBusinessLogicContract.InsertEmployee(dataModel);
return EmployeeOperationResponse.NoContent();
}
catch (ArgumentNullException ex)
{
_logger.LogError(ex, "ArgumentNullException");
return EmployeeOperationResponse.BadRequest(_localizer["AdapterMessageEmptyDate"]);
}
catch (ValidationException ex)
{
_logger.LogError(ex, "ValidationException");
return EmployeeOperationResponse.BadRequest(string.Format(_localizer["AdapterMessageValidationException"], ex.Message));
}
catch (ElementExistsException ex)
{
_logger.LogError(ex, "ElementExistsException");
return EmployeeOperationResponse.BadRequest(ex.Message);
}
catch (StorageException ex)
{
_logger.LogError(ex, "StorageException");
return EmployeeOperationResponse.InternalServerError(string.Format(_localizer["AdapterMessageStorageException"], ex.InnerException!.Message));
}
catch (Exception ex)
{
_logger.LogError(ex, "Exception");
return EmployeeOperationResponse.InternalServerError(ex.Message);
}
}
public EmployeeOperationResponse ChangeEmployeeInfo(EmployeeBindingModel employeeModel)
{
try
{
var dataModel = CustomMapper.MapObject<EmployeeDataModel>(employeeModel);
_employeeBusinessLogicContract.UpdateEmployee(dataModel);
return EmployeeOperationResponse.NoContent();
}
catch (ArgumentNullException ex)
{
_logger.LogError(ex, "ArgumentNullException");
return EmployeeOperationResponse.BadRequest(_localizer["AdapterMessageEmptyDate"]);
}
catch (ValidationException ex)
{
_logger.LogError(ex, "ValidationException");
return EmployeeOperationResponse.BadRequest(string.Format(_localizer["AdapterMessageValidationException"], ex.Message));
}
catch (ElementNotFoundException ex)
{
_logger.LogError(ex, "ElementNotFoundException");
return EmployeeOperationResponse.BadRequest(string.Format(_localizer["AdapterMessageElementNotFoundException"], employeeModel.Id));
}
catch (ElementExistsException ex)
{
_logger.LogError(ex, "ElementExistsException");
return EmployeeOperationResponse.BadRequest(ex.Message);
}
catch (StorageException ex)
{
_logger.LogError(ex, "StorageException");
return EmployeeOperationResponse.InternalServerError(string.Format(_localizer["AdapterMessageStorageException"], ex.InnerException!.Message));
}
catch (Exception ex)
{
_logger.LogError(ex, "Exception");
return EmployeeOperationResponse.InternalServerError(ex.Message);
}
}
public EmployeeOperationResponse RemoveEmployee(string id)
{
try
{
_employeeBusinessLogicContract.DeleteEmployee(id);
return EmployeeOperationResponse.NoContent();
}
catch (ArgumentNullException ex)
{
_logger.LogError(ex, "ArgumentNullException");
return EmployeeOperationResponse.BadRequest(_localizer["AdapterMessageEmptyDate"]);
}
catch (ValidationException ex)
{
_logger.LogError(ex, "ValidationException");
return EmployeeOperationResponse.BadRequest(string.Format(_localizer["AdapterMessageValidationException"], ex.Message));
}
catch (ElementNotFoundException ex)
{
_logger.LogError(ex, "ElementNotFoundException");
return EmployeeOperationResponse.BadRequest(string.Format(_localizer["AdapterMessageElementNotFoundException"], id));
}
catch (StorageException ex)
{
_logger.LogError(ex, "StorageException");
return EmployeeOperationResponse.InternalServerError(string.Format(_localizer["AdapterMessageStorageException"], ex.InnerException!.Message));
}
catch (Exception ex)
{
_logger.LogError(ex, "Exception");
return EmployeeOperationResponse.InternalServerError(ex.Message);
}
}
}