Exemplo n.º 1
0
        public void Criar(CriarPessoaCommand command)
        {
            using (var trans = new TransactionScope())
            {
                var pessoa = _pessoaRepository.BuscaPorNomeSobrenome(command.Nome, command.Sobrenome)
                             ?? new Pessoa(command.Nome, command.Sobrenome);

                if (string.IsNullOrWhiteSpace(command.Nome) ||
                    string.IsNullOrWhiteSpace(command.Sobrenome))
                {
                    this.AddNotification("Nome e Sobrenome", "Nome e Sobrenome são obrigatórios");
                }
                if (this.Invalid)
                {
                    return;
                }

                pessoa.Genero       = command.Genero;
                pessoa.Etnia        = command.Etnia;
                pessoa.Escolaridade = command.Escolaridade;
                pessoa.Regiao       = command.Regiao;

                if (command.Regiao == 0)
                {
                    this.AddNotification("Regiao", "A região é obrigatória para o censo");
                }
                if (this.Invalid)
                {
                    return;
                }

                pessoa.Pai = ExistePai(command);
                pessoa.Mae = ExisteMae(command);

                //Adiciona a pessoa
                _pessoaRepository.AdicionaOuAtualiza(pessoa, pessoa.Pai.PessoaId, pessoa.Mae.PessoaId);

                //Adiciona os filhos
                AdicionaFilhos(command.Filhos, command.Genero, pessoa);

                trans.Complete();
            }
        }