private bool ProcuraRecurso(DecoratorRequisicoes req)
 {
     if (!ddlCategoriaRecurso.SelectedItem.Text.Equals("Selecione"))
     {
         Guid id = new Guid(ddlCategoriaRecurso.SelectedValue);
         return req.CategoriaRecurso.Id.Equals(id) ? true : false;
     }
     return false;
 }
    protected void ddlCategoriaRecurso_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ddlCategoriaRecurso.SelectedIndex != 0)
        {
            if (!btnConfirmar.Enabled)
                btnConfirmar.Enabled = true;
            bool jaInserida = false;
            lblStatus.Text = "";
            CategoriaRecursoBO controladorCategorias = new CategoriaRecursoBO();
            Guid id = new Guid(ddlCategoriaRecurso.SelectedValue);

            CategoriaRecurso categoria = controladorCategorias.GetCategoriaRecursoById(id);
            Requisicao req = Requisicao.NewRequisicao(aulaAtual, categoria, Convert.ToInt32(ddlPrioridadeRequisicao.SelectedValue));
            DecoratorRequisicoes recComEstado = new DecoratorRequisicoes(req, DecoratorRequisicoes.EstadoRequisicao.Inserida);
            //foreach para comparar se Recurso já existe na lista
            foreach (DecoratorRequisicoes dec in listaRequisicoes)
            {
                if (dec.CategoriaRecurso.Equals(recComEstado.CategoriaRecurso) && dec.EstadoAtual != DecoratorRequisicoes.EstadoRequisicao.Removida)
                {
                    lblStatus.Text = "Recurso já selecionado.";
                    if (listaRequisicoes.Count < ddlPrioridadeRequisicao.SelectedIndex + 1)
                        ddlCategoriaRecurso.SelectedIndex = 0;
                    else
                    {
                        ddlCategoriaRecurso.SelectedValue = listaRequisicoes[ddlPrioridadeRequisicao.SelectedIndex].CategoriaRecurso.Id.ToString();
                    }
                    jaInserida = true;
                }

            }
            if (!jaInserida)
            {
                foreach (DecoratorRequisicoes dec in listaRequisicoes)
                {
                    //Compara se estado atual da categoria é igual à removida
                    if (dec.EstadoAtual == DecoratorRequisicoes.EstadoRequisicao.Removida)
                    {
                        continue;
                    }
                    //Compara se a prioridade da categoria para inserir é igual a da categoria da lista e se a categoria da lista é diferente de Inserida
                    if (dec.Prioridade == recComEstado.Prioridade && dec.EstadoOriginal != DecoratorRequisicoes.EstadoRequisicao.Inserida)
                    {
                        dec.CategoriaRecurso = controladorCategorias.GetCategoriaRecursoById(id);
                        dec.EstadoAtual = DecoratorRequisicoes.EstadoRequisicao.Atualizada;
                        lblStatus.Text = "Categoria alterada para a opção.";
                        jaInserida = true;
                        break;
                    }
                    //Compara se a prioridade da categoria para inserir é igual a da categoria da lista e se a categoria da lista é igual a Inserida
                    if (dec.Prioridade == recComEstado.Prioridade && dec.EstadoOriginal == DecoratorRequisicoes.EstadoRequisicao.Inserida)
                    {
                        dec.CategoriaRecurso = controladorCategorias.GetCategoriaRecursoById(id);
                        lblStatus.Text = "Categoria alterada para a opção.";
                        jaInserida = true;
                        break;
                    }
                }
            }
            //Insere se a categoria não estiver na lista
            if (!jaInserida)
            {
                int aux = (int)Session["Opcoes"];
                aux++;
                Session["Opcoes"] = aux;
                listaRequisicoes.Add(recComEstado);
                lblStatus.Text = "Categoria selecionada para a opção.";

            }
        }
        else
        {
            //foreach para percorrer a lista para a ddl de categorias voltar para a categoria
            //atual quando selecionada a opção "Selecione"
            foreach (DecoratorRequisicoes dec in listaRequisicoes)
            {
                if (dec.Prioridade == (ddlPrioridadeRequisicao.SelectedIndex + 1))
                {
                    ddlCategoriaRecurso.SelectedValue = dec.CategoriaRecurso.Id.ToString();
                    break;
                }
            }
        }
    }