Пример #1
0
        public async Task <ValidationResult> Handle(UpdateItemCommand request, CancellationToken cancellationToken)
        {
            if (!request.IsValid())
            {
                return(request.ValidationResult);
            }
            var item = await _showcaseRepository.GetByIdWithoutTracking(request.Id);

            if (item is null)
            {
                AddError("The showcase cannot update the item, because it does not exist in this showcase.");
                return(ValidationResult);
            }

            var updatedItem = new Item(
                request.Id,
                request.Name ?? item.Name,
                request.Description ?? item.Description,
                request.Category ?? item.Category
                );

            updatedItem.AddDomainEvent(new UpdatedItemEvent(
                                           updatedItem.Id, updatedItem.Name, updatedItem.Description, updatedItem.Category
                                           ));

            _showcaseRepository.Update(updatedItem);

            return(await Commit(_showcaseRepository.UnitOfWork));
        }