//ultima modificacao/checagem em 14/01/2014 funcionando! by GM /// <summary> /// Recupera Id de do Endereco(endId) e do Fornecedor(pesId) ativos no sistema /// </summary> /// <param name="linha"></param> /// <returns></returns> public bool Recuperar(Linha linha) { _bd = new Persistencia(); var listaFrn = new List<FornecedorLinha>(); try { _bd.Cmd.CommandText = @"Select fornecedor_id, endereco_id, sequencia from enderecosLinha inner join pessoas pes on pes.id = fornecedor_id where linha_id = @linhaId and pes.status =1 order by sequencia"; _bd.Cmd.Parameters.AddWithValue("@linhaId", linha.Id); DataTable listaFornecedoresBD = _bd.ExecuteReader(); foreach (DataRow fornecedor in listaFornecedoresBD.Rows) { listaFrn.Add( new FornecedorLinha( Convert.ToInt32(fornecedor["sequencia"]), new Endereco(Convert.ToInt32(fornecedor["endereco_id"]), new Pessoa(Convert.ToInt32(fornecedor["fornecedor_id"]))// )//endereco )//fn linha ); } } catch (Exception) { return false; } linha.Fornecedores = listaFrn; return true; }
//ultima modificacao/checagem em 14/01/2014 funcionando! by GM public bool Carregar(Linha linhaColeta) { if (linhaColeta.Fornecedores.Count > 0) { foreach (FornecedorLinha fornecedor in linhaColeta.Fornecedores) { //carrega o endereco minimo! new Pessoa.EnderecoCtr().Carregar(fornecedor.Endereco, true); //carrega os dados da pessoa do BD new Pessoa.PessoaCtr().Recuperar(fornecedor.Endereco.Pessoa); } return true; } return false;//pois nao carregou ninguém! }
public bool Atualizar(Linha linha) { _bd = new Persistencia(); try { _bd.Cmd.CommandText = @"UPDATE linhasColeta SET descricao = @nome WHERE id=@id"; _bd.Cmd.Parameters.AddWithValue("@id", linha.Id); _bd.Cmd.Parameters.AddWithValue("@nome", linha.Nome); _bd.ExecuteNonQuery(); } catch (Exception) { return false; } return true; }
public bool Inserir(Linha linha) { _bd = new Persistencia(); try { _bd.Cmd.CommandText = @"INSERT INTO linhasColeta (descricao,status) VALUES (@nome, 1); SELECT LAST_INSERT_ID()"; _bd.Cmd.Parameters.AddWithValue("@nome", linha.Nome); linha.Id = Convert.ToInt32(_bd.ExecuteScalar());//recupera id nova! } catch (Exception) { return false; } return true; }
//ultima modificacao/checagem em 15/01/2014 funcionando! by GM public bool AtualizarStatus(Linha linha) { _bd = new Persistencia(); try { _bd.Cmd.CommandText = @"UPDATE linhasColeta SET status = @status WHERE id=@id"; _bd.Cmd.Parameters.AddWithValue("@id", linha.Id); _bd.Cmd.Parameters.AddWithValue("@status", linha.Status); _bd.ExecuteNonQuery(); } catch (Exception) { return false; } return true; }
//ultima modificacao/checagem em 15/01/2014 funcionando! by GM public bool Excluir(Linha linha) { _bd = new Persistencia(); _bd.IniciarTransacao(); try { _bd.Cmd.Parameters.AddWithValue("@id", linha.Id); _bd.Cmd.CommandText = @"DELETE FROM enderecos_linha WHERE linha_id = @id"; _bd.ExecuteNonQuery(); _bd.Cmd.CommandText = @"DELETE FROM linhasColeta WHERE id=@id"; _bd.ExecuteNonQuery(); } catch (Exception) { _bd.CancelarTransacao(); return false; } _bd.ConfirmarTransacao(); return true; }
//testado em 28/01/2014 funcionando! by GM /// <summary> /// recupera os enderecos do fornecedor ainda cadastrados na linha /// </summary> /// <param name="fornecedor">Obj Pessoa que simbolize o fornecedor</param> /// <param name="linhaCol">a Linha de Coleta ativa</param> /// <returns>falso caso: de erro no banco, a quantidade de enderecos seja igual a zero </returns> public bool RecuperarEnderecosNaoCadastrados(Model.pessoas.Pessoa fornecedor, Linha linhaCol) { //carrega *somente os ids dos endereços de cada fornecedor e a sequencia if (!new LinhaCtrl().RecuperarFornecedoresLinha(linhaCol, false))//se a linha nao tiver nenhum endereço exibe todos os endereços do fornecedor! { return new Pessoa.EnderecoCtr().CarregarEnderecosPessoa(fornecedor);//se nao tiver endereços retorna falso também } //carrega os Enderecos do fornecedor if (new Pessoa.EnderecoCtr().CarregarEnderecosPessoa(fornecedor)) { var enderecosDisponiveis = new List<Endereco>(); foreach (Endereco endereco in fornecedor.Enderecos)// para cada endereço existente no meu fornecedor { bool existe = false; for (int i = 0; i < linhaCol.Fornecedores.Count; i++)//checo em cada endereco da linha de Coleta selecionada { if (linhaCol.Fornecedores[i].Endereco.Pessoa.Id == fornecedor.Id)//se a pessoa do endereco da linha de coleta for o mesmo fornecedor selecionado { if (linhaCol.Fornecedores[i].Endereco.Id == endereco.Id)//checa se o endereço é o mesmo { existe = true; i = linhaCol.Fornecedores.Count+1;//não é necessário correr a linha inteira caso já encontrou o endereco procurado } } } if (!existe)//se o endereço não existir na linha de coleta { enderecosDisponiveis.Add(endereco);//adiciono o endereço corrente do fornecedor aos endereços disponiveis que serão exibidos! } } fornecedor.Enderecos = enderecosDisponiveis;//reescrita! if (enderecosDisponiveis.Count > 0) return true; } //se o fornecedor não tiver endereços chega aqui. return false; }
//-------------------Opcoes onCommand ------------------- //Opcoes do Gerenciamento de Linhas public void GerLinhas(object sender, CommandEventArgs e) { switch (e.CommandName) { case "Novo"://ok 15/01/2014 by GM { if (new Controller.coleta.LinhaCtrl().Gravar(new Linha(-1, ttbNovaLinha.Text, true))) { CarregarRpGlinhas();//atualiza o datasource e a lista de linhas } ttbNovaLinha.Text = ""; } break; case "InverterStatus"://ok 17/01/2014 by GM { string[] parametros = e.CommandArgument.ToString().Split('|'); if (new Controller.coleta.LinhaCtrl().InverterStatus(new Linha(Convert.ToInt32(parametros[0]), Convert.ToBoolean(parametros[1])))) { CarregarRpGlinhas();//atualiza o datasource e a lista de linhas } } break; case "Excluir"://ok 15/01/2014 by GM { if (e.CommandArgument.ToString() == "s") { var lin = new Linha(Convert.ToInt32(idLinhaExcluir.Value)); if (new Controller.coleta.LinhaCtrl().Excluir(lin)) { CarregarRpGlinhas(); } } idLinhaExcluir.Value = ""; boxConfirmaExcluirLinha.Visible = false; btnFecharGlinha.Visible = true; } break; case "AvisoExcluir"://ok 15/01/2014 by GM { Linha linhaSelecionada = new Linha(Convert.ToInt32(e.CommandArgument)); new Controller.coleta.LinhaCtrl().RecuperarLinha(linhaSelecionada); idLinhaExcluir.Value = linhaSelecionada.Id.ToString(); lblLinhaExcluir.Text = linhaSelecionada.Nome; boxConfirmaExcluirLinha.Visible = true; btnFecharGlinha.Visible = false; } break; case "Sair": { CarregarRepeaterLinhasColetaPrincipal(); } break; } }
//carrega o repeater de fornecedores da linha no modal Gerenciar Fornecedores Linha retona falso caso nao tenha nenhuma linha ativa ou nenhum fornecedor na linha selecionada private bool CarregarRepeaterFornecedoresLinha() { var linha = new Linha(Convert.ToInt32(ddlLinhas1.SelectedValue)); if (new Controller.coleta.LinhaCtrl().RecuperarFornecedoresLinha(linha)) { rpFornecedoresLinha.DataSource = linha.Fornecedores; rpFornecedoresLinha.DataBind(); return true; } return false; }
//testado em 15/01/2014 funcionando! by GM public bool Excluir(Linha linhaCol) { return new DataBase.coleta.LinhaBD().Excluir(linhaCol); }
public bool Recuperar(Linha linha) { _bd = new Persistencia(); try { _bd.Cmd.CommandText = @"Select descricao, status from linhasColeta where id = @id"; _bd.Cmd.Parameters.AddWithValue("@id", linha.Id); DataTable dadosBd = _bd.ExecuteReader(); linha.Nome = dadosBd.Rows[0]["descricao"].ToString(); linha.Status = Convert.ToBoolean(dadosBd.Rows[0]["status"]); } catch (Exception) { return false; } return true; }
//editado e testado em 28/01/2014 funcionando! by GM /// <summary> /// Recuperar os fornecedores de uma linha, por padrao completo ou seja ids sequencia e dados de cada endereco /// </summary> /// <param name="linhaCol">linha para carregar</param> /// <param name="completo">parametro opcional, caso nao queira completo ou seja somente com os id's dos enderecos da linha e a sequencia</param> /// <returns></returns> public bool RecuperarFornecedoresLinha(Linha linhaCol, bool completo = true) { if (new DataBase.coleta.FornecedorLinhaBd().Recuperar(linhaCol))//recupera somente os ids e a sequencia { if (linhaCol.Fornecedores.Count == 0)//se a linha nao tiver fornecedores retorna falso pois nao carregou return false; if (completo) //carrega os dados dos enderecos e a pessoa return new FornecedorLinhaCtrl().Carregar(linhaCol); return true; //carregou somente os Id's } return false;//erro ao recuperar do Banco de dados }
//testado em 17/01/2014 funcionando! by GM public bool InverterStatus(Linha linhaCol) { linhaCol.Status = !linhaCol.Status;//inverte o status e salva no BD return new DataBase.coleta.LinhaBD().AtualizarStatus(linhaCol); }
//testado em 15/01/2014 funcionando! by GM public bool Gravar(Linha linhaCol) { if (linhaCol.Id == -1) return new DataBase.coleta.LinhaBD().Inserir(linhaCol); return new DataBase.coleta.LinhaBD().Atualizar(linhaCol); }
public FornecedorLinha(int seq, Linha linha) { _sequencia = seq; _linha = linha; }
public FornecedorLinha(Endereco end,Linha linha) { Linha = linha; _endereco = end; }
//testado em 15/01/2014 funcionando! by GM public bool RecuperarLinha(Linha linhaCol) { return new DataBase.coleta.LinhaBD().Recuperar(linhaCol); }