/// <summary>
    /// Carrega os combos da tela de acordo com os dados.
    /// </summary>
    /// <param name="pfi_id">Id do processo fechamento/início.</param>
    /// <param name="parametroFormacaoTurmas">Estrutura de formação de turmas.</param>
    /// <param name="turnos">Tabela com os turnos.</param>
    /// <param name="exclusivoDeficientes">Indica se curso é exclusivo para deficientes.</param>
    private void CarregarCombos(int pfi_id, ParametroFormacaoTurmas parametroFormacaoTurmas, DataTable turnos, bool exclusivoDeficientes)
    {
        CarregarTurno(turnos);
        UCComboCalendario.CarregarCalendarioAnualPorCursoAnoInicio(VS_cur_id, pfi_id);
        UCComboCalendario.SelectedIndex = 0;
        UCComboFormatoAvaliacao.CarregarPorRegrasCurso
        (
            -1
            , parametroFormacaoTurmas.entityParametroPeriodo.cur_id
            , parametroFormacaoTurmas.entityParametroPeriodo.crr_id
            , parametroFormacaoTurmas.entityParametroPeriodo.crp_id
            , parametroFormacaoTurmas.entityParametroPeriodo.pft_docenteEspecialista
        );

        cblTiposDeficiencia.DataSource = PES_TipoDeficienciaBO.GetSelect();
        cblTiposDeficiencia.DataBind();

        ddlControleCapacidade.Items.Clear();
        ddlControleCapacidade.Items.Add(new ListItem("Sem controle", ((byte)MTR_ParametroFormacaoTurmaTipoControleCapacidade.SemControle).ToString()));
        ddlControleCapacidade.Items.Add(new ListItem("Capacidade normal e "
                                                     + ACA_ParametroAcademicoBO.ParametroValorPorEntidade(eChaveAcademico.TERMO_ALUNOS_DEFICIENCIA_TURMAS_NORMAIS, __SessionWEB.__UsuarioWEB.Usuario.ent_id).ToLower()
                                                     , ((byte)MTR_ParametroFormacaoTurmaTipoControleCapacidade.CapacidadeNormal).ToString()));
        ddlControleCapacidade.Items.Add(new ListItem("Capacidade normal e individual por "
                                                     + ACA_ParametroAcademicoBO.ParametroValorPorEntidade(eChaveAcademico.TERMO_ALUNOS_DEFICIENCIA_TURMAS_NORMAIS, __SessionWEB.__UsuarioWEB.Usuario.ent_id).ToLower()
                                                     , ((byte)MTR_ParametroFormacaoTurmaTipoControleCapacidade.CapacidadeNormalIndividual).ToString()));

        ddlTiposDeficienciaAlunoIncluidos.Items.Clear();
        if (!exclusivoDeficientes)
        {
            ddlTiposDeficienciaAlunoIncluidos.Items.Add(new ListItem("Nenhum", ((byte)MTR_ParametroFormacaoTurmaTiposDeficienciaAlunoIncluidos.SemAlunos).ToString()));
        }

        ddlTiposDeficienciaAlunoIncluidos.Items.Add(new ListItem("Todos", ((byte)MTR_ParametroFormacaoTurmaTiposDeficienciaAlunoIncluidos.TodosTipos).ToString()));
        ddlTiposDeficienciaAlunoIncluidos.Items.Add(new ListItem(
                                                        GetGlobalResourceObject("WebControls", "ParametroFormacaoTurmas.UCParametroFormacaoTurmas.ddlTiposDeficienciaAlunoIncluidos.Mensagem").ToString()
                                                        , ((byte)MTR_ParametroFormacaoTurmaTiposDeficienciaAlunoIncluidos.Escolher).ToString()));
    }
    /// <summary>
    /// Retorna os dados de parâmetro de formação de turmas que estão nos campos.
    /// </summary>
    /// <param name="parametroFormacaoTurmas">Estrutura de parâmetro de formação de turmas</param>
    public bool RetornarParametro(out ParametroFormacaoTurmas parametroFormacaoTurmas)
    {
        bool sucesso = false;

        parametroFormacaoTurmas = new ParametroFormacaoTurmas
        {
            entityParametroPeriodo = new MTR_ParametroFormacaoTurma()
            ,
            listaParametroPeriodoTurno = new List <MTR_ParametroFormacaoTurmaTurno>()
            ,
            listaCapacidadeDeficiente = new List <MTR_ParametroFormacaoTurmaCapacidadeDeficiente>()
            ,
            listaTipoDeficiencia = new List <MTR_ParametroFormacaoTurmaTipoDeficiencia>()
        };

        if ((UCComboCalendario.Valor != -1) && (UCComboFormatoAvaliacao.Valor != -1))
        {
            parametroFormacaoTurmas.entityParametroPeriodo.pft_id = VS_pft_id;
            parametroFormacaoTurmas.entityParametroPeriodo.crp_id = VS_crp_id;
            parametroFormacaoTurmas.entityParametroPeriodo.cal_id = UCComboCalendario.Valor;
            parametroFormacaoTurmas.entityParametroPeriodo.fav_id = UCComboFormatoAvaliacao.Valor;

            parametroFormacaoTurmas.entityParametroPeriodo.pft_tipoDigitoCodigoTurma = Convert.ToByte(ddlTipoDigitoCodigoTurma.SelectedValue);

            if (Convert.ToInt32(ddlTipoDigitoCodigoTurma.SelectedValue) == Convert.ToByte(MTR_ParametroFormacaoTurmaTipoDigito.SemControleAutomatico))
            {
                parametroFormacaoTurmas.entityParametroPeriodo.pft_prefixoCodigoTurma   = null;
                parametroFormacaoTurmas.entityParametroPeriodo.pft_qtdDigitoCodigoTurma = 0;
            }
            else
            {
                parametroFormacaoTurmas.entityParametroPeriodo.pft_prefixoCodigoTurma   = txtPrefixoCodigoTurma.Text;
                parametroFormacaoTurmas.entityParametroPeriodo.pft_qtdDigitoCodigoTurma = String.IsNullOrEmpty(txtQtdDigitoCodigoTurma.Text) ? 0 : Convert.ToInt32(txtQtdDigitoCodigoTurma.Text);
            }

            parametroFormacaoTurmas.entityParametroPeriodo.pft_capacidade = String.IsNullOrEmpty(txtCapacidade.Text) ? 0 : Convert.ToInt32(txtCapacidade.Text);
            parametroFormacaoTurmas.entityParametroPeriodo.pft_capacidadeComDeficiente = String.IsNullOrEmpty(txtCapacidadeComDeficiente.Text) ? 0 : Convert.ToInt32(txtCapacidadeComDeficiente.Text);
            parametroFormacaoTurmas.entityParametroPeriodo.pft_qtdDeficiente           = String.IsNullOrEmpty(txtQtdDeficiente.Text) ? 0 : Convert.ToInt32(txtQtdDeficiente.Text);
            parametroFormacaoTurmas.entityParametroPeriodo.pft_docenteEspecialista     = chkDocenteEspecialista.Checked;
            parametroFormacaoTurmas.entityParametroPeriodo.pft_tipoControleCapacidade  = Convert.ToByte(ddlControleCapacidade.SelectedValue);
            parametroFormacaoTurmas.entityParametroPeriodo.pft_tipoControleDeficiente  = Convert.ToByte(ddlTiposDeficienciaAlunoIncluidos.SelectedValue);
            parametroFormacaoTurmas.entityParametroPeriodo.IsNew = VS_pft_id <= 0;

            foreach (ListItem item in cblTurnos.Items)
            {
                if (item.Selected)
                {
                    MTR_ParametroFormacaoTurmaTurno entityParametroPeriodoTurno = new MTR_ParametroFormacaoTurmaTurno
                    {
                        trn_id = Convert.ToInt32(item.Value)
                    };

                    parametroFormacaoTurmas.listaParametroPeriodoTurno.Add(entityParametroPeriodoTurno);
                }
            }

            if (parametroFormacaoTurmas.entityParametroPeriodo.pft_tipoControleCapacidade == (byte)MTR_ParametroFormacaoTurmaTipoControleCapacidade.CapacidadeNormalIndividual)
            {
                parametroFormacaoTurmas.listaCapacidadeDeficiente = RetornarCapacidadeDeficiente();
            }

            if (parametroFormacaoTurmas.entityParametroPeriodo.pft_tipoControleDeficiente == (byte)MTR_ParametroFormacaoTurmaTiposDeficienciaAlunoIncluidos.Escolher)
            {
                parametroFormacaoTurmas.listaTipoDeficiencia = RetornarTipoDeficiencia();
            }

            sucesso = true;
        }

        return(sucesso);
    }
    /// <summary>
    /// Carrega os campos com os dados do parametro de formação de turmas.
    /// </summary>
    /// <param name="cur_id">Id do curso</param>
    /// <param name="pfi_id">Id do processo de fechamento/início do ano letivo</param>
    /// <param name="parametroFormacaoTurmas">Estrutura do parâmetro de formação de turmas</param>
    /// <param name="turnos">DatTable de turnos</param>
    /// <param name="permiteEditar">Indica se os campos serão habilitados</param>
    /// <param name="exclusivoDeficientes">Indica se curso é exclusivo para deficientes</param>
    public void CarregarParametro(int cur_id, int pfi_id, ParametroFormacaoTurmas parametroFormacaoTurmas, DataTable turnos, bool permiteEditar, bool exclusivoDeficientes)
    {
        bool habilitarCampos = true;

        VS_cur_id = parametroFormacaoTurmas.entityParametroPeriodo.cur_id;
        VS_crr_id = parametroFormacaoTurmas.entityParametroPeriodo.crr_id;
        VS_crp_id = parametroFormacaoTurmas.entityParametroPeriodo.crp_id;

        CarregarCombos(pfi_id, parametroFormacaoTurmas, turnos, exclusivoDeficientes);

        ConfigurarValidacao(false);

        // Configurar se os controles serão habilitados.
        this.PermitirEditar(permiteEditar);

        // Preencher os campos apenas se houver registro gravado.
        if (parametroFormacaoTurmas.entityParametroPeriodo.pft_id > 0)
        {
            this.VS_pft_id = parametroFormacaoTurmas.entityParametroPeriodo.pft_id;
            this.UCComboCalendario.Valor       = parametroFormacaoTurmas.entityParametroPeriodo.cal_id;
            this.UCComboFormatoAvaliacao.Valor = parametroFormacaoTurmas.entityParametroPeriodo.fav_id;

            this.ddlTipoDigitoCodigoTurma.SelectedValue = parametroFormacaoTurmas.entityParametroPeriodo.pft_tipoDigitoCodigoTurma.ToString();
            //Se o dropdowlist estiver checao com "Sem controle automatico", vai carregar as informações porem vai esconder a div.
            if (Convert.ToInt32(ddlTipoDigitoCodigoTurma.SelectedValue) == Convert.ToInt32(MTR_ParametroFormacaoTurmaTipoDigito.SemControleAutomatico))
            {
                DivPrefixoCodigoTurma.Visible   = false;
                DivQtdDigitoCodigoTurma.Visible = false;
            }
            this.txtPrefixoCodigoTurma.Text = parametroFormacaoTurmas.entityParametroPeriodo.pft_prefixoCodigoTurma;

            if (parametroFormacaoTurmas.entityParametroPeriodo.pft_qtdDigitoCodigoTurma == 0)
            {
                this.txtQtdDigitoCodigoTurma.Text = null;
            }
            else
            {
                this.txtQtdDigitoCodigoTurma.Text = parametroFormacaoTurmas.entityParametroPeriodo.pft_qtdDigitoCodigoTurma.ToString();
            }

            this.txtCapacidade.Text = parametroFormacaoTurmas.entityParametroPeriodo.pft_capacidade.ToString();
            this.txtCapacidadeComDeficiente.Text            = parametroFormacaoTurmas.entityParametroPeriodo.pft_capacidadeComDeficiente.ToString();
            this.txtQtdDeficiente.Text                      = parametroFormacaoTurmas.entityParametroPeriodo.pft_qtdDeficiente.ToString();
            this.chkDocenteEspecialista.Checked             = parametroFormacaoTurmas.entityParametroPeriodo.pft_docenteEspecialista;
            ddlControleCapacidade.SelectedValue             = parametroFormacaoTurmas.entityParametroPeriodo.pft_tipoControleCapacidade.ToString();
            ddlTiposDeficienciaAlunoIncluidos.SelectedValue = parametroFormacaoTurmas.entityParametroPeriodo.pft_tipoControleDeficiente.ToString();

            // Configurar os turnos.
            if (this.cblTurnos.Items.Count > 0)
            {
                foreach (ListItem item in this.cblTurnos.Items)
                {
                    int trn_id = Convert.ToInt32(item.Value);
                    item.Selected = parametroFormacaoTurmas.listaParametroPeriodoTurno.Exists(p => p.trn_id == trn_id);
                }
            }

            // Configurar os campos de capacidade de acordo com o tipo de controle de capacidade.
            if (parametroFormacaoTurmas.entityParametroPeriodo.pft_tipoControleCapacidade == (byte)MTR_ParametroFormacaoTurmaTipoControleCapacidade.CapacidadeNormalIndividual)
            {
                if (parametroFormacaoTurmas.listaCapacidadeDeficiente != null)
                {
                    this.hdnIdCapac.Value     = "";
                    this.hdnCapacidades.Value = "";
                    foreach (MTR_ParametroFormacaoTurmaCapacidadeDeficiente entity in parametroFormacaoTurmas.listaCapacidadeDeficiente)
                    {
                        this.hdnIdCapac.Value     += entity.pfc_id.ToString() + ";";
                        this.hdnCapacidades.Value += entity.pfc_capacidadeComDeficiente.ToString() + ";";
                    }
                }
            }
            this.ConfigurarCamposCapacidade(this.ddlControleCapacidade.SelectedValue);

            // Configurar os tipos de deficiência
            if (parametroFormacaoTurmas.entityParametroPeriodo.pft_tipoControleDeficiente == (byte)MTR_ParametroFormacaoTurmaTiposDeficienciaAlunoIncluidos.Escolher)
            {
                foreach (ListItem item in this.cblTiposDeficiencia.Items)
                {
                    Guid tde_id = new Guid(item.Value);
                    item.Selected = parametroFormacaoTurmas.listaTipoDeficiencia.Exists(p => p.tde_id == tde_id);
                }
            }
            this.ConfigurarCamposTipoDeficiencia(this.ddlTiposDeficienciaAlunoIncluidos.SelectedValue);

            // Configurar validação.
            this.ConfigurarValidacao(true);

            // Se houver turma cadastrada com os parametros de formação de turmas bloqueia campos.
            if (permiteEditar && TUR_TurmaBO.VerificaExisteTurmaParametroFormacao(parametroFormacaoTurmas.entityParametroPeriodo.cal_id
                                                                                  , parametroFormacaoTurmas.entityParametroPeriodo.cur_id
                                                                                  , parametroFormacaoTurmas.entityParametroPeriodo.crr_id
                                                                                  , parametroFormacaoTurmas.entityParametroPeriodo.crp_id
                                                                                  , TUR_TurmaTipo.Normal))
            {
                PermitirEditar(false);

                this.ddlTipoDigitoCodigoTurma.Enabled        =
                    this.txtPrefixoCodigoTurma.Enabled       =
                        this.txtQtdDigitoCodigoTurma.Enabled =
                            this.ddlTiposDeficienciaAlunoIncluidos.Enabled =
                                this.cblTiposDeficiencia.Enabled           = true;

                habilitarCampos = false;
            }
        }

        CarregarFuncoesJS(habilitarCampos);

        // Carrega o nome do período na mensagem de erro.
        cpvTipoDigitoCodigoTurma.ErrorMessage   += " (" + parametroFormacaoTurmas.crp_descricao + ")";
        rvQtdDigitoCodigoTurma.ErrorMessage     += " (" + parametroFormacaoTurmas.crp_descricao + ")";
        rfvQtdDigitoCodigoTurma.ErrorMessage    += " (" + parametroFormacaoTurmas.crp_descricao + ")";
        rfvCapacidade.ErrorMessage              += " (" + parametroFormacaoTurmas.crp_descricao + ")";
        rfvCapacidadeComDeficiente.ErrorMessage += " (" + parametroFormacaoTurmas.crp_descricao + ")";
        rfvQtdDeficiente.ErrorMessage           += " (" + parametroFormacaoTurmas.crp_descricao + ")";
    }