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 SpellService : ISpellService { private IValidator _validator; private ISpellRepository _spellRepository; private IMapper _mapper; public SpellService(IValidator validator, ISpellRepository spellRepository, IMapper mapper) { _mapper = mapper; _validator = validator; _spellRepository = spellRepository; } public async Task AddSpellAsync(SpellDto dto) { if (_validator.ValidateSpellDto(dto)) { await _spellRepository.AddSpellAsync(_mapper.MapSpellDtoToSpellEntity(dto)); } return false; } public async Task DeleteSpellAsync(Guid id) { if (_validator.ValidateGuid(id)) { await _spellRepository.DeleteSpellAsync(id); } return false; } public async Task?> GetAllSpellAsync(SpellDtoFilter filter) { if (_validator.ValidateSpellDtoFilter(filter)) { await _spellRepository.GetAllSpellAsync(_mapper.MapSpellDtoFilterToSpellFilterEntity(filter)); } return null; } public async Task UpdateSpellAsync(SpellDtoFilter filter) { if (_validator.ValidateSpellDtoFilter(filter)) { await _spellRepository.UpdateSpellAsync(_mapper.MapSpellDtoFilterToSpellFilterEntity(filter)); } return false; } } }