public async Task <ValidationResult> Handle(RegisterCandidateCommand message, CancellationToken cancellationToken) { if (!message.IsValid()) { return(message.ValidationResult); } var candidate = new Candidate(message.Id, message.FirstName, message.LastName, message.BirthDate, message.Gender, message.CPF); var hasCandidateThisCpf = _candidateRepository.HasCandidateWithThisCPF(message.CPF); if (hasCandidateThisCpf) { AddError("Já existe um candidato com esse CPF cadastrado"); return(ValidationResult); } await _candidateRepository.Add(candidate); candidate.AddEvent(new RegisteredCandidateEvent(message.Id, message.CPF, message.FirstName, message.LastName, message.Email, message.BirthDate, message.Gender)); return(await SaveChanges(_candidateRepository.UnitOfWork)); }