コード例 #1
0
        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);
        }
コード例 #2
0
        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());
        }