public ArrayList getListaEncomendas(ComunicacaoBD comunicacaoBD) { Encomenda encomenda = null; ArrayList listaEncomendas = new ArrayList(); string query = "SELECT idEncomenda, valorTotal, estado, tempoEspera " + " FROM Encomenda "; SqlCommand comando = new SqlCommand(query); SqlDataReader resposta = invocaQueryLeitura(comando, comunicacaoBD); while (resposta.Read() == true) { encomenda = new Encomenda(); encomenda.IdEncomenda = (string)resposta["idEncomenda"]; encomenda.ValorTotal = double.Parse((string)resposta["valorTotal"]); encomenda.Estado = (string)resposta["estado"]; encomenda.TempoEspera = (int)resposta["tempoEspera"]; listaEncomendas.Add(encomenda); } if (resposta != null) resposta.Close(); return listaEncomendas; }
public int actualizaNumeroPesquisas(string ISBN, string nomeFornecedor, int numPesquisas, string precoVenda, string precoSemDesconto, ComunicacaoBD comunicacaoBD) { string query = null; query = "UPDATE Livro" + " SET " + " numPesquisas = @numPesquisas," + " precoVenda = @precoVenda, " + " precoSemDesconto = @precoSemDesconto " + " WHERE " + " ISBN = @ISBN" + " AND " + " nomeFornecedor = @nomeFornecedor"; SqlCommand comando = new SqlCommand(query); comando.Parameters.Add(new SqlParameter("@numPesquisas", numPesquisas)); comando.Parameters.Add(new SqlParameter("@precoVenda", precoVenda)); comando.Parameters.Add(new SqlParameter("@precoSemDesconto", precoSemDesconto)); comando.Parameters.Add(new SqlParameter("@ISBN", ISBN)); comando.Parameters.Add(new SqlParameter("@nomeFornecedor", nomeFornecedor)); int i = invocaQuery(comando, comunicacaoBD); return i; }
public string getEstado(string idEncomenda, ComunicacaoBD comunicacaoBD) { string query = "SELECT estado" + " FROM Encomenda " + " WHERE " + " idEncomenda = @idEncomenda"; SqlCommand comando = new SqlCommand(query); comando.Parameters.Add(new SqlParameter("@idEncomenda", idEncomenda)); SqlDataReader resposta = invocaQueryLeitura(comando, comunicacaoBD); string estado = null; int i = 0; string aux = null; resposta.Read(); estado = (string)resposta["estado"]; if (resposta != null) resposta.Close(); return estado; }
public void CancelaEncomenda(object aux) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); WEBooksDistribuidorAp.LogMensagens text = new WEBooksDistribuidorAp.LogMensagens(); ComunicacaoFila comFila = new ComunicacaoFila(); string idEncomenda = EncomendaWEBooks.IdEncomenda; try { string ultimoEstado = servico.getEstado(idEncomenda, comunicacaoBD); if (ultimoEstado == "colocada" || ultimoEstado == "pendente") { servico.alteraEstado(idEncomenda, "cancelada", comunicacaoBD); //Espera 5 seg antes de responder a WEBooks Thread.Sleep(new TimeSpan(0, 0, 5)); EncomendaWEBooks.TipoMensagem = "cancelada"; comFila.escreveFilaWeb(EncomendaWEBooks); text.actualizaLog(EncomendaWEBooks.TipoMensagem, false); } else { comunicacaoBD.Transacao.Rollback(); throw new Exception("Erro: estado da encomenda nao permite que seja cancelada"); } } catch (SqlException es) { comunicacaoBD.Transacao.Rollback(); throw new Exception("ERRO: Nao é possivel Cancelar encomenda"); } comunicacaoBD.Transacao.Commit(); }
public void CancelarEncomenda(string idEncomenda) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); try { string[] ultimoEstado = servico.getUltimoEstado(idEncomenda, comunicacaoBD); if (ultimoEstado[1].Trim() == "pendente") { string dataAlteracao = DateTime.Today.Day + "-" + DateTime.Today.Month + "-" + DateTime.Today.Year; int contador = int.Parse(ultimoEstado[0]) + 1; servico.CriaEstadoHistorico(idEncomenda, "cancelada", contador, dataAlteracao, comunicacaoBD); } else { // envia aviso de erro de nao poder cancelar encomenda comunicacaoBD.Transacao.Rollback(); return; } } catch (SqlException es) { comunicacaoBD.Transacao.Rollback(); throw new Exception("ERRO: Nao é possivel Cancelar encomenda"); } comunicacaoBD.Transacao.Commit(); }
public void alteraEstado(string idEncomenda, string estado, ComunicacaoBD comunicacaoBD) { string query = "UPDATE Encomenda" + " SET " + " estado = @estado" + " WHERE " + " idEncomenda = @idEncomenda"; SqlCommand comando = new SqlCommand(query); comando.Parameters.Add(new SqlParameter("@estado", estado)); comando.Parameters.Add(new SqlParameter("@idEncomenda", idEncomenda)); invocaQuery(comando, comunicacaoBD); }
public void alteraTempoEspera(string idEncomenda, int tempoEspera, ComunicacaoBD comunicacaoBD) { string query = "UPDATE Encomenda" + " SET " + " tempoEspera = @tempoEspera" + " WHERE " + " idEncomenda = @idEncomenda"; SqlCommand comando = new SqlCommand(query); comando.Parameters.Add(new SqlParameter("@tempoEspera", tempoEspera)); comando.Parameters.Add(new SqlParameter("@idEncomenda", idEncomenda)); invocaQuery(comando, comunicacaoBD); }
public int actualizaValorTotal(string idEncomenda, string valorTotal, ComunicacaoBD comunicacaoBD) { string query = "UPDATE Encomenda" + " SET " + " valorTotal = @valorTotal" + " WHERE " + " idEncomenda = @idEncomenda"; SqlCommand comando = new SqlCommand(query); comando.Parameters.Add(new SqlParameter("@valorTotal", valorTotal)); comando.Parameters.Add(new SqlParameter("@idEncomenda", idEncomenda)); int i = invocaQuery(comando, comunicacaoBD); return i; }
public int apagaCliente(string idCliente, ComunicacaoBD comunicacaoBD) { string query = "UPDATE Cliente" + " SET " + " estado = @estado " + " WHERE " + " idCliente = @idCliente"; SqlCommand comando = new SqlCommand(query); comando.Parameters.Add(new SqlParameter("@idCliente", idCliente)); comando.Parameters.Add(new SqlParameter("@estado", "inactivo")); int i = invocaQuery(comando, comunicacaoBD); return i; }
public void AlteraEstadoEncomenda(string idEncomenda, string novoEstado) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); try { string[] ultimoEstado = servico.getUltimoEstado(idEncomenda, comunicacaoBD); string dataAlteracao = DateTime.Today.Day + "-" + DateTime.Today.Month + "-" + DateTime.Today.Year; int contador = int.Parse(ultimoEstado[0]) + 1; servico.CriaEstadoHistorico(idEncomenda, novoEstado.ToLower(), contador, dataAlteracao, comunicacaoBD); } catch (SqlException es) { comunicacaoBD.Transacao.Rollback(); throw new Exception("ERRO: Nao é possivel alterar estado encomenda"); } comunicacaoBD.Transacao.Commit(); }
public void ApagaCliente(string username) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); Cliente cliente = servico.getDadosCliente(username, comunicacaoBD); try{ if (MostraEncomendasPendentesCliente(username)) { throw new Exception("ExistemEncomendasPendentes"); } servico.apagaCliente(cliente.IdCliente, comunicacaoBD); } catch (SqlException e) { comunicacaoBD.Transacao.Rollback(); return; } comunicacaoBD.Transacao.Commit(); return; }
//+++++++++++++++++++++++++++++++ ENCOMENDA ++++++++++++++++++++++++++++++++++++++++++++++++++++++ public string insereEncomenda(string idEncomenda, string valorTotal, string estado, string nomeCliente, string numero, string address, string city, string state, string ZIPcode, string country, int tempoEspera, ComunicacaoBD comunicacaoBD) { string query = "INSERT INTO Encomenda(idEncomenda, valorTotal, estado, nomeCliente, numero, address, city, state, ZIPcode, country, tempoEspera)" + "VALUES(@idEncomenda, @valorTotal, @estado, @nomeCliente, @numero, @address, @city, @state, @ZIPcode, @country, @tempoEspera)"; SqlCommand comando = new SqlCommand(query); comando.Parameters.Add(new SqlParameter("@idEncomenda", idEncomenda)); comando.Parameters.Add(new SqlParameter("@valorTotal", valorTotal)); comando.Parameters.Add(new SqlParameter("@estado", estado)); comando.Parameters.Add(new SqlParameter("@nomeCliente", nomeCliente)); comando.Parameters.Add(new SqlParameter("@numero", numero)); comando.Parameters.Add(new SqlParameter("@address", address)); comando.Parameters.Add(new SqlParameter("@city", city)); comando.Parameters.Add(new SqlParameter("@state", state)); comando.Parameters.Add(new SqlParameter("@ZIPcode", ZIPcode)); comando.Parameters.Add(new SqlParameter("@country", country)); comando.Parameters.Add(new SqlParameter("@tempoEspera", tempoEspera)); invocaQuery(comando, comunicacaoBD); return idEncomenda; }
//+++++++++++++++++++++++++++++++ LIVRO ++++++++++++++++++++++++++++++++++++++++++++++++++++++ public int guardaLivro(string idEncomenda, string ISBN, string titulo, string precoVenda, string tempoEntrega, string nomeFornecedor, int quantidade, ComunicacaoBD comunicacaoBD) { string query = "INSERT INTO Livro(idLivro, idEncomenda, ISBN, titulo, precoVenda, tempoEntrega, nomeFornecedor, quantidade)" + "VALUES( @idLivro, @idEncomenda, @ISBN, @titulo, @precoVenda, @tempoEntrega, @nomeFornecedor, @quantidade)"; SqlCommand comando = new SqlCommand(query); comando.Parameters.Add(new SqlParameter("@idLivro", getGUID())); comando.Parameters.Add(new SqlParameter("@idEncomenda", idEncomenda)); comando.Parameters.Add(new SqlParameter("@ISBN", ISBN)); comando.Parameters.Add(new SqlParameter("@titulo", titulo)); comando.Parameters.Add(new SqlParameter("@precoVenda", precoVenda.Replace('.', ','))); comando.Parameters.Add(new SqlParameter("@tempoEntrega", tempoEntrega)); comando.Parameters.Add(new SqlParameter("@nomeFornecedor", nomeFornecedor)); comando.Parameters.Add(new SqlParameter("@quantidade", quantidade)); int i = invocaQuery(comando, comunicacaoBD); return i; }
public void EntregueEncomenda(string idEncomenda) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); try { string ultimoEstado = servico.getEstado(idEncomenda, comunicacaoBD); if (ultimoEstado == "colocada" || ultimoEstado == "pendente") { servico.alteraEstado(idEncomenda, "entregue", comunicacaoBD); } else { comunicacaoBD.Transacao.Rollback(); throw new Exception("Erro: estado da encomenda nao permite que passe para entregue"); } } catch (SqlException es) { comunicacaoBD.Transacao.Rollback(); throw new Exception("ERRO: Nao é possivel colocar a encomenda como entregue"); } comunicacaoBD.Transacao.Commit(); }
public void LimpaCarrinhoCompras(string username) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); try { Cliente cliente = servico.getDadosCliente(username, comunicacaoBD); if (cliente == null) { comunicacaoBD.Transacao.Rollback(); throw new ClienteInexistente(); } string idCarrinho = servico.getIdCarrinho(cliente.IdCliente, comunicacaoBD); servico.limpaCarrinhoCompras(idCarrinho, cliente.IdCliente, comunicacaoBD); } catch (SqlException e) { comunicacaoBD.Transacao.Rollback(); throw new CarrinhoNaoLimpo(); } comunicacaoBD.Transacao.Commit(); }
public void ReduzTempoEspera(int tempo) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); ArrayList listaEncomendas = this.MostraEncomendas(); foreach (Encomenda encomenda in listaEncomendas) { encomenda.TempoEspera = encomenda.TempoEspera - tempo; if (encomenda.TempoEspera <= 0) { this.EntregueEncomenda(encomenda.IdEncomenda); servico.alteraTempoEspera(encomenda.IdEncomenda, 0, comunicacaoBD); } else { servico.alteraTempoEspera(encomenda.IdEncomenda, encomenda.TempoEspera, comunicacaoBD); } } }
public Cliente[] MostraClientes() { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); ArrayList listaClientes; Cliente[] clientes; int i = 0; try { listaClientes = servico.getClientes(comunicacaoBD); clientes = new Cliente[listaClientes.Count]; foreach (Cliente cliente in listaClientes) { clientes[i++] = cliente; } } catch (SqlException e) { comunicacaoBD.Transacao.Rollback(); return null; } comunicacaoBD.Transacao.Commit(); return clientes; }
public Livro[] ListaCarrinhoCompras(string username) { ArrayList listaLivros = null; Livro[] livros = null; ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); try { listaLivros = servico.getLivrosDoCarrinho(username, comunicacaoBD); if (listaLivros.Count == 0) { throw new CarrinhoVazioException(); } livros = new Livro[listaLivros.Count]; int i = 0; foreach (Livro livro in listaLivros) { livros[i++] = livro; } } catch (SqlException e) { comunicacaoBD.Transacao.Rollback(); return null; } comunicacaoBD.Transacao.Commit(); return livros; }
public Encomenda[] MostraEncomendasCliente(string username) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); int jEnc = 0; ArrayList aux = new ArrayList(); Encomenda[] encomendas = null; ArrayList listaEncomendas = this.MostraEncomendas("todas"); Cliente cliente = servico.getDadosCliente(username, comunicacaoBD); if (cliente != null) { foreach (Encomenda enc in listaEncomendas) { if (enc.IdCliente == cliente.IdCliente) { aux.Add(enc); } } encomendas = new Encomenda[aux.Count]; foreach (Encomenda encomenda in aux) { encomendas[jEnc++] = encomenda; } } return encomendas; }
// Auxiliares public ArrayList MostraEncomendas(string nomeEstado) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); ArrayList listaEncomendas = new ArrayList(); ArrayList listaLivros = null; ArrayList listaEstados = null; ArrayList aux = new ArrayList(); Livro[] livros; EstadoEncomenda[] historicoEstados; int iLivro = 0; int iEstado = 0; double valorTotal = 0.0; try { listaEncomendas = servico.getListaEncomendas(comunicacaoBD); foreach (Encomenda encomenda in listaEncomendas) { listaLivros = servico.getLivrosEncomenda(encomenda.IdEncomenda, comunicacaoBD); listaEstados = servico.getHistoricoEstados(encomenda.IdEncomenda, comunicacaoBD); livros = new Livro[listaLivros.Count]; historicoEstados = new EstadoEncomenda[listaEstados.Count]; string[] estado = servico.getUltimoEstado(encomenda.IdEncomenda, comunicacaoBD); if (estado[1].Trim() == nomeEstado || nomeEstado == "todas") { foreach (Livro livro in listaLivros) { livros[iLivro++] = livro; double teste = double.Parse(livro.PrecoVenda); valorTotal += teste * livro.Quantidade; } foreach (EstadoEncomenda estadoEnc in listaEstados) { historicoEstados[iEstado++] = estadoEnc; } encomenda.ValorTotal = valorTotal; encomenda.ListaLivros = livros; encomenda.Estado = estado[1]; encomenda.HistoricoEstado = historicoEstados; aux.Add(encomenda); iLivro = 0; iEstado = 0; valorTotal = 0.0; continue; } iLivro = 0; iEstado = 0; valorTotal = 0.0; } } catch (SqlException es) { comunicacaoBD.Transacao.Rollback(); throw new Exception("ERRO: Nao é possivel Cancelar encomenda"); } comunicacaoBD.Transacao.Commit(); return aux; }
public DadosGestao MostraDadosGestao() { DadosGestao dadosGestao = new DadosGestao(); ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); try { dadosGestao.NumSemDesconto = servico.getNumeroLivrosDesconto(0, comunicacaoBD); dadosGestao.NumComDesconto = servico.getNumeroLivrosDesconto(1, comunicacaoBD); dadosGestao.NumComprados = servico.getNumeroLivrosComprados(comunicacaoBD); dadosGestao.NumPesquisados = servico.getNumeroLivrosPesquisados(comunicacaoBD); ; } catch (SqlException e) { comunicacaoBD.Transacao.Rollback(); throw new Exception("ERRO: Não e posivel aceder aos dados"); } comunicacaoBD.Transacao.Commit(); return dadosGestao; }
public Cliente MostraDadosCliente(string username) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); Cliente cliente; try { cliente = servico.getDadosCliente(username, comunicacaoBD); } catch (SqlException e) { comunicacaoBD.Transacao.Rollback(); return null; } comunicacaoBD.Transacao.Commit(); return cliente; }
public Livro[] ListaPesquisaHistorico(string username) { ArrayList listaLivros = null; Livro[] livros = null; ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); try { listaLivros = servico.getLivrosPesquisasHistorico(username, comunicacaoBD); livros = new Livro[listaLivros.Count]; int i = 0; foreach (Livro livro in listaLivros) { livros[i++] = livro; } } catch (SqlException e) { comunicacaoBD.Transacao.Rollback(); return null; } comunicacaoBD.Transacao.Commit(); return livros; }
//+++++++++++++++++++++++++++++++ BASE DE DADOS ++++++++++++++++++++++++++++++++++++++++++++++++++++++ public int invocaQuery(SqlCommand comando, ComunicacaoBD comunicacao) { int i = 0; comando.Transaction = comunicacao.Transacao; comando.Connection = comunicacao.Ligacao; i = comando.ExecuteNonQuery(); return i; }
public SqlDataReader invocaQueryLeitura(SqlCommand comando, ComunicacaoBD comunicacao) { comando.Connection = comunicacao.Ligacao; comando.Transaction = comunicacao.Transacao; SqlDataReader resposta = null; resposta = comando.ExecuteReader(); return resposta; }
// LIVRO public void InsereListaLivros(Livro[] listaLivros, string idEncomenda) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); try{ foreach (Livro livro in listaLivros) { int i = servico.guardaLivro(idEncomenda, livro.ISBN, livro.Titulo, livro.PrecoVenda.Replace(".", ","), livro.TempoEntrega, livro.NomeFornecedor, livro.Quantidade, comunicacaoBD); } }catch (SqlException e) { comunicacaoBD.Transacao.Rollback(); throw new Exception("Erro a guardar lista de livros: Nao é possivel realizar esta encomenda " + idEncomenda); } comunicacaoBD.Transacao.Commit(); }
// Auxiliares public ArrayList MostraEncomendas() { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); ArrayList listaEncomendas = new ArrayList(); ArrayList aux = new ArrayList(); try { listaEncomendas = servico.getListaEncomendas(comunicacaoBD); foreach (Encomenda encomenda in listaEncomendas) { if (encomenda.Estado == "colocada" || encomenda.Estado == "pendente") { aux.Add(encomenda); } } } catch (SqlException es) { comunicacaoBD.Transacao.Rollback(); throw new Exception("ERRO: Nao é possivel lista encomendas"); } comunicacaoBD.Transacao.Commit(); return aux; }
public Utilizador LoginUtilizador(string username, string password) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); try { Gestor gestor = servico.getDadosGestor(username, comunicacaoBD); Cliente cliente = servico.getDadosCliente(username, comunicacaoBD); if (gestor != null) { if (gestor.Password.Trim() != password) { comunicacaoBD.Transacao.Rollback(); throw new Exception(); } else { comunicacaoBD.Transacao.Commit(); return new Utilizador(gestor); } } else if (cliente != null) { if (cliente.Estado.Trim() == "inactivo") { comunicacaoBD.Transacao.Rollback(); throw new Exception(); } else if (cliente.Password.Trim() != password) { comunicacaoBD.Transacao.Rollback(); throw new Exception(); } else { comunicacaoBD.Transacao.Commit(); return new Utilizador(cliente); } } else { comunicacaoBD.Transacao.Rollback(); throw new Exception(); } } catch (SqlException e) { comunicacaoBD.Transacao.Rollback(); throw new Exception(); } }
public Encomenda[] MostraEncomendasLivro(string ISBN) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); int jEnc = 0; ArrayList aux = new ArrayList(); Encomenda[] encomendas = null; ArrayList listaEncomendas = this.MostraEncomendas("todas"); foreach (Encomenda enc in listaEncomendas) { foreach (Livro liv in enc.ListaLivros) { if (liv.ISBN.Trim() == ISBN) { aux.Add(enc); } } } encomendas = new Encomenda[aux.Count]; foreach (Encomenda encomenda in aux) { encomendas[jEnc++] = encomenda; } return encomendas; }
//ENCOMENDA public void InsereEncomenda(ref Encomenda encomenda) { ComunicacaoBD comunicacaoBD = new ComunicacaoBD(); int tempoEspera = 0; try { servico.insereEncomenda(encomenda.IdEncomenda, encomenda.ValorTotal + "", "colocada", encomenda.NomeCliente, encomenda.Numero, encomenda.Address, encomenda.City, encomenda.State, encomenda.ZIPcode, encomenda.Country, 0, comunicacaoBD); encomenda.TempoEspera = 0; foreach (Livro livro in encomenda.ListaLivros) { tempoEspera = CalculaTempoEntrega(livro.TempoEntrega); if (encomenda.TempoEspera < tempoEspera) { encomenda.TempoEspera = tempoEspera; } servico.guardaLivro(encomenda.IdEncomenda, livro.ISBN, livro.Titulo, livro.PrecoVenda.Replace(".", ","), livro.TempoEntrega, livro.NomeFornecedor, livro.Quantidade, comunicacaoBD); } } catch (SqlException e) { comunicacaoBD.Transacao.Rollback(); throw new Exception("ERRO: encomenda nao pode ser atendida"); } comunicacaoBD.Transacao.Commit(); }