コード例 #1
0
        public async Task <BaseResult> Handle(AdicionarAlunoCommand command, CancellationToken cancellationToken)
        {
            if (!command.Validar())
            {
                return(command.BaseResult);
            }

            var alunoExistente = await _alunoRepository.ObterPorCpfAsync(command.Cpf);

            if (alunoExistente != null)
            {
                AdicionarErro("Este CPF já está em uso por outro aluno!");
                return(BaseResult);
            }

            var aluno = new Aluno(command.Nome, command.DataNascimento, command.Rg, command.Cpf, command.Observacao, command.TurmaId);

            var endereco = new Endereco(command.Endereco.Logradouro, command.Endereco.Numero, command.Endereco.Complemento, command.Endereco.Bairro, command.Endereco.Cep, command.Endereco.Cidade, command.Endereco.Estado);

            var responsaveis = command.Responsaveis.Select(r => new Responsavel(r.Nome, r.DataNascimento, r.Rg, r.Cpf, r.Telefone, r.Celular, r.Email, r.Observacao)).ToList();

            var alunoResponsavel = new List <AlunoResponsavel>();

            foreach (var item in responsaveis)
            {
                alunoResponsavel.Add(new AlunoResponsavel(aluno, item));
            }

            aluno.AtribuirEndereco(endereco);
            aluno.AtribuirResponsaveis(alunoResponsavel);

            _alunoRepository.Adicionar(aluno);

            await _alunoRepository.SalvarAsync();

            BaseResult.id = aluno.Id;

            return(BaseResult);
        }