예제 #1
0
 private void butPodglad_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         //wstawienie nowych wartości samolotu
         PojemnikSamolot.il_rzedow                  = int.Parse(TextRzedy.Text.ToString());
         PojemnikSamolot.il_siedzen_w_rzedzie       = int.Parse(TextSiedzenia.Text.ToString());
         PojemnikSamolot.szerokosc_buforowa_rzedow  = int.Parse(TextBuforRzedy.Text.ToString());
         PojemnikSamolot.szerokosc_buforowa_siedzen = int.Parse(TextBuforSiedzenia.Text.ToString());
         PojemnikSamolot.max_il_miejsc              = 0;
         if (PojemnikSamolot.il_siedzen_w_rzedzie < 10 || PojemnikSamolot.il_rzedow < 3 || PojemnikSamolot.szerokosc_buforowa_rzedow < 50 || PojemnikSamolot.szerokosc_buforowa_siedzen < 50)
         {
             MessageBox.Show("Z takimi danymi to nie zdziw się, że to będzie wyglądać jak helikopter");
         }
         Samolot okno_samolotu = new Samolot();
         okno_samolotu.Show();
         this.Close();
     }
     catch
     {
         MessageBox.Show("Wybierz jakieś wartości, nie można pozostawić niczego pustego");
     }
 }
        //***********-----------Przechodzenie pomiędzy tabami-----------***********\\
        // przyciski "Dalej"
        private void ButtonNext_Click(object sender, RoutedEventArgs e)
        {
            PojemnikSamolot.newIndex = tcTicket.SelectedIndex + 1;
            // obsługa poszczególnych tabów
            switch (PojemnikSamolot.newIndex)
            {
            case 1:
                tcTicket.SelectedIndex = PojemnikSamolot.newIndex;
                break;

            case 2:
                tcTicket.SelectedIndex = PojemnikSamolot.newIndex;
                // tworzenie nowego Grid'a w zależności od wybranej ilości osób dorosłych i dzieci
                DynamicGrid GridNew = new DynamicGrid();
                //tabSpecificInformation.IsEnabled = true;
                NewGrid.Children.Clear();
                NewGrid.RowDefinitions.Clear();
                NewGrid.ColumnDefinitions.Clear();
                GridNew.MyGrid(NewGrid, HorizontalAlignment.Stretch, VerticalAlignment.Stretch, false, Colors.WhiteSmoke);
                // dynamiczne tworzenie rzędów siatki
                NewGrid.Background         = new SolidColorBrush(Colors.Black);
                NewGrid.Background.Opacity = 0;
                for (int i = 0; i < 2 * (Int16.Parse(tbAdults.Text) + Int16.Parse(tbChildren.Text)) + 1; i++)
                {
                    if (i % 2 != 0)
                    {
                        GridNew.NewRow(NewGrid, 26, GridUnitType.Pixel);
                    }
                    else
                    {
                        GridNew.NewRow(NewGrid, 50, GridUnitType.Pixel);
                    }
                }
                // dynamiczne tworzenie kolumn siatki
                for (int i = 0; i < 5; i++)
                {
                    if (i % 2 != 0)
                    {
                        GridNew.NewColumn(NewGrid, 120, GridUnitType.Pixel);
                    }
                    else
                    {
                        GridNew.NewColumn(NewGrid, 70, GridUnitType.Pixel);
                    }
                }
                int whichPerson = 1;
                int tmp;
                // uzupełnianie pól siatki (odpowiednich rzędów i kolumn) wybranymi obiektami
                for (Int16 i = 1; i < 2 * (Int16.Parse(tbAdults.Text) + Int16.Parse(tbChildren.Text)) + 1; i += 2)
                {
                    tmp = 0;
                    for (Int16 j = 1; j <= 3; j += 2)
                    {
                        if (j == 1)
                        {
                            GridNew.NewLabel(NewGrid, Colors.White, 12, FontWeights.SemiBold, FontStyles.Normal, "Segoe UI", VerticalAlignment.Bottom, HorizontalAlignment.Center, "Pasażer" + whichPerson.ToString(), i, (Int16)(j - 1));
                            GridNew.NewLabel(NewGrid, Colors.White, 12, FontWeights.SemiBold, FontStyles.Normal, "Segoe UI", VerticalAlignment.Bottom, HorizontalAlignment.Left, "Imię:", (Int16)(i - 1), j);
                            PojemnikSamolot.textBox[whichPerson - 1, tmp] = GridNew.NewTextBox(NewGrid, "", 12, FontWeights.SemiBold, FontStyles.Normal, VerticalAlignment.Center, Colors.Black, i, j, true);
                            // zabezpieczenie przed wpisywaniem znaków spoza alfabetu w przypadku podawania imienia pasażera
                            PojemnikSamolot.textBox[whichPerson - 1, tmp].PreviewTextInput += (s, TextCompositionEventArgs) =>
                            {
                                Regex regex = new Regex("[^a-zA-Z]+");
                                TextCompositionEventArgs.Handled = regex.IsMatch(TextCompositionEventArgs.Text);
                            };
                            tmp = 1;
                        }
                        else
                        {
                            GridNew.NewLabel(NewGrid, Colors.White, 12, FontWeights.SemiBold, FontStyles.Normal, "Segoe UI", VerticalAlignment.Bottom, HorizontalAlignment.Left, "Nazwisko:", (Int16)(i - 1), j);
                            PojemnikSamolot.textBox[whichPerson - 1, tmp] = GridNew.NewTextBox(NewGrid, "", 12, FontWeights.SemiBold, FontStyles.Normal, VerticalAlignment.Center, Colors.Black, i, j, true);
                            // zabezpieczenie przed wpisywaniem znaków spoza alfabetu w przypadku podawania nazwiska pasażera
                            PojemnikSamolot.textBox[whichPerson - 1, tmp].PreviewTextInput += (s, TextCompositionEventArgs) =>
                            {
                                Regex regex = new Regex("[^a-zA-Z]+");
                                TextCompositionEventArgs.Handled = regex.IsMatch(TextCompositionEventArgs.Text);
                            };
                        }
                    }
                    whichPerson += 1;
                }
                break;

            case 3:
                bool dalej = true;     // flaga pozwalająca na zabezpieczeniem przed kliknięciem przycisku "Dalej" bez podania imion i nazwisk pasażerów
                for (int i = 0; i < (Int16.Parse(tbAdults.Text) + Int16.Parse(tbChildren.Text)); i++)
                {
                    for (int j = 0; j < 2; j++)
                    {
                        if (PojemnikSamolot.textBox[i, j].Text == "")
                        {
                            dalej = false;
                        }
                    }
                }
                // jeśli wszystkie pola są zapełnione wyświetlany jest widok samolotu
                if (dalej == true)
                {
                    tcTicket.SelectedIndex = PojemnikSamolot.newIndex;

                    //wpisywanie do pojemnika miejsca wylotu i miejsca docelowego
                    PojemnikSamolot.skad  = cBoxFlyFrom.SelectedItem.ToString();
                    PojemnikSamolot.dokad = cboxFlyTo.SelectedItem.ToString();
                    //w zaleznosci od wybranych skad i dokad wybierany jest typ wyświetlanego samolotu
                    try
                    {
                        if (ilosc_pobran > 0)
                        {
                            con.Close();
                            con.Open();
                        }
                        using (MySqlCommand command = new MySqlCommand("SELECT ty.row_no,ty.place_per_row,ty.buffor_row,ty.buffor_place FROM types ty JOIN flyfit ft ON ty.name = ft.name WHERE ft.skad = '" + cBoxFlyFrom.SelectedItem.ToString() + "' AND ft.dokad = '" + cboxFlyTo.SelectedItem.ToString() + "'", con))
                        {
                            MySqlDataReader reader = command.ExecuteReader();
                            while (reader.Read())
                            {
                                PojemnikSamolot.il_rzedow                  = reader.GetInt32(0);
                                PojemnikSamolot.il_siedzen_w_rzedzie       = reader.GetInt32(1);
                                PojemnikSamolot.szerokosc_buforowa_rzedow  = reader.GetInt32(2);
                                PojemnikSamolot.szerokosc_buforowa_siedzen = reader.GetInt32(3);
                                ilosc_pobran += 1;
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Błąd odczytu z bazy" + ex);
                    }
                    con.Close();
                    PojemnikSamolot.max_il_miejsc = (Int16.Parse(tbAdults.Text) + Int16.Parse(tbChildren.Text));
                    Samolot widok_samolot = new Samolot();
                    widok_samolot.DataContext = this;
                    widok_samolot.Show();
                    // w zależności od tego co wybrane zostało w combo boxie tutaj ustawiana jest zmienna
                    if (cBoxClasses.SelectedValue.ToString() == "Premium")
                    {
                        PojemnikSamolot.klasa_samolot = 1;
                    }
                    else
                    {
                        PojemnikSamolot.klasa_samolot = 2;
                    }
                }
                // w przeciwnym wypadku wyświetlany jest komunikat o błędzie
                else
                {
                    MessageBox.Show("Wpisz imiona i nazwiska wszystkich pasażerów");
                }
                break;

            case 4:
                // wypełnianie danych o zakupionym bilecie
                tcTicket.SelectedIndex   = PojemnikSamolot.newIndex;
                butSaveTicket.IsEnabled  = true;    // włączenie możliwości zapisania biletu
                labFlyFrom.Content       = cBoxFlyFrom.SelectedItem.ToString();
                labFlyTo.Content         = cboxFlyTo.SelectedItem.ToString();
                labClass.Content         = cBoxClasses.SelectedItem.ToString();
                numberOfAdults.Content   = tbAdults.Text;
                numberOfChildren.Content = tbChildren.Text;
                numberOfBabies.Content   = tbBabies.Text;
                // przykładowe ceny biletów w klasie zwykłej
                if (cBoxClasses.SelectedItem.ToString() == "Zwykła")
                {
                    adultsCost.Content   = "100";
                    childrenCost.Content = "73";
                    babiesCost.Content   = "20";
                }
                // przykładowe ceny biletów w klasie premium
                else if (cBoxClasses.SelectedItem.ToString() == "Premium")
                {
                    adultsCost.Content   = "150";
                    childrenCost.Content = "110";
                    babiesCost.Content   = "30";
                }
                // zapełnienie elementów treścią w zależności od wybrania typu lotu
                // lot w jedną stronę
                if (rbOneWay.IsChecked == true)
                {
                    labTypeOfTravel.Content    = rbOneWay.Content;
                    labDateOfDeparture.Content = dateOfDeparture.SelectedDate.Value.Date;
                    labDateOfArrival.Content   = "--.--.----";
                    adultsCostSum.Content      = (int.Parse(adultsCost.Content.ToString()) * int.Parse(numberOfAdults.Content.ToString())).ToString();
                    childrenCostSum.Content    = (int.Parse(childrenCost.Content.ToString()) * int.Parse(numberOfChildren.Content.ToString())).ToString();
                    babiesCostSum.Content      = (int.Parse(babiesCost.Content.ToString()) * int.Parse(numberOfBabies.Content.ToString())).ToString();
                }
                // lot w dwie strony
                else if (rbTwoWay.IsChecked == true)
                {
                    labTypeOfTravel.Content    = rbTwoWay.Content;
                    labDateOfDeparture.Content = dateOfDeparture.SelectedDate.Value.Date;
                    labDateOfArrival.Content   = dateOfArrival.SelectedDate.Value.Date;
                    adultsCostSum.Content      = (2 * int.Parse(adultsCost.Content.ToString()) * int.Parse(numberOfAdults.Content.ToString())).ToString();
                    childrenCostSum.Content    = (2 * int.Parse(childrenCost.Content.ToString()) * int.Parse(numberOfChildren.Content.ToString())).ToString();
                    babiesCostSum.Content      = (2 * int.Parse(babiesCost.Content.ToString()) * int.Parse(numberOfBabies.Content.ToString())).ToString();
                }
                Cost.Content = (int.Parse(adultsCostSum.Content.ToString()) + int.Parse(childrenCostSum.Content.ToString()) + int.Parse(babiesCostSum.Content.ToString())).ToString() + " zł";
                // tworzenie dynamicznej siatki w celu wypisania danych pasażerów, oraz wybranych przez nich miejsc
                DynamicGrid SumGrid = new DynamicGrid();
                SummaryGrid.Children.Clear();
                SummaryGrid.RowDefinitions.Clear();
                SummaryGrid.ColumnDefinitions.Clear();
                SumGrid.MyGrid(SummaryGrid, HorizontalAlignment.Stretch, VerticalAlignment.Stretch, false, Colors.WhiteSmoke);
                for (int i = 0; i < 2 * (Int16.Parse(tbAdults.Text) + Int16.Parse(tbChildren.Text)) + 1; i++)
                {
                    if (i % 2 != 0)
                    {
                        SumGrid.NewRow(SummaryGrid, 26, GridUnitType.Pixel);
                        SumGrid.NewRow(SummaryGrid, 26, GridUnitType.Pixel);
                        SumGrid.NewRow(SummaryGrid, 26, GridUnitType.Pixel);
                    }
                    else
                    {
                        SumGrid.NewRow(SummaryGrid, 50, GridUnitType.Pixel);
                    }
                }
                for (int i = 0; i < 5; i++)
                {
                    if (i % 2 != 0)
                    {
                        SumGrid.NewColumn(SummaryGrid, 120, GridUnitType.Pixel);
                    }
                    else
                    {
                        SumGrid.NewColumn(SummaryGrid, 70, GridUnitType.Pixel);
                    }
                }
                whichPerson = 1;
                for (Int16 i = 3; i < 4 * (Int16.Parse(tbAdults.Text) + Int16.Parse(tbChildren.Text)) + 1; i += 4)
                {
                    tmp = 0;
                    for (Int16 j = 1; j <= 3; j += 2)
                    {
                        if (j == 1)
                        {
                            TextBox txtBox = new TextBox();
                            SumGrid.NewLabel(SummaryGrid, Colors.Black, 12, FontWeights.SemiBold, FontStyles.Normal, "Segoe UI", VerticalAlignment.Bottom, HorizontalAlignment.Center, "Pasażer" + whichPerson.ToString(), (Int16)(i - 2), (Int16)(j - 1));
                            SumGrid.NewLabel(SummaryGrid, Colors.Black, 12, FontWeights.SemiBold, FontStyles.Normal, "Segoe UI", VerticalAlignment.Bottom, HorizontalAlignment.Left, "Imię:", (Int16)(i - 3), j);
                            SumGrid.NewLabel(SummaryGrid, Colors.Black, 12, FontWeights.SemiBold, FontStyles.Normal, "Segoe UI", VerticalAlignment.Bottom, HorizontalAlignment.Left, "Rząd:", (Int16)(i - 1), j);
                            txtBox = SumGrid.NewTextBox(SummaryGrid, PojemnikSamolot.textBox[whichPerson - 1, tmp].Text, 12, FontWeights.SemiBold, FontStyles.Normal, VerticalAlignment.Center, Colors.Black, (Int16)(i - 2), j, false);
                            txtBox = SumGrid.NewTextBox(SummaryGrid, PojemnikSamolot.informacja[whichPerson - 1].rzad.ToString(), 12, FontWeights.SemiBold, FontStyles.Normal, VerticalAlignment.Center, Colors.Black, i, j, false);
                            tmp    = 1;
                        }
                        else
                        {
                            TextBox txtBox = new TextBox();
                            SumGrid.NewLabel(SummaryGrid, Colors.Black, 12, FontWeights.SemiBold, FontStyles.Normal, "Segoe UI", VerticalAlignment.Bottom, HorizontalAlignment.Left, "Miejsce:", (Int16)(i - 1), j);
                            SumGrid.NewLabel(SummaryGrid, Colors.Black, 12, FontWeights.SemiBold, FontStyles.Normal, "Segoe UI", VerticalAlignment.Bottom, HorizontalAlignment.Left, "Nazwisko:", (Int16)(i - 3), j);
                            txtBox = SumGrid.NewTextBox(SummaryGrid, PojemnikSamolot.textBox[whichPerson - 1, tmp].Text, 12, FontWeights.SemiBold, FontStyles.Normal, VerticalAlignment.Center, Colors.Black, (Int16)(i - 2), j, false);
                            txtBox = SumGrid.NewTextBox(SummaryGrid, PojemnikSamolot.informacja[whichPerson - 1].miejsce.ToString(), 12, FontWeights.SemiBold, FontStyles.Normal, VerticalAlignment.Center, Colors.Black, i, j, false);
                        }
                    }
                    whichPerson += 1;
                }
                break;
            }
        }