private void addMaterial_Click(object sender, RoutedEventArgs e)
        {
            MaterialTextil mt = (MaterialTextil)materiaisView.SelectedItem;

            if (txtQuantidadeDec.Visibility == Visibility.Visible)
            {
                if (txtQuantidadeDec.Text == null)
                {
                    MessageBox.Show("Por favor, selecione primeiro a quantidade do material selecionado" +
                                    "necessária para produzir este produto", "", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                else
                {
                    mt.QuantidadeSelecionada = txtQuantidadeDec.Text.ToString();
                }
            }
            else if (txtQuantidadeInt.Visibility == Visibility.Visible)
            {
                if (txtQuantidadeInt.Text == null)
                {
                    MessageBox.Show("Por favor, selecione primeiro a quantidade do material selecionado " +
                                    "necessária para produzir este produto!", "", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                else
                {
                    mt.QuantidadeSelecionada = txtQuantidadeInt.Text.ToString();
                }
            }
            materiaisSelecionados.Add(mt);
            materiaisSelectedView.ItemsSource = materiaisSelecionados;
        }
        private void produtosPers_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            MaterialTextil produtoSelecionado = ((MaterialTextil)materias.SelectedItem);

            if (produtoSelecionado != null)
            {
                DetalhesMaterial window = new DetalhesMaterial(dataHandler, produtoSelecionado);
                window.Show();
            }
        }
        public void removeMaterial_Click(object sender, RoutedEventArgs e)
        {
            MaterialTextil mt = (MaterialTextil)materiaisSelectedView.SelectedItem;

            materiaisSelecionados.Remove(mt);
        }
        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;
                }
            }
        }
 public DetalhesMaterial(DataHandler dataHandler, MaterialTextil material)
 {
     InitializeComponent();
     this.dataHandler = dataHandler;
     this.mat         = material;
 }
        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();
        }