public ValidationResult AtualizarCurso(Guid cursoId, string descricao)
        {
            var resultadoValidacao = new ValidationResult();
            var cursoDb = _cursoRepository.GetById(cursoId);

            cursoDb.AtualizarCurso(descricao);

            if (!cursoDb.IsValid)
            {
                resultadoValidacao.AdicionarErro(cursoDb.ResultadoValidacao);
                return resultadoValidacao;
            }

            var resultadoConsistencia = new CursoEstaConsistenteParaAtualizar(_cursoRepository).Validar(cursoDb);

            if (!resultadoConsistencia.IsValid)
            {
                resultadoValidacao.AdicionarErro(resultadoConsistencia);
                return resultadoValidacao;
            }

            _cursoRepository.Update(cursoDb);

            return resultadoValidacao;
        }
        public ValidationResult AtualizarCurso(Curso curso)
        {
            var resultadoValidacao = new ValidationResult();
            var cursoDb = _cursoRepository.GetById(curso.CursoId);

            cursoDb.AtualizarCurso(curso.Nome, curso.Ativo, curso.TipoCurso);

            if (!cursoDb.IsValid)
            {
                resultadoValidacao.AdicionarErro(cursoDb.ResultadoValidacao);
                return resultadoValidacao;
            }

            var resultadoConsistencia = new CursoEstaConsistenteParaAtualizarValidation(_cursoRepository).Validar(cursoDb);

            if (!resultadoConsistencia.IsValid)
            {
                resultadoValidacao.AdicionarErro(resultadoConsistencia);
                return resultadoValidacao;
            }

            _cursoRepository.Update(cursoDb);

            return resultadoValidacao;
        }
        protected ValidationAppResult DomainToApplicationResult(ValidationResult result)
        {
            var validationAppResult = new ValidationAppResult();

            foreach (var validationError in result.Erros)
            {
                validationAppResult.Erros.Add(new ValidationAppError(validationError.Message));
            }
            validationAppResult.IsValid = result.IsValid;

            return validationAppResult;
        }
        public ValidationResult AdicionarNovoAluno(Aluno aluno)
        {
            var resultadoValidacao = new ValidationResult();

            if (!aluno.IsValid)
            {
                resultadoValidacao.AdicionarErro(aluno.ResultadoValidacao);
                return resultadoValidacao;
            }

            var resultadoConsistencia = new AlunoEstaConsistenteParaCadastroValidation(_alunoRepository).Validar(aluno);

            if (!resultadoConsistencia.IsValid)
            {
                resultadoValidacao.AdicionarErro(resultadoConsistencia);
                return resultadoValidacao;
            }
            _alunoRepository.Add(aluno);

            return resultadoValidacao;
        }
        public ValidationResult AdicionarNovoCurso(Curso curso)
        {
            var resultadoValidacao = new ValidationResult();

            if (!curso.IsValid)
            {
                resultadoValidacao.AdicionarErro(curso.ResultadoValidacao);
                return resultadoValidacao;
            }

            var resultadoConsistencia = new CursoEstaConsistenteValidation(_cursoRepository).Validar(curso);

            if (!resultadoConsistencia.IsValid)
            {
                resultadoValidacao.AdicionarErro(resultadoConsistencia);
                return resultadoValidacao;
            }
            _cursoRepository.Add(curso);

            return resultadoValidacao;
        }
        public ValidationResult AtualizarCurso(Guid cursoId, string descricao, bool ativo)
        {
            var resultadoValidacao = new ValidationResult();
            var curso = _cursoRepository.GetById(cursoId);

            curso.AtualizarCurso(descricao);

            if (ativo)
                curso.AtivarCurso();
            else
                curso.DesativarCurso();

            if (!curso.IsValid)
            {
                resultadoValidacao.AdicionarErro(curso.ResultadoValidacao);
                return resultadoValidacao;
            }

            _cursoRepository.Update(curso);

            return resultadoValidacao;
        }