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 AddMageAsync(MageDto dto) { _validator.ValidateMageDto(dto); return await _mageRepository.AddMageAsync(_mapper.MapMageDtoToMageEntity(dto)); } public async Task DeleteMageAsync(Guid id) { _validator.ValidateGuid(id); return await _mageRepository.DeleteMageAsync(id); } public async Task?> GetAllMageAsync(MageDtoFilter filter) { _validator.ValidateMageDtoFilter(filter); return await _mapper.MapMageEntityCollectionToMageDtoCollection(_mageRepository.GetAllMageAsync(_mapper.MapMageDtoFilterToMageFilterEntity(filter))); } public async Task UpdateMageAsync(MageDtoFilter dto) { _validator.ValidateMageDtoFilter(dto); await _mageRepository.UpdateMageAsync(_mapper.MapMageDtoFilterToMageFilterEntity(dto)); return false; } } }