/// <summary> /// Exclui uma rota do banco de dados ou exclusao logica /// </summary> /// <param name="rota">Objeto rota com id valida</param> /// <returns></returns> public bool Excluir(Rota rota) { _bd = new Persistencia(); try { _bd.Cmd.Parameters.AddWithValue("@id", rota.Id); _bd.Cmd.CommandText = @"DELETE FROM rotasColeta WHERE id=@id"; _bd.ExecuteNonQuery(); } catch (Exception) { try { _bd.Cmd.CommandText = @"UPDATE rotasColeta SET excluida = @excluir WHERE id=@id"; _bd.Cmd.Parameters.AddWithValue("@excluir", true);//desativa! _bd.ExecuteNonQuery(); } catch (Exception) { return false; } } return true; }
/// <summary> /// Exclui uma Conta de Caixa do banco de dados 15/04/2014 /// </summary> /// <param name="rota">Objeto conta de caixa</param> /// <param name="notificacao">Informativo sobre a operacao </param> /// <returns>verdadeiro em caso de exclusao com sucesso</returns> public bool Excluir(Rota rota, out Notificacao notificacao) { if (rota.Id <= 0) { notificacao = new Notificacao("Não foi possivel identificar o codigo da Rota a ser excluido", 'e'); return false; } if (new RotaBD().Excluir(rota)) { notificacao = new Notificacao("Rota excluida com sucesso", 's'); return true; } notificacao = new Notificacao("Não foi possivel excluir a Rota informada, tente novamente, se o erro persistir contate o adminsitrador", 'e'); return false; }
/// <summary> /// Atualiza uma rota no banco de dados /// </summary> /// <param name="rota">Objeto rota com parametros validos</param> /// <returns>verdadeiro em caso de sucesso</returns> public bool Atualizar(Rota rota) { _bd = new Persistencia(); try { _bd.Cmd.CommandText = @"UPDATE rotasColeta SET descricao = @nome WHERE id=@id"; _bd.Cmd.Parameters.AddWithValue("@id", rota.Id); _bd.Cmd.Parameters.AddWithValue("@nome", rota.Descricao); _bd.ExecuteNonQuery(); } catch (Exception) { return false; } return true; }
/// <summary> /// recupera uma Rota do banco de dados 15/04/2014 /// </summary> /// <param name="rota">objeto Rota com id desejada</param> /// <param name="notificacao"> </param> /// <param name="completa">Traz os endereços da rota </param> /// <returns>Dados do contato do banco de dados</returns> public bool Recuperar(Rota rota, out Notificacao notificacao, bool completa = false) { if (rota.Id <= 0) { notificacao = new Notificacao("Não foi possivel identificar o codigo da Rota a ser recuperada", 'e'); return false; } if (!new RotaBD().Recuperar(rota)) { notificacao = new Notificacao("Problema com Banco de Dados, notifique o administrador", 'e'); return false; } if (completa) { rota.Enderecos = new List<Endereco>();//limpa a lista e retorna ela vazia if (!new RotaBD().RecuperarEnderecos(rota)) { notificacao = new Notificacao("Rota foi recuperada mas houve erro no banco de dados ao recuperar os endereços, notifique o administrador do sistema", 'e'); return false; } foreach (Endereco endereco in rota.Enderecos) { //recupera minimo do endereco! if (!new Pessoa.EnderecoCtr().Recuperar(endereco, out notificacao, true,true))//se houver erro limpa lista de rotas e retorna falso! { notificacao = new Notificacao("Rota foi recuperada mas houve erro no banco de dados ao recuperar os dados dos endereços, notifique o administrador do sistema", 'e'); rota.Enderecos = new List<Endereco>();//limpa a lista e retorna ela vazia return false; } } } notificacao = new Notificacao("Rota recuperada com sucesso", 's'); return true; }
/// <summary> /// Grava uma Rota inserindo ou atualizando 15/04/2014 /// </summary> /// <param name="rota">objeto Rota</param> /// <param name="notificacoes">mensagens de retorno </param> /// <returns>verdadeiro em caso de sucesso</returns> public bool Gravar(Rota rota, out List<Notificacao> notificacoes) { bool cadastro = rota.Id == 0;//para informar se rota.Descricao = rota.Descricao.ToUpper().Trim();// padrao maiusculo e sem espaços laterais notificacoes = ValidaCampos(rota); if (notificacoes.Count > 0)//este ponto identifica erros de validacao return false; if (!(cadastro ? new RotaBD().Inserir(rota) : new RotaBD().Atualizar(rota))) { notificacoes.Add(new Notificacao("Erro de banco de dados, notifique o administrador", 'e')); return false; } notificacoes.Add(cadastro ? new Notificacao("Rota cadastrada com Sucesso", 's') : new Notificacao("Rota atualizada com Sucesso", 's')); return true; }
/// <summary> /// recupera as Id dos endereços da rota /// </summary> /// <param name="rota">Objeto Rota com Id desejada</param> /// <returns>verdadeiro se não houver erros</returns> public bool RecuperarEnderecos(Rota rota) { _bd = new Persistencia(); try { _bd.Cmd.CommandText = @"Select fornecedor_id, endereco_id from enderecosRota where rota_id = @rotaId"; _bd.Cmd.Parameters.AddWithValue("@rotaId", rota.Id); DataTable dadosBd = _bd.ExecuteReader(); foreach (DataRow endereco in dadosBd.Rows) { rota.Enderecos.Add(new Endereco(Convert.ToInt32(endereco["endereco_id"].ToString()), new Pessoa(Convert.ToInt32(endereco["fornecedor_id"].ToString())))); } } catch (Exception) { return false; } return true; }
/// <summary> /// Carrega dados de uma rota /// </summary> /// <param name="rota">Objeto rota com parametros validos</param> /// <returns>verdadeiro em caso de sucesso</returns> public bool Recuperar(Rota rota) { _bd = new Persistencia(); try { _bd.Cmd.CommandText = @"Select descricao from rotasColeta where id = @id"; _bd.Cmd.Parameters.AddWithValue("@id", rota.Id); DataTable dadosBd = _bd.ExecuteReader(); rota.Descricao = dadosBd.Rows[0]["descricao"].ToString(); } catch (Exception) { return false; } return true; }
/// <summary> /// Insere uma nova Rota no Banco de dados /// </summary> /// <param name="rota">Objeto rota com parametros validos</param> /// <returns>verdadeiro em caso de sucesso</returns> public bool Inserir(Rota rota) { _bd = new Persistencia(); try { _bd.Cmd.CommandText = @"INSERT INTO rotasColeta (descricao) VALUES (@nome); SELECT LAST_INSERT_ID()"; _bd.Cmd.Parameters.AddWithValue("@nome", rota.Descricao); rota.Id = Convert.ToInt32(_bd.ExecuteScalar());//recupera id nova! } catch (Exception) { return false; } return true; }
public EnderecoRota(int id, Pessoa pes, Rota rota) : base(id,pes) { _rota = rota; }
/// <summary> /// Checa se a descrição ja existe evitando duplicidade de conta! /// </summary> /// <param name="conta">conta a ser gravada!</param> /// <returns></returns> private bool CausaDuplicidade(Rota conta) { var lista = BuscaDescricao(conta.Descricao); if (lista.Count > 0) if (lista[0].Descricao == conta.Descricao && lista[0].Id != conta.Id)//causa duplicidade return true; //se a id for a mesma significa que é update, ou seja a descricao será igual e pode ser aceita, //agora se a id for diferente e a descrição for igual deve se considerar duplicado! return false; }
/// <summary> /// traz uma lista de erros das validacoes do campos informados 15/04/2014 /// </summary> /// <param name="rota">Obj conta Caixa</param> /// <returns>Lista de Erros</returns> public List<Notificacao> ValidaCampos(Rota rota) { var list = new List<Notificacao>(); if (rota.Descricao.Length < 3) list.Add(new Notificacao("A descrição deve conter pelo menos 3 caracteres", 'e')); if (CausaDuplicidade(rota)) list.Add(new Notificacao("A descrição informada já existe, por favor escolha uma diferete", 'e')); return list; }
protected List<Notificacao> notificacoes = new List<Notificacao>(); //notificações #endregion Fields #region Methods public void BtnOpcoes(object sender, CommandEventArgs e) { switch (e.CommandName) { case "trocarAba": { tab.Value = tab.Value == "a" ? "b" : "a"; boxRotas.Visible = tab.Value == "a"; boxEnderecos.Visible = tab.Value == "b"; if (boxRotas.Visible)//gereciar rotas { ListarRotas(); } else//gerenciar enderecos rotas { ddlRotas.DataSource = new RotaCtrl().BuscaDescricao(); ddlRotas.DataValueField = "Id"; ddlRotas.DataTextField = "Descricao"; ddlRotas.DataBind(); ListarEnderecosRota(); } ListarNotificacoes(); LimparCampos();//zera rota id também! } break; case "gravar": { var rota = new Rota(Convert.ToInt32(rotaId.Value), ttbDescricao.Text); if (new RotaCtrl().Gravar(rota, out notificacoes)) { LimparCampos(); ListarRotas(); } ListarNotificacoes(); } break; case "cancelar": { LimparCampos(); ListarRotas(); ListarNotificacoes(); } break; case "remover": { Notificacao notificacao; var rota = new Rota(Convert.ToInt32(rotaId.Value)); bool excluiu = new RotaCtrl().Excluir(rota, out notificacao); notificacoes.Add(notificacao); if (excluiu) { LimparCampos();//zera id e limpa caso o amado usuário tenha solicitado edicao antes de excluir a categoria... ListarRotas(); } ListarNotificacoes(); } break; case "editar": { Notificacao notificacao; var rota = new Rota(Convert.ToInt32(e.CommandArgument)); bool recuperou = new RotaCtrl().Recuperar(rota, out notificacao); if (recuperou) { btnCancelar.Visible = true; rotaId.Value = rota.Id.ToString();//salva a id em edicao ttbDescricao.Text = rota.Descricao;//exibe descricao selecionada } else {//informa o erro notificacoes.Add(notificacao); } ListarRotas(); ListarNotificacoes(); } break; case "AddRota": { Notificacao notificacao; var enderecoRota = new EnderecoRota(Convert.ToInt32(e.CommandArgument), new Pessoa(Convert.ToInt32(pesId.Value)), new Rota(Convert.ToInt32(ddlRotas.SelectedValue))); if(!new EnderecoRotaCtrl().AdicionarEndereco(enderecoRota, out notificacao)) { notificacoes.Add(notificacao); } ListarEnderecosRota();//re lista as rotas ListarEnderecosPessoa();// re lista as pessoas ListarNotificacoes();// re lista as notificacoes } break; case "RemoveRota": { Notificacao notificacao; string[] ids = e.CommandArgument.ToString().Split(','); var enderecoRota = new EnderecoRota(Convert.ToInt32(ids[0]), new Pessoa(Convert.ToInt32(ids[1])), new Rota(Convert.ToInt32(ddlRotas.SelectedValue))); if (!new EnderecoRotaCtrl().RemoverEndereco(enderecoRota, out notificacao)) { notificacoes.Add(notificacao); } ListarEnderecosRota();//re lista as rotas ListarEnderecosPessoa();// re lista as pessoas ListarNotificacoes();// re lista as notificacoes } break; } }
public void ListarEnderecosRota() { Notificacao notificacao; var rota = new Rota(Convert.ToInt32(ddlRotas.SelectedValue)); //recupera a rota e seus endereços if (!new RotaCtrl().Recuperar(rota, out notificacao, true)) { notificacoes.Add(notificacao);//acrescenta os erros ref a operacao rpEnderecosRota.Visible = false; } enderecosRota = rota.Enderecos;//seta endereços na variavel global para remover dos enderecos pessoas rpEnderecosRota.Visible = enderecosRota.Count > 0; rpEnderecosRota.DataSource = enderecosRota; rpEnderecosRota.DataBind(); if (rota.Enderecos.Count <= 0) notificacoes.Add(new Notificacao("A Rota informada não tem endereços cadastrados<br/> aproveite e cadastre agora mesmo", 'i')); }