Example #1
0
    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;
    }
Example #2
0
    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;
    }
Example #3
0
    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();
    }
Example #5
0
    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();
    }
Example #6
0
    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);
    }
Example #7
0
    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);
    }
Example #8
0
    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;
    }
Example #9
0
    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;
    }
Example #10
0
    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();
    }
Example #11
0
    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;
    }
Example #12
0
    //+++++++++++++++++++++++++++++++ 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;
    }
Example #13
0
    //+++++++++++++++++++++++++++++++ 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();
    }
Example #15
0
    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);
            }
        }
    }
Example #17
0
    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;
    }
Example #18
0
    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;
    }
Example #19
0
    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;
    }
Example #20
0
    // 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;
    }
Example #21
0
    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;
    }
Example #22
0
    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;
    }
Example #23
0
    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;
    }
Example #24
0
    //+++++++++++++++++++++++++++++++ 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;
    }
Example #25
0
    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;
    }
Example #28
0
    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();
        }
    }
Example #29
0
    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();
    }