public async Task <ValidationResult> Handle(UpdateCategoriaCommand message, CancellationToken cancellationToken)
        {
            if (!message.IsValid())
            {
                return(message.ValidationResult);
            }

            var categoria         = new Categoria(message.Id, message.Descricao);
            var existingCategoria = await _categoriaRepository.GetByName(categoria.Descricao);

            if (existingCategoria != null && existingCategoria.Id != categoria.Id)
            {
                if (!existingCategoria.Equals(categoria))
                {
                    AddError("A Categoria já foi atualizada");
                    return(ValidationResult);
                }
            }

            categoria.AddDomainEvent(new CategoriaUpdatedEvent(categoria.Id, categoria.Descricao));

            _categoriaRepository.Update(categoria);

            return(await Commit(_categoriaRepository.UnitOfWork));
        }
Example #2
0
        public Task <bool> Handle(UpdateCategoriaCommand message, CancellationToken cancellationToken)
        {
            if (!message.IsValid())
            {
                NotifyValidationErrors(message);
                return(Task.FromResult(false));
            }

            var categoria       = new Categoria(message.Id, message.Nome, message.Descricao);
            var categoriaExiste = _categoriaRepository.GetByDescricao(categoria.Descricao);

            if (categoriaExiste != null && categoriaExiste.Id != categoria.Id)
            {
                if (!categoriaExiste.Equals(categoria))
                {
                    Bus.RaiseEvent(new DomainNotification(message.MessageType, "A Categria  cliente já foi recebido."));
                    return(Task.FromResult(false));
                }
            }

            _categoriaRepository.Update(categoria);

            if (Commit())
            {
                Bus.RaiseEvent(new CategoriaUpdatedEvent(categoria.Id, categoria.Nome, categoria.Descricao));
            }

            return(Task.FromResult(true));
        }