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)); }
public async Task <ValidationResult> Handle(RegisterNewCategoriaCommand message, CancellationToken cancellationToken) { if (!message.IsValid()) { return(message.ValidationResult); } var categoria = new Categoria(Guid.NewGuid(), message.Descricao); if (await _categoriaRepository.GetByName(categoria.Descricao) != null) { AddError("Esta categoria já existe no sistema."); return(ValidationResult); } categoria.AddDomainEvent(new CategoriaRegisteredEvent(categoria.Id, categoria.Descricao)); _categoriaRepository.Add(categoria); return(await Commit(_categoriaRepository.UnitOfWork)); }