using MediatR; using StorageService.Domain.AggregatesModel.SampleAggregate; namespace StorageService.API.Application.Commands; /// /// EN: Handler for DeleteSampleCommand. /// VI: Handler cho DeleteSampleCommand. /// public class DeleteSampleCommandHandler : IRequestHandler { private readonly ISampleRepository _sampleRepository; private readonly ILogger _logger; public DeleteSampleCommandHandler( ISampleRepository sampleRepository, ILogger logger) { _sampleRepository = sampleRepository ?? throw new ArgumentNullException(nameof(sampleRepository)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } public async Task Handle( DeleteSampleCommand request, CancellationToken cancellationToken) { _logger.LogInformation( "Deleting sample {SampleId} / Xóa sample {SampleId}", request.SampleId); // EN: Get existing sample / VI: Lấy sample đã tồn tại var sample = await _sampleRepository.GetAsync(request.SampleId); if (sample is null) { _logger.LogWarning( "Sample {SampleId} not found / Sample {SampleId} không tìm thấy", request.SampleId); return false; } // EN: Delete sample / VI: Xóa sample _sampleRepository.Delete(sample); // EN: Save changes / VI: Lưu thay đổi await _sampleRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); _logger.LogInformation( "Sample {SampleId} deleted successfully / Sample {SampleId} đã xóa thành công", request.SampleId); return true; } }