public void ValidacaoCadastroSAS_SemSID()
        {
            var manter = new ManterSolucaoEducacionalService();

            // Usuario com SSID inválido
            var usuario = new Usuario
            {
                CPF              = "04482645109",
                DataNascimento   = new DateTime(1991, 1, 14),
                Nome             = "VILSON PEREIRA DOS SANTOS",
                Sexo             = "1",
                Email            = "*****@*****.**",
                SID_Usuario      = "S-1-5-21-881038022-2994736296-2543795088-13118",
                TelefoneExibicao = "6592777831",
                UF = new Uf
                {
                    ID   = 1,
                    Nome = "Nacional"
                }
            };

            try
            {
                manter.CadastrarSAS(usuario, new Academico.BP.integracaoSAS.TreinamentoSasClient());
            }
            catch (Exception e)
            {
                Assert.That(e.Message.Contains("SSID"));
            }
        }
        protected void btnEnviar_Click(object sender, EventArgs e)
        {
            //this.SetarAcaoDaTela(enumAcaoTelaMatriculaOferta.NovaMatricula);
            var manterUsuario = new ManterUsuario();
            var usuarioLogado = manterUsuario.ObterUsuarioLogado();

            try
            {
                if (string.IsNullOrEmpty(ddlTurma.SelectedValue) || int.Parse(ddlTurma.SelectedValue) <= 0)
                {
                    throw new AcademicoException("Selecione uma turma para alterar a inscrição");
                }

                if (string.IsNullOrEmpty(ddlStatus.SelectedValue) || int.Parse(ddlStatus.SelectedValue) <= 0)
                {
                    throw new AcademicoException("Selecione um status");
                }

                var dtDataMatricula = DateTime.Now;
                var dtDataConclusao = DateTime.Now;

                if (IsAdminOrGestorUc && !string.IsNullOrEmpty(txtDataInscricao.Text))
                {
                    try
                    {
                        dtDataMatricula = Convert.ToDateTime(txtDataInscricao.Text);
                    }
                    catch
                    {
                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Data de Matrícula inválida.");
                        return;
                    }
                    try
                    {
                        dtDataConclusao = Convert.ToDateTime(txtDataConclusao.Text);
                    }
                    catch
                    {
                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Data de Conclusão inválida.");
                        return;
                    }
                }

                var manterTurma = new ManterTurma();

                if (!usuarioLogado.IsAdministrador())
                {
                    var matriculaOferta       = this.ObterObjetoMatriculaOferta();
                    var manterMatriculaOferta = new ManterMatriculaOferta();

                    var idOferta          = matriculaOferta.Oferta.ID;
                    var cpf               = matriculaOferta.Usuario.CPF;
                    var idStatusMatricula = ddlStatus.SelectedIndex > 0 ? int.Parse(ddlStatus.SelectedValue) : 0;
                    var idTurma           = ddlTurma.SelectedIndex > 0 ? int.Parse(ddlTurma.SelectedValue) : 0;

                    new ManterMatriculaOfertaService().MatriculaSolucaoEducacionalGestorUC(idOferta, cpf,
                                                                                           idStatusMatricula, idTurma, usuarioLogado.CPF);

                    //Dispara o evento informando que a matricula em uma oferta foi realizada
                    if (MatriculouAlunoEmUmaOferta == null)
                    {
                        return;
                    }
                    var mo = manterMatriculaOferta.ObterPorUsuarioESolucaoEducacional(matriculaOferta.Usuario.ID,
                                                                                      matriculaOferta.Oferta.SolucaoEducacional.ID);

                    if (mo != null && mo.ToList().Any())
                    {
                        matriculaOferta = mo.FirstOrDefault();
                        if (matriculaOferta == null)
                        {
                            return;
                        }
                        //Obtem as informações da matricula Oferta (inclusive a lista de turmas da oferta)
                        matriculaOferta = manterMatriculaOferta.ObterInformacoesDaMatricula(matriculaOferta.ID);
                    }

                    AdicionaOfertEmMatriculaTurma(matriculaOferta);

                    MatriculouAlunoEmUmaOferta(this, new MatricularAlunoEmUmaOfertaEventArgs(matriculaOferta));
                    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "myscript",
                                                        " $('#EdicaoNivel, #modal-background').removeClass('active');", true);

                    LimparCamposMatriculaAluno();

                    //Cadastrar Solucao Educacional com o SAS
                    var manterSEService = new ManterSolucaoEducacionalService();

                    if (matriculaOferta.Oferta.SolucaoEducacional.IntegracaoComSAS)
                    {
                        manterSEService.CadastrarSAS(matriculaOferta.Usuario, new BP.integracaoSAS.TreinamentoSasClient());
                    }

                    //Matricular Aluno no Moodle
                    manterSEService.MatricularAlunoMoodle(matriculaOferta.Usuario, matriculaOferta.Oferta);

                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Aluno cadastrado com sucesso.");
                }
                else
                {
                    if (!string.IsNullOrEmpty(txtDataInscricao.Text))
                    {
                        var idTurma = ddlTurma.SelectedIndex > 0 ? int.Parse(ddlTurma.SelectedValue) : 0;
                        var turma   = manterTurma.ObterTurmaPorID(idTurma);

                        if (turma == null)
                        {
                            WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Turma não encontrada.");
                            return;
                        }
                        var dataValida = turma.Oferta.DataInicioInscricoes.HasValue &&
                                         turma.Oferta.DataFimInscricoes.HasValue &&
                                         dtDataMatricula.Date.Between(turma.Oferta.DataInicioInscricoes.Value.Date,
                                                                      turma.Oferta.DataFimInscricoes.Value.Date);

                        if (!dataValida)
                        {
                            WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                                         turma.Oferta.DataInicioInscricoes.HasValue && turma.Oferta.DataFimInscricoes.HasValue
                                    ? "Data de Matrícula deve ser entre " +
                                                         turma.Oferta.DataInicioInscricoes.Value.Date.ToString("dd/MM/yyyy") + " e " +
                                                         turma.Oferta.DataFimInscricoes.Value.Date.ToString("dd/MM/yyyy")
                                    : "Data de Matrícula inválida.");
                            return;
                        }

                        var dataValidaConclusao = dtDataConclusao.Date >= turma.DataInicio;

                        if (!dataValidaConclusao)
                        {
                            WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                                         "Data de Conclusão deve ser maior ou igual à: " + turma.DataInicio.ToString("dd/MM/yyyy"));
                            return;
                        }
                    }

                    var matriculaOferta       = this.ObterObjetoMatriculaOferta();
                    var manterMatriculaOferta = new ManterMatriculaOferta();
                    if (matriculaOferta.Oferta != null)
                    {
                        if (
                            matriculaOferta.Oferta.ListaMatriculaOferta.Any(
                                x =>
                                x.Usuario.ID == matriculaOferta.Usuario.ID &&
                                (x.StatusMatricula == enumStatusMatricula.Inscrito ||
                                 x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno)))
                        {
                            throw new AcademicoException("Usuário já inscrito nesta oferta");
                        }
                    }

                    // Verificar permissao de matricula de acordo com as regras de permissão da Oferta.
                    if (matriculaOferta.Oferta != null &&
                        !matriculaOferta.Oferta.UsuarioPossuiPermissao(matriculaOferta.Usuario))
                    {
                        throw new AcademicoException("Usuário não possui permissão para essa oferta");
                    }

                    if (!divDataInscricao.Visible)
                    {
                        (new ManterMatriculaOferta()).VerificarPoliticaDeConsequencia(matriculaOferta);
                    }

                    SalvarMatriculaOferta(manterMatriculaOferta, matriculaOferta);

                    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "myscript",
                                                        " $('#EdicaoNivel, #modal-background').removeClass('active');", true);

                    LimparCamposMatriculaAluno();

                    //Cadastrar Solucao Educacional com o SAS
                    var manterSEService = new ManterSolucaoEducacionalService();

                    if (matriculaOferta.Oferta.SolucaoEducacional.IntegracaoComSAS)
                    {
                        manterSEService.CadastrarSAS(matriculaOferta.Usuario, new BP.integracaoSAS.TreinamentoSasClient());
                    }

                    //Matricular Aluno no Moodle
                    manterSEService.MatricularAlunoMoodle(matriculaOferta.Usuario, matriculaOferta.Oferta);

                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Aluno cadastrado com sucesso.");
                }
            }
            catch (AcademicoException ex)
            {
                // Lógica para alteração de status quando o usuário for administrador ou gestor uc
                if (LupaUsuario.SelectedUser != null && (usuarioLogado.IsAdministrador() || usuarioLogado.IsGestor()))
                {
                    try
                    {
                        var matriculaOferta = ObterObjetoMatriculaOferta();


                        //Status
                        if (ddlStatus.SelectedItem != null && !string.IsNullOrWhiteSpace(ddlStatus.SelectedItem.Value))
                        {
                            if (ExisteComStatusRepetido((enumStatusMatricula)int.Parse(ddlStatus.SelectedItem.Value), matriculaOferta))
                            {
                                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Não é possível inserir uma nova matrícula com o mesmo status");
                                return;
                            }
                        }

                        lblAvisoModalConfirmacaoInscricao.Text = ex.Message;
                        pnlModalConfirmacaoInscricao.Visible   = true;
                        return;
                    }
                    catch
                    {
                    }
                }

                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                return;
            }
            catch (PoliticaConsequenciaException ex)
            {
                if (!IsAdminOrGestorUc)
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                    return;
                }

                lblAvisoModalConfirmacaoInscricao.Text = ex.Message;
                pnlModalConfirmacaoInscricao.Visible   = true;
            }
        }