public async Task <Unit> Handle(DeleteManufacturerFromProductCommand request, CancellationToken cancellationToken) { var products = await _productRepository.GetRangeAsync(p => p.Manufacturers.Any(m => m.Id == request.Id)); foreach (var product in products) { product.Manufacturers.RemoveAll(m => m.Id == request.Id); await _productRepository.UpdateAsync(p => p.Id == product.Id, product); } await _manufacturerRepository.DeleteAsync(m => m.Id == request.Id); return(Unit.Value); }
public async Task <Result <object> > Handle(DeleteManufacturerCommand request, CancellationToken cancellationToken) { var cacheKey = $"Manufacturer-{request.Id}"; if (!await _cacheService.IsExistsAsync(cacheKey)) { var manufacturerInDb = await _manufacturerRepository.GetAsync(m => m.Id == request.Id); manufacturerInDb.CheckForNull(); } await _sender.PublishAsync(new DeletedManufacturer(request.Id), cancellationToken); await _manufacturerRepository.DeleteAsync(m => m.Id == request.Id); await _cacheService.RemoveAsync(cacheKey); return(Result <object> .Success()); }