protected void CancelaEncomenda(string idEncomenda)
    {
        WEBooksBizTalk_WS.Utilizador utilizador = (WEBooksBizTalk_WS.Utilizador)this.Session["utilizador"];
        WEBooksBDService servicoBaseDados = new WEBooksBDService();
        WEBooksBizTalk_WS.WEBooksBiztalk servicoBiztalk = new WEBooksBizTalk_WS.WEBooksBiztalk();

        WEBooksBD.Encomenda[] listaEncomendas = (WEBooksBD.Encomenda[])this.Session["ListaEncomendas"];
        WEBooksBD.Encomenda encomenda = null;
        foreach (WEBooksBD.Encomenda enc in listaEncomendas)
        {
            if (enc.IdEncomenda == idEncomenda)
            {
                encomenda = enc;
                break;
            }
        }

        WEBooksBizTalk_WS.Encomenda encomendaBiz = new WEBooksBizTalk_WS.Encomenda();

        encomendaBiz.IdEncomenda = encomenda.IdEncomenda;

        try
        {
            servicoBiztalk.CancelaEncomenda(ref encomendaBiz);
        }
        catch (Exception) {
            DivUserInexistente.Attributes.Add("style", "color:Red; text-align:center; font-weight: bold; ");
            DivUserInexistente.InnerText = "A encomenda " + encomendaBiz.IdEncomenda + "ja se encontra cancelada";
        }
        this.PesquisaHistoricoEncomendas(null, null);
    }
    protected void MostraLivrosMaisPesquisados(object sender, EventArgs e)
    {
        WEBooksBDService servicoBaseDados = new WEBooksBDService();

        Livro[] listaLivros = servicoBaseDados.MostraLivrosMaisPesquisados(10);
        this.ApresentaResultados(listaLivros);
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        WEBooksBDService servicoBaseDados = new WEBooksBDService();

        DataTable resposta = new DataTable();

        resposta.Columns.Add("ImageUrl");
        resposta.Columns.Add("ISBN");
        resposta.Columns.Add("Titulo");
        resposta.Columns.Add("Categoria");
        resposta.Columns.Add("Autores");
        resposta.Columns.Add("Editora");
        resposta.Columns.Add("AnoEdicao");
        resposta.Columns.Add("PrecoVenda");
           // resposta.Columns.Add("TempoEntrega");

        //buscar o user a sessao
        WEBooksBizTalk_WS.Utilizador utilizador = (WEBooksBizTalk_WS.Utilizador)this.Session["utilizador"];

        /*if (utilizador == null)
        {
            //mandar excepcao nao devia tar aki

            this.Response.Write("<h1>NAO LOGADO</h1>");

            return;
        }
        */

        Livro[] carrinhoCompras = null;
        try
        {
            carrinhoCompras = servicoBaseDados.ListaCarrinhoCompras(utilizador.Username.Trim());

            foreach (Livro livro in carrinhoCompras)
            {
                Object[] temp = new Object[8];
                temp[0] = livro.UrlImagem;
                temp[1] = livro.ISBN;
                temp[2] = livro.Titulo;
                temp[3] = livro.Categoria;
                temp[4] = livro.Autores;
                temp[5] = livro.Editora;
                temp[6] = livro.AnoEdicao;
                temp[7] = livro.PrecoVenda;
                resposta.Rows.Add(temp);
            }

            CarrinhoGrid.DataSource = resposta;
            CarrinhoGrid.DataBind();

            this.Session["carrinhoVazio"] = "carrinho";
        }
        catch (Exception excarro)
        {
            this.Session["carrinhoVazio"] = "";
            ErroCarrinho.Attributes.Add("style", "color:Red;");
            ErroCarrinho.InnerText = "O Carrinho de Compras esta Vazio";
        }
    }
    protected void MostraDadosGestao(object sender, EventArgs e)
    {
        WEBooksBDService baseDados = new WEBooksBDService();

           DadosGestao dadosGestao = baseDados.MostraDadosGestao();

           lbLivrosComprados.Text = dadosGestao.NumComprados + "";
           lbLivrosPesquisados.Text = dadosGestao.NumPesquisados + "";
           lbLivrosCompradosComDesconto.Text = dadosGestao.NumComDesconto + "";
           lbLivrosCompradosSemDesconto.Text = dadosGestao.NumSemDesconto + "";
    }
    protected bool MostraComDesconto()
    {
        //iniciacao da tabela
        DataTable resposta = new DataTable();
        resposta.Columns.Add("ImageUrl");
        resposta.Columns.Add("ISBN");
        resposta.Columns.Add("Titulo");
        resposta.Columns.Add("Categoria");
        resposta.Columns.Add("Autores");
        resposta.Columns.Add("Editora");
        resposta.Columns.Add("AnoEdicao");
        resposta.Columns.Add("PrecoVenda");
        resposta.Columns.Add("TempoEntrega");

        //query de livros a amazon e companhia

        WEBooksNY newYorkTimes = new WEBooksNY();

        WEBooksNY_WS.LivroPromocao[] listaPromocao = newYorkTimes.LivrosTopSellers();

        WEBooksBDService baseDados = new WEBooksBDService();

        baseDados.InsereListaTopSellers(NYtoBD(listaPromocao));

        //preenchimento da tabela
        foreach (WEBooksNY_WS.LivroPromocao livro in listaPromocao)
        {
            Object[] temp = new Object[9];

           temp[0] = "~/App_Themes/webook3.jpg";

            temp[1] = "indisponivel";
            temp[2] = livro.Titulo;

            temp[3] = "nao ha categoria";

            temp[4] = livro.NomeAutor;

            temp[5] = "indisponivel";
            temp[6] = "indisponivel";
            temp[7] = "indisponivel";
            temp[8] = "indisponivel";

            // temp[9] = "NAO HA DESCRICAO";

            resposta.Rows.Add(temp);
        }

        DescontoGrid.DataSource = resposta;
        DescontoGrid.DataBind();

        return true;
    }
    protected void CarrinhoGrid_SelectedIndexChanged(object sender, EventArgs e)
    {
        WEBooksBDService servicoBaseDados = new WEBooksBDService();

        WEBooksBizTalk_WS.Utilizador utilizador = (WEBooksBizTalk_WS.Utilizador)this.Session["utilizador"];

        GridViewRow row = CarrinhoGrid.SelectedRow;

        servicoBaseDados.RemoveLivroDoCarrinhoCompras(utilizador.Username, row.Cells[1].Text, "amazon");

        this.Response.Redirect("~/Web/carrinhoCompras.aspx", true);
    }
    protected void PesquisaHistorico(object sender, EventArgs e)
    {
        WEBooksBDService servicoBaseDados = new WEBooksBDService();

        WEBooksBizTalk_WS.Utilizador user = (WEBooksBizTalk_WS.Utilizador)this.Session["utilizador"];

        if (user == null || user.TipoUtilizador.CompareTo("Gestor") != 0)
        {
            DivUserInexistente.Attributes.Add("style", "color:Red; text-align:center; font-weight: bold; ");
            DivUserInexistente.InnerText = "Necessita de estar logado com privilégios de gestor para realizar essa tarefa!";
            return;
        }
        else {
            //iniciacao da tabela
            DataTable resposta = new DataTable();

            resposta.Columns.Add("ImageUrl");
            resposta.Columns.Add("ISBN");
            resposta.Columns.Add("Titulo");
            resposta.Columns.Add("Categoria");
            resposta.Columns.Add("Autores");
            resposta.Columns.Add("Editora");
            resposta.Columns.Add("AnoEdicao");
            resposta.Columns.Add("PrecoVenda");

            //query de livros a amazon e companhia
            Livro[] bookList = servicoBaseDados.HistoricoComprasLivros(TBUserName.Text); //comando de acesso a BD

            //preenchimento da tabela
            foreach (Livro livro in bookList)
            {
                Object[] temp = new Object[8];

                temp[0] = livro.UrlImagem;
                temp[1] = livro.ISBN;
                temp[2] = livro.Titulo;
                temp[3] = livro.Categoria;
                temp[5] = livro.Editora;
                temp[6] = livro.AnoEdicao;
                temp[7] = livro.PrecoVenda;

                resposta.Rows.Add(temp);
            }

            HistoricoGrid.DataSource = resposta;
            HistoricoGrid.DataBind();
        }
    }
    protected void MostraClientes(object sender, EventArgs e)
    {
        WEBooksBDService servicoBaseDados = new WEBooksBDService();

        WEBooksBizTalk_WS.Utilizador utilizador = (WEBooksBizTalk_WS.Utilizador)this.Session["utilizador"];

        if (utilizador == null || utilizador.TipoUtilizador != "Gestor")
        {
            DivUserInexistente.Attributes.Add("style", "color:Red; text-align:center; font-weight: bold; ");
            DivUserInexistente.InnerText = "Necessita de ser um Gestor";
            return;
        }

        DataTable Clientes = new DataTable();

        Clientes.Columns.Add("IdCliente");
        Clientes.Columns.Add("Nome");
        Clientes.Columns.Add("Username");
        Clientes.Columns.Add("Estado");

        //query de livros a amazon e companhia
        Cliente[] listaClientes = servicoBaseDados.MostraClientes(); //comando de acesso a BD

        if (listaClientes == null)
        {
            DivUserInexistente.Attributes.Add("style", "color:Red; text-align:center; font-weight: bold; ");
            DivUserInexistente.InnerText = "Nao existem Clientes Registados";
            return;
        }

        //preenchimento da tabela
        foreach (Cliente cliente in listaClientes)
        {
            Object[] cliTable = new Object[4];

            cliTable[0] = cliente.IdCliente;
            cliTable[1] = cliente.Nome;
            cliTable[2] = cliente.Username;
            cliTable[3] = cliente.Estado;

            Clientes.Rows.Add(cliTable);
        }
        ListaClientes.DataSource = Clientes;
        ListaClientes.DataBind();

        this.Session.Add("ListaClientes", listaClientes);
    }
    protected void ApagaCliente(string username)
    {
        WEBooksBDService servicoBaseDados = new WEBooksBDService();

        try
        {
            servicoBaseDados.ApagaCliente(username);
        }
        catch (Exception ex)
        {
            DivUserInexistente.Attributes.Add("style", "color:Red; text-align:center; font-weight: bold; ");
            DivUserInexistente.InnerText = "O utilizador tem encomendas pendentes";
            return;
        }

        this.Session.Add("Cliente", null);
        this.Response.Redirect("~/Web/MostraClientes.aspx", true);
    }
    protected void Page_Load(object sender, System.EventArgs e)
    {
        WEBooksBizTalk_WS.Utilizador utilizador = (WEBooksBizTalk_WS.Utilizador)this.Session["utilizador"];

        this.Session.Add("UserMapa", null);

        if (utilizador == null || utilizador.TipoUtilizador != "Gestor")
        {
            DivUserInexistente.Attributes.Add("style", "color:Red; text-align:center; font-weight: bold; ");
            DivUserInexistente.InnerText = "Necessita de estar logado como Gestor";

            gMap.Visible = false;

            return;
        }
        gMap.Visible = true;

        WEBooksBDService servicoBD = new WEBooksBDService();

        Cliente[] listaClientes = servicoBD.MostraClientes();

        GPoint gp = new GPoint(float.Parse(listaClientes[0].Longitude), float.Parse(listaClientes[0].Latitude));

        GMarker gm;

        foreach (Cliente cli in listaClientes) {

            GPoint ponto = new GPoint( float.Parse(cli.Longitude), float.Parse(cli.Latitude) );

            gm = new GMarker(ponto, "<a href=\"./pesquisaHistoricoEncomendas.aspx?Username="******">" + cli.Username + "</a>");
            gMap.Overlays.Add(gm);
        }

           // gMap.AddControl(new GSmallMapControl());
        gMap.AddControl(new GLargeMapControl());

        gMap.AddControl(new GMapTypeControl());

        gMap.CenterAndZoom(gp, 4);
    }
    protected void PesquisaHistoricoEncomendas(object sender, EventArgs e)
    {
        WEBooksBDService servicoBaseDados = new WEBooksBDService();

        WEBooksBizTalk_WS.Utilizador utilizador = (WEBooksBizTalk_WS.Utilizador)this.Session["utilizador"];

        string user = (string)this.Session["UserMapa"];

        if (user == null)
        {
            if (utilizador == null)
            {
                DivUserInexistente.Attributes.Add("style", "color:Red; text-align:center; font-weight: bold; ");
                DivUserInexistente.InnerText = "Necessita de estar logado";
                return;
            }
            else if (utilizador.TipoUtilizador == "Gestor")
            {
                this.Response.Redirect("~/Web/pesquisaHistoricoGestor.aspx", true);
                return;
            }
            else {
                user = utilizador.Username;
            }
        }

        DataTable Encomendas = new DataTable();

        Encomendas.Columns.Add("IdEncomenda");
        Encomendas.Columns.Add("Cliente");
        Encomendas.Columns.Add("DataCriacao");
        Encomendas.Columns.Add("Estado");
        Encomendas.Columns.Add("ValorTotal");

        //query de livros a amazon e companhia
        Encomenda[] listaEncomendas = servicoBaseDados.MostraEncomendasCliente(user); //comando de acesso a BD

        if (listaEncomendas == null)
        {
            this.Session.Add("ListaEncomendas", null);
            this.Session.Add("mostraEncomendas", null);

            DivUserInexistente.Attributes.Add("style", "color:Red; text-align:center; font-weight: bold; ");
            DivUserInexistente.InnerText = "Utilizador não tem encomendas";
            return;
        }

        //preenchimento da tabela
        foreach (Encomenda enc in listaEncomendas)
        {
            Object[] encTable = new Object[5];

            encTable[0] = enc.IdEncomenda;
            encTable[1] = enc.Cliente.Username;
            encTable[2] = enc.DataCriacao;
            encTable[3] = enc.Estado;
            encTable[4] = enc.ValorTotal;

            Encomendas.Rows.Add(encTable);
        }
        HistoricoEncomendas.DataSource = Encomendas;
        HistoricoEncomendas.DataBind();

        this.Session.Add("ListaEncomendas", listaEncomendas);
        this.Session.Add("mostraEncomendas", "mostra");
    }
    protected void PesquisaHistoricoEncomendas(object sender, EventArgs e)
    {
        WEBooksBDService servicoBaseDados = new WEBooksBDService();

        WEBooksBizTalk_WS.Utilizador utilizador = (WEBooksBizTalk_WS.Utilizador)this.Session["utilizador"];

        if (utilizador == null )
        {
            DivUserInexistente.Attributes.Add("style", "color:Red; text-align:center; font-weight: bold; ");
            DivUserInexistente.InnerText = "Necessita de estar logado";
            return;
        }

        DataTable Encomendas = new DataTable();

        Encomendas.Columns.Add("IdEncomenda");
        Encomendas.Columns.Add("Cliente");
        Encomendas.Columns.Add("DataCriacao");
        Encomendas.Columns.Add("Estado");
        Encomendas.Columns.Add("ValorTotal");

        Encomenda[] listaEncomendas = null;
        if (rbCliente.Checked == true)
        {
            listaEncomendas = servicoBaseDados.MostraEncomendasCliente(tbUserName.Text); //comando de acesso a BD
        }else if(rbLivro.Checked == true){
            listaEncomendas = servicoBaseDados.MostraEncomendasLivro(tbUserName.Text); //comando de acesso a BD
        }
        else if (rbTodas.Checked == true) {
            listaEncomendas = servicoBaseDados.MostraListaEncomendas();
        }

        if (listaEncomendas == null)
        {
            this.Session.Add("ListaEncomendas", null);
            this.Session.Add("mostraEncomendas", null);
            this.Session.Add("username", null);

            DivUserInexistente.Attributes.Add("style", "color:Red; text-align:center; font-weight: bold; ");
            DivUserInexistente.InnerText = "Utilizador não tem encomendas \\ Livro nao foi comprado ";
            return;
        }

        //preenchimento da tabela
        foreach (Encomenda enc in listaEncomendas)
        {
            Object[] encTable = new Object[5];

            encTable[0] = enc.IdEncomenda;
            encTable[1] = enc.Cliente.Username;
            encTable[2] = enc.DataCriacao;
            encTable[3] = enc.Estado;
            encTable[4] = enc.ValorTotal;

            Encomendas.Rows.Add(encTable);
        }
        HistoricoEncomendas.DataSource = Encomendas;
        HistoricoEncomendas.DataBind();

        this.Session.Add("ListaEncomendas", listaEncomendas);
        this.Session.Add("mostraEncomendas", "mostra");
        this.Session.Add("username", tbUserName.Text);
    }