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; } } } }
protected void btnRemover_Click(object sender, EventArgs e) { DecoratorRequisicoes dec = listaRequisicoes.Find(ProcuraRecurso); if (dec != null) { //Compara se dec já está no banco ou não if (dec.EstadoOriginal != DecoratorRequisicoes.EstadoRequisicao.Original) { //se não está, dec é removido da lista e os próximos items tem a prioridade //diminuida em 1 listaRequisicoes.Remove(dec); int aux = (int)Session["Opcoes"]; aux--; Session["Opcoes"] = aux; for (int i = dec.Prioridade - 1; i < listaRequisicoes.Count; i++) { listaRequisicoes[i].Prioridade--; } } else { //se sim seta o estado para removida, para remover no confirmar int aux = (int)Session["Opcoes"]; aux--; Session["Opcoes"] = aux; dec.EstadoAtual = DecoratorRequisicoes.EstadoRequisicao.Removida; for (int i = dec.Prioridade; i < listaRequisicoes.Count; i++) { if (listaRequisicoes[i].EstadoAtual != DecoratorRequisicoes.EstadoRequisicao.Removida) { listaRequisicoes[i].Prioridade--; if (listaRequisicoes[i].EstadoOriginal != DecoratorRequisicoes.EstadoRequisicao.Inserida) { listaRequisicoes[i].EstadoAtual = DecoratorRequisicoes.EstadoRequisicao.Atualizada; } } } } //foreach para setar o item da ddl categoria recurso foreach (DecoratorRequisicoes decor in listaRequisicoes) { if (decor.EstadoAtual != DecoratorRequisicoes.EstadoRequisicao.Removida) { ddlCategoriaRecurso.SelectedValue = decor.CategoriaRecurso.Id.ToString(); break; } ddlCategoriaRecurso.SelectedIndex = 0; } //retira uma opção da ddl prioridade requisicao if (ddlPrioridadeRequisicao.Items.Count != 1) { ddlPrioridadeRequisicao.Items.RemoveAt(ddlPrioridadeRequisicao.Items.Count - 1); ddlPrioridadeRequisicao.SelectedIndex = ddlPrioridadeRequisicao.SelectedIndex - 1; } else { ddlCategoriaRecurso.SelectedIndex = 0; } lblStatus.Text = "Recurso removido com sucesso."; } else { lblStatus.Text = "Selecione um recurso cadastrado para ser removido."; } }