47 lines
1.7 KiB
C#

using Liber_Incantamentum.Application.DTOs.Filter;
using Liber_Incantamentum.Application.DTOs.General;
using Liber_Incantamentum.Application.Interfaces.Generals;
using Liber_Incantamentum.Application.Interfaces.Mappings;
using Liber_Incantamentum.Application.Interfaces.Validations;
using Liber_Incantamentum.Domain.Repositories;
namespace Liber_Incantamentum.Application.Services.Generals
{
public class MageService : IMageService
{
private IValidator _validator;
private IMageRepository _mageRepository;
private IMapper _mapper;
public MageService(IMapper mapper, IMageRepository mageRepository, IValidator validator)
{
_mapper = mapper;
_mageRepository = mageRepository;
_validator = validator;
}
public async Task<bool> AddMageAsync(MageDto dto)
{
_validator.ValidateMageDto(dto);
return await _mageRepository.AddMageAsync(_mapper.MapMageDtoToMageEntity(dto));
}
public async Task<bool> DeleteMageAsync(Guid id)
{
_validator.ValidateGuid(id);
return await _mageRepository.DeleteMageAsync(id);
}
public async Task<ICollection<MageDto>?> GetAllMageAsync(MageDtoFilter filter)
{
_validator.ValidateMageDtoFilter(filter);
return await _mapper.MapMageEntityCollectionToMageDtoCollection(_mageRepository.GetAllMageAsync(_mapper.MapMageDtoFilterToMageFilterEntity(filter)));
}
public async Task<bool> UpdateMageAsync(MageDtoFilter dto)
{
_validator.ValidateMageDtoFilter(dto);
await _mageRepository.UpdateMageAsync(_mapper.MapMageDtoFilterToMageFilterEntity(dto));
return false;
}
}
}