private void materiaisView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            e.Handled = true;

            /*ver o tipo de material do item selecionado, meter na grid de detalhes a informçao
             * desse material, tornando a visibilidade ativa dos textblocks especificos*/
            String tipoMaterial = "";

            if (materiaisView.SelectedItems.Count > 0)
            {
                hideAll();
                addMaterial.IsEnabled = true;
                MaterialTextil mt = new MaterialTextil();
                mt = (MaterialTextil)materiaisView.SelectedItem;

                tipoMaterial = dataHandler.getMaterialType(mt.Referencia);
                //consoante o material selecionado, tornar visivel ou a caixa de seleçao de
                //quantidade de material inteira ou a caixa de seleçao de quantidade de material decimal
                if (tipoMaterial.Equals("Pano", StringComparison.Ordinal) || tipoMaterial.Equals("Linha", StringComparison.Ordinal))
                {
                    txtQuantidadeDec.Visibility = Visibility.Visible;
                    txtQuantidadeInt.Visibility = Visibility.Hidden;
                }
                else
                {
                    txtQuantidadeInt.Visibility = Visibility.Visible;
                    txtQuantidadeDec.Visibility = Visibility.Hidden;
                }

                if (tipoMaterial.Equals("Pano", StringComparison.Ordinal))
                {
                    Pano pano = dataHandler.getPano(mt.Referencia);
                    txt1.Text               = pano.Tipo;
                    txt2.Text               = pano.Gramagem.ToString() + " g/m^2";
                    txt3.Text               = pano.AreaArmazem.ToString() + "m^2";
                    txt4.Text               = pano.PrecoMetroQuadrado.ToString() + " €/m^2";
                    panoArea.Visibility     = Visibility.Visible;
                    panoGramagem.Visibility = Visibility.Visible;
                    panoPreço.Visibility    = Visibility.Visible;
                    panoTipo.Visibility     = Visibility.Visible;
                }
                else if (tipoMaterial.Equals("Linha", StringComparison.Ordinal))
                {
                    Linha linha = dataHandler.getLinha(mt.Referencia);
                    txt1.Text = linha.Grossura.ToString() + " cm";
                    txt2.Text = linha.Preco100Metros.ToString() + " €/100m";
                    txt3.Text = linha.ComprimentoStock.ToString() + " cm";
                    txt4.Text = "";
                    linhaGrossura.Visibility   = Visibility.Visible;
                    linhaPreço.Visibility      = Visibility.Visible;
                    linhaQuantidade.Visibility = Visibility.Visible;
                }
                else if (tipoMaterial.Equals("Fecho", StringComparison.Ordinal))
                {
                    Fecho fecho = dataHandler.getFecho(mt.Referencia);
                    txt1.Text = fecho.Comprimento.ToString() + " cm";
                    txt2.Text = fecho.TamanhoDente.ToString() + " cm";
                    txt3.Text = fecho.QuantidadeArmazem.ToString() + " un.";
                    txt4.Text = fecho.PrecoUnidade.ToString() + " €/un.";
                    fechoComprimento.Visibility  = Visibility.Visible;
                    fechoTamanhoDente.Visibility = Visibility.Visible;
                    fechoPreço.Visibility        = Visibility.Visible;
                    fechoQuantidade.Visibility   = Visibility.Visible;
                }
                else if (tipoMaterial.Equals("Mola", StringComparison.Ordinal))
                {
                    Mola mola = dataHandler.getMola(mt.Referencia);
                    txt1.Text = mola.Diametro.ToString() + " cm";
                    txt2.Text = mola.QuantidadeArmazem.ToString() + " un.";
                    txt3.Text = mola.PrecoUnidade.ToString() + " €/un.";
                    txt4.Text = "";
                    molaDiametro.Visibility   = Visibility.Visible;
                    molaPreço.Visibility      = Visibility.Visible;
                    molaQuantidade.Visibility = Visibility.Visible;
                }
                else if (tipoMaterial.Equals("Botão", StringComparison.Ordinal))
                {
                    Botao botao = dataHandler.getBotao(mt.Referencia);
                    txt1.Text = botao.Diametro.ToString() + " cm";
                    txt2.Text = botao.QuantidadeArmazem.ToString() + " un.";
                    txt3.Text = botao.PrecoUnidade.ToString() + " €/un.";
                    txt4.Text = "";
                    botaoDiametro.Visibility   = Visibility.Visible;
                    botaoPreço.Visibility      = Visibility.Visible;
                    botaoQuantidade.Visibility = Visibility.Visible;
                }
                else if (tipoMaterial.Equals("Elástico", StringComparison.Ordinal))
                {
                    Elastico el = dataHandler.getElastico(mt.Referencia);
                    txt1.Text = el.Comprimento.ToString() + " cm";
                    txt2.Text = el.Largura.ToString() + " cm";
                    txt3.Text = el.QuantidadeArmazem.ToString() + " un.";
                    txt4.Text = el.PrecoUnidade.ToString() + " €/un.";
                    elasticoComprimento.Visibility = Visibility.Visible;
                    elasticoLargura.Visibility     = Visibility.Visible;
                    elasticoPreço.Visibility       = Visibility.Visible;
                    elasticoQuantidade.Visibility  = Visibility.Visible;
                }
                else if (tipoMaterial.Equals("Fita de Velcro", StringComparison.Ordinal))
                {
                    FitaVelcro f = dataHandler.getFitaVelcro(mt.Referencia);
                    txt1.Text = f.Comprimento.ToString() + " cm";
                    txt2.Text = f.Largura.ToString() + " cm";
                    txt3.Text = f.QuantidadeArmazem.ToString() + " un.";
                    txt4.Text = f.PrecoUnidade.ToString() + " €/un.";
                    velcroComprimento.Visibility = Visibility.Visible;
                    velcroLargura.Visibility     = Visibility.Visible;
                    velcroPreço.Visibility       = Visibility.Visible;
                    velcroQuantidade.Visibility  = Visibility.Visible;
                }
            }
        }
        private void fillInfo()
        {
            design.Text    = mat.Designacao;
            cor.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(mat.Cor));
            if (cor.Background.Equals(new SolidColorBrush((Color)ColorConverter.ConvertFromString("Black"))))
            {
                cor.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("White"));
            }
            cor.Content       = mat.Cor;
            mat.TipoMaterial1 = dataHandler.getMaterialType(mat.Referencia);
            if (mat.TipoMaterial1.Equals("Pano", StringComparison.Ordinal))
            {
                Pano pano = dataHandler.getPano(mat.Referencia);
                txt1.Text               = pano.Tipo;
                txt2.Text               = pano.Gramagem.ToString() + " g/m^2";
                txt3.Text               = pano.AreaArmazem.ToString() + "m^2";
                txt4.Text               = pano.PrecoMetroQuadrado.ToString() + " €/m^2";
                panoArea.Visibility     = Visibility.Visible;
                panoGramagem.Visibility = Visibility.Visible;
                panoPreço.Visibility    = Visibility.Visible;
                panoTipo.Visibility     = Visibility.Visible;
            }
            else if (mat.TipoMaterial1.Equals("Linha", StringComparison.Ordinal))
            {
                Linha linha = dataHandler.getLinha(mat.Referencia);
                txt1.Text = linha.Grossura.ToString() + " cm";
                txt2.Text = linha.Preco100Metros.ToString() + " €/100m";
                txt3.Text = linha.ComprimentoStock.ToString() + " cm";
                txt4.Text = "";
                linhaGrossura.Visibility   = Visibility.Visible;
                linhaPreço.Visibility      = Visibility.Visible;
                linhaQuantidade.Visibility = Visibility.Visible;
            }
            else if (mat.TipoMaterial1.Equals("Fecho", StringComparison.Ordinal))
            {
                Fecho fecho = dataHandler.getFecho(mat.Referencia);
                txt1.Text = fecho.Comprimento.ToString() + " cm";
                txt2.Text = fecho.TamanhoDente.ToString() + " cm";
                txt3.Text = fecho.QuantidadeArmazem.ToString() + " un.";
                txt4.Text = fecho.PrecoUnidade.ToString() + " €/un.";
                fechoComprimento.Visibility  = Visibility.Visible;
                fechoTamanhoDente.Visibility = Visibility.Visible;
                fechoPreço.Visibility        = Visibility.Visible;
                fechoQuantidade.Visibility   = Visibility.Visible;
            }
            else if (mat.TipoMaterial1.Equals("Mola", StringComparison.Ordinal))
            {
                Mola mola = dataHandler.getMola(mat.Referencia);
                txt1.Text = mola.Diametro.ToString() + " cm";
                txt2.Text = mola.QuantidadeArmazem.ToString() + " un.";
                txt3.Text = mola.PrecoUnidade.ToString() + " €/un.";
                txt4.Text = "";
                molaDiametro.Visibility   = Visibility.Visible;
                molaPreço.Visibility      = Visibility.Visible;
                molaQuantidade.Visibility = Visibility.Visible;
            }
            else if (mat.TipoMaterial1.Equals("Botão", StringComparison.Ordinal))
            {
                Botao botao = dataHandler.getBotao(mat.Referencia);
                txt1.Text = botao.Diametro.ToString() + " cm";
                txt2.Text = botao.QuantidadeArmazem.ToString() + " un.";
                txt3.Text = botao.PrecoUnidade + " €/un.";
                txt4.Text = "";
                botaoDiametro.Visibility   = Visibility.Visible;
                botaoPreço.Visibility      = Visibility.Visible;
                botaoQuantidade.Visibility = Visibility.Visible;
            }
            else if (mat.TipoMaterial1.Equals("Elástico", StringComparison.Ordinal))
            {
                Elastico el = dataHandler.getElastico(mat.Referencia);
                txt1.Text = el.Comprimento.ToString() + " cm";
                txt2.Text = el.Largura.ToString() + " cm";
                txt3.Text = el.QuantidadeArmazem.ToString() + " un.";
                txt4.Text = el.PrecoUnidade.ToString() + " €/un.";
                elasticoComprimento.Visibility = Visibility.Visible;
                elasticoLargura.Visibility     = Visibility.Visible;
                elasticoPreço.Visibility       = Visibility.Visible;
                elasticoQuantidade.Visibility  = Visibility.Visible;
            }
            else if (mat.TipoMaterial1.Equals("Fita de Velcro", StringComparison.Ordinal))
            {
                FitaVelcro f = dataHandler.getFitaVelcro(mat.Referencia);
                txt1.Text = f.Comprimento.ToString() + " cm";
                txt2.Text = f.Largura.ToString() + " cm";
                txt3.Text = f.QuantidadeArmazem.ToString() + " un.";
                txt4.Text = f.PrecoUnidade.ToString() + " €/un.";
                velcroComprimento.Visibility = Visibility.Visible;
                velcroLargura.Visibility     = Visibility.Visible;
                velcroPreço.Visibility       = Visibility.Visible;
                velcroQuantidade.Visibility  = Visibility.Visible;
            }

            refFabr.Text  = mat.Referencia.ToString();
            refForn.Text  = mat.ReferenciaFornecedor;
            nifForn.Text  = mat.Fornecedor.NIF_Fornecedor;
            nomeForn.Text = mat.Fornecedor.Nome;
        }
        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            if (IsLoaded)
            {
                nomeProduto.Text = prodPers.ProdutoBase.Nome.ToString();
                //obter os materiais necessários para o produto
                int quantProd = Convert.ToInt32(quantidade.Text);
                mtProd = dataHandler.materiaisProduto((int)prodPers.ProdutoBase.Referencia, prodPers.Tamanho, (int)prodPers.ID, quantProd);
                ObservableCollection <MaterialTextil> materiaisProd = new ObservableCollection <MaterialTextil>();
                String s = "";

                foreach (MaterialTextil mt in mtProd)
                {   //passar as funçoes pra sql
                    s = dataHandler.getMaterialType(mt.Referencia);
                    if (s.Equals("Pano", StringComparison.Ordinal))
                    {
                        Pano p = dataHandler.getPano(mt.Referencia);
                        mt.QuantidadeStock  = p.AreaArmazem + " m^2";
                        mt.QuantidadeStockD = p.AreaArmazem;
                        //passar para a observable collection que tem todos os detalhes do material o double da
                        //quantidade necessária para o produzir
                        p.QuantidadeNecessaria = Convert.ToDouble(mt.QuantidadeSelecionada);
                        materiaisProd.Add(p);
                        //acrescentar as unidades na variavel que vai ser usada para o bind
                        mt.QuantidadeSelecionada = mt.QuantidadeSelecionada + " m^2";
                    }
                    else if (s.Equals("Linha", StringComparison.Ordinal))
                    {
                        Linha l = dataHandler.getLinha(mt.Referencia);
                        mt.QuantidadeStock  = l.ComprimentoStock + " m";
                        mt.QuantidadeStockD = l.ComprimentoStock;
                        //passar para a observable collection que tem todos os detalhes do material o double da
                        //quantidade necessária para o produzir
                        l.QuantidadeNecessaria = Convert.ToDouble(mt.QuantidadeSelecionada);
                        materiaisProd.Add(l);
                        //acrescentar as unidades na variavel que vai ser usada para o bind
                        mt.QuantidadeSelecionada = mt.QuantidadeSelecionada + " m";
                    }
                    else if (s.Equals("Fecho", StringComparison.Ordinal))
                    {
                        Fecho f = dataHandler.getFecho(mt.Referencia);
                        mt.QuantidadeStock  = f.QuantidadeArmazem + " un.";
                        mt.QuantidadeStockD = f.QuantidadeArmazem;
                        //passar para a observable collection que tem todos os detalhes do material o double da
                        //quantidade necessária para o produzir
                        f.QuantidadeNecessaria = Convert.ToInt32(mt.QuantidadeSelecionada);
                        materiaisProd.Add(f);
                        //acrescentar as unidades na variavel que vai ser usada para o bind
                        mt.QuantidadeSelecionada = mt.QuantidadeSelecionada + " un.";
                    }
                    else if (s.Equals("Mola", StringComparison.Ordinal))
                    {
                        Mola m = dataHandler.getMola(mt.Referencia);
                        mt.QuantidadeStock  = m.QuantidadeArmazem + " un.";
                        mt.QuantidadeStockD = m.QuantidadeArmazem;
                        //passar para a observable collection que tem todos os detalhes do material o double da
                        //quantidade necessária para o produzir
                        m.QuantidadeNecessaria = Convert.ToInt32(mt.QuantidadeSelecionada);
                        materiaisProd.Add(m);
                        //acrescentar as unidades na variavel que vai ser usada para o bind
                        mt.QuantidadeSelecionada = mt.QuantidadeSelecionada + " un.";
                    }
                    else if (s.Equals("Botão", StringComparison.Ordinal))
                    {
                        Botao b = dataHandler.getBotao(mt.Referencia);
                        mt.QuantidadeStock  = b.QuantidadeArmazem + " un.";
                        mt.QuantidadeStockD = b.QuantidadeArmazem;
                        //passar para a observable collection que tem todos os detalhes do material o double da
                        //quantidade necessária para o produzir
                        b.QuantidadeNecessaria = Convert.ToInt32(mt.QuantidadeSelecionada);
                        materiaisProd.Add(b);
                        //acrescentar as unidades na variavel que vai ser usada para o bind
                        mt.QuantidadeSelecionada = mt.QuantidadeSelecionada + " un.";
                    }
                    else if (s.Equals("Elástico", StringComparison.Ordinal))
                    {
                        Elastico el = dataHandler.getElastico(mt.Referencia);
                        mt.QuantidadeStock  = el.QuantidadeArmazem + " un.";
                        mt.QuantidadeStockD = el.QuantidadeArmazem;
                        //passar para a observable collection que tem todos os detalhes do material o double da
                        //quantidade necessária para o produzir
                        el.QuantidadeNecessaria = Convert.ToInt32(mt.QuantidadeSelecionada);
                        materiaisProd.Add(el);
                        //acrescentar as unidades na variavel que vai ser usada para o bind
                        mt.QuantidadeSelecionada = mt.QuantidadeSelecionada + " un.";
                    }
                    else if (s.Equals("Fita de Velcro", StringComparison.Ordinal))
                    {
                        FitaVelcro fv = dataHandler.getFitaVelcro(mt.Referencia);
                        mt.QuantidadeStock  = fv.QuantidadeArmazem + " un.";
                        mt.QuantidadeStockD = fv.QuantidadeArmazem;
                        //passar para a observable collection que tem todos os detalhes do material o double da
                        //quantidade necessária para o produzir
                        fv.QuantidadeNecessaria = Convert.ToInt32(mt.QuantidadeSelecionada);
                        materiaisProd.Add(fv);
                        //acrescentar as unidades na variavel que vai ser usada para o bind
                        mt.QuantidadeSelecionada = mt.QuantidadeSelecionada + " un.";
                    }
                }
                DGproduçao.ItemsSource = mtProd;
            }
        }
        private void confirmar_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                validarInput();
            }
            catch (Exception ex)
            {
                Xceed.Wpf.Toolkit.MessageBox.Show(ex.Message, "ERRO", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            MaterialTextil material = null;

            if (((ComboBoxItem)tipoMaterial.SelectedItem).Name.Equals("Pano"))
            {
                material            = new Pano();
                material.Fornecedor = new Fornecedor();
                material.Cor        = corMaterial.SelectedColorText;
                material.Designacao = txtDescriçãoMaterial.Text;
                material.Fornecedor.NIF_Fornecedor  = txtFornecedorNif.Text;
                material.ReferenciaFornecedor       = txtReferenciaFornecedor.Text;
                ((Pano)material).Gramagem           = (int)txtGramagem.Value;
                ((Pano)material).PrecoMetroQuadrado = (Double)txtPreçoM2.Value;
                ((Pano)material).Tipo = txtTipoPano.Text;
            }
            else if (((ComboBoxItem)tipoMaterial.SelectedItem).Name.Equals("Linha"))
            {
                material            = new Linha();
                material.Fornecedor = new Fornecedor();
                material.Cor        = corMaterial.SelectedColor.ToString();
                material.Designacao = txtDescriçãoMaterial.Text;
                material.Fornecedor.NIF_Fornecedor = txtFornecedorNif.Text;
                material.ReferenciaFornecedor      = txtReferenciaFornecedor.Text;
                ((Linha)material).Preco100Metros   = Convert.ToDouble(txtPreço100M.Text);
                ((Linha)material).Grossura         = Convert.ToDouble(txtGrossura.Text);
            }
            else if (((ComboBoxItem)tipoMaterial.SelectedItem).Name.Equals("Acessorios"))
            {
                if (((ComboBoxItem)acessorios.SelectedItem).Name.Equals("Fecho"))
                {
                    material            = new Fecho();
                    material.Fornecedor = new Fornecedor();
                    material.Cor        = corMaterial.SelectedColor.ToString();
                    material.Designacao = txtDescriçãoMaterial.Text;
                    material.Fornecedor.NIF_Fornecedor = txtFornecedorNif.Text;
                    material.ReferenciaFornecedor      = txtReferenciaFornecedor.Text;
                    ((Fecho)material).TamanhoDente     = Convert.ToDouble(txtTamanhoDente.Text);
                    ((Fecho)material).Largura          = Convert.ToDouble(txtLarguraFecho.Text);
                    ((Fecho)material).Comprimento      = Convert.ToDouble(txtComprimentoFecho.Text);
                    ((Fecho)material).PrecoUnidade     = Convert.ToDouble(txtPrecoUnidadeFecho.Text);
                    Console.WriteLine(((Fecho)material).PrecoUnidade);
                }
                else if (((ComboBoxItem)acessorios.SelectedItem).Name.Equals("Mola"))
                {
                    material            = new Mola();
                    material.Fornecedor = new Fornecedor();
                    material.Cor        = corMaterial.SelectedColor.ToString();
                    material.Designacao = txtDescriçãoMaterial.Text;
                    material.Fornecedor.NIF_Fornecedor = txtFornecedorNif.Text;
                    material.ReferenciaFornecedor      = txtReferenciaFornecedor.Text;
                    ((Mola)material).Diametro          = Convert.ToDouble(txtDiametroMola.Text);
                    ((Mola)material).PrecoUnidade      = Convert.ToDouble(txtPrecoUnidadeMola.Text);
                }
                else if (((ComboBoxItem)acessorios.SelectedItem).Name.Equals("Botao"))
                {
                    material            = new Botao();
                    material.Fornecedor = new Fornecedor();
                    material.Cor        = corMaterial.SelectedColor.ToString();
                    material.Designacao = txtDescriçãoMaterial.Text;
                    material.Fornecedor.NIF_Fornecedor = txtFornecedorNif.Text;
                    material.ReferenciaFornecedor      = txtReferenciaFornecedor.Text;
                    ((Botao)material).Diametro         = Convert.ToDouble(txtDiametroBotao.Text);
                    ((Botao)material).PrecoUnidade     = Convert.ToDouble(txtPrecoUnidadeBotao.Text);
                }
                else if (((ComboBoxItem)acessorios.SelectedItem).Name.Equals("FitaVelcro"))
                {
                    material            = new FitaVelcro();
                    material.Fornecedor = new Fornecedor();
                    material.Cor        = corMaterial.SelectedColor.ToString();
                    material.Designacao = txtDescriçãoMaterial.Text;
                    material.Fornecedor.NIF_Fornecedor  = txtFornecedorNif.Text;
                    material.ReferenciaFornecedor       = txtReferenciaFornecedor.Text;
                    ((FitaVelcro)material).Largura      = Convert.ToDouble(txtLarguraFita.Text);
                    ((FitaVelcro)material).Comprimento  = Convert.ToDouble(txtComprimentoFita.Text);
                    ((FitaVelcro)material).PrecoUnidade = Convert.ToDouble(txtPrecoUnidadeFita.Text);
                }
                else if (((ComboBoxItem)acessorios.SelectedItem).Name.Equals("Elastico"))
                {
                    material            = new Elastico();
                    material.Fornecedor = new Fornecedor();
                    material.Cor        = corMaterial.SelectedColor.ToString();
                    material.Designacao = txtDescriçãoMaterial.Text;
                    material.Fornecedor.NIF_Fornecedor = txtFornecedorNif.Text;
                    material.ReferenciaFornecedor      = txtReferenciaFornecedor.Text;
                    ((Elastico)material).Largura       = Convert.ToDouble(txtLarguraFita.Text);
                    ((Elastico)material).Comprimento   = Convert.ToDouble(txtComprimentoFita.Text);
                    ((Elastico)material).PrecoUnidade  = Convert.ToDouble(txtPrecoUnidadeElastico.Text);
                }
                else if (((ComboBoxItem)acessorios.SelectedItem).Name.Equals("Outro"))
                {
                    material            = new AcessoriosCostura();
                    material.Fornecedor = new Fornecedor();
                    material.Cor        = corMaterial.SelectedColor.ToString();
                    material.Designacao = txtDescriçãoMaterial.Text;
                    material.Fornecedor.NIF_Fornecedor         = txtFornecedorNif.Text;
                    material.ReferenciaFornecedor              = txtReferenciaFornecedor.Text;
                    ((AcessoriosCostura)material).PrecoUnidade = Convert.ToDouble(txtPrecoUnidade.Text);
                }
            }

            try
            {
                dataHandler.inserirMaterial(material);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
            Xceed.Wpf.Toolkit.MessageBox.Show("Material adicionado á base de dados.", "Operação Concluida", MessageBoxButton.OK, MessageBoxImage.Information);
            this.NavigationService.GoBack();
        }