Example #1
0
        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));
        }