using MediatR; using cuqmbr.TravelGuide.Application.Common.Persistence; using cuqmbr.TravelGuide.Application.Common.Exceptions; namespace cuqmbr.TravelGuide.Application.Cities.Commands.DeleteCity; public class DeleteCityCommandHandler : IRequestHandler { private readonly UnitOfWork _unitOfWork; public DeleteCityCommandHandler(UnitOfWork unitOfWork) { _unitOfWork = unitOfWork; } public async Task Handle( DeleteCityCommand request, CancellationToken cancellationToken) { var entity = await _unitOfWork.CityRepository.GetOneAsync( e => e.Guid == request.Guid, cancellationToken); if (entity == null) { throw new NotFoundException(); } await _unitOfWork.CityRepository.DeleteOneAsync( entity, cancellationToken); await _unitOfWork.SaveAsync(cancellationToken); _unitOfWork.Dispose(); } }