Exemple #1
0
        private void OnAddYard_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                MainWindow main     = this.Owner as MainWindow;
                TimberYard currYard = main.YardSelector.SelectedItem as TimberYard;
                if (currYard == null)
                {
                    throw new NullReferenceException("Error: Yard has null value. Please select a yard.");
                }
                Lot lot = LotParser();
                currYard.AddLot(lot);
                main.AvailabilityListView.Items.Refresh();
                this.Close();
            }
            catch (ArgumentException ar)
            {
                MessageBox.Show(ar.Message);
            }

            catch (NullReferenceException ne)
            {
                MessageBox.Show(ne.Message);
            }
        }
        private void OnToOrder_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                int pieceCount  = int.Parse(this.PiecesTextBox.Text);
                Lot selectedLot = AvailabilityListView.SelectedItem as Lot;
                if (selectedLot == null)
                {
                    throw new ArgumentNullException("Please select a lot from the in-stock list!");
                }
                if (selectedLot != null && pieceCount > selectedLot.Pieces)
                {
                    throw new OrderPiecesException <int>("Pieces cannot be more than are available in the selected lot!", 1, selectedLot.Pieces);
                }
                else if (pieceCount == selectedLot.Pieces)
                {
                    //if all pieces are required, remove the lot
                    int        selectedYardIndex = this.YardSelector.SelectedIndex;
                    TimberYard selectedYard      = this.Firm.GetYard(selectedYardIndex);
                    selectedYard.RemoveLot(selectedLot);
                    this.AvailabilityListView.Items.Refresh();
                    this.Firm.Order.AddLot(selectedLot);
                    this.OrderedListView.Items.Refresh();
                }
                else
                {
                    Lot orderedLot = selectedLot.Clone();
                    orderedLot.Pieces = pieceCount;
                    orderedLot.Price  = Math.Round(((selectedLot.Price / selectedLot.Pieces) * orderedLot.Pieces), 2);
                    this.Firm.Order.AddLot(orderedLot);
                    OrderedListView.Items.Refresh();
                    selectedLot.Price   = (selectedLot.Price / selectedLot.Pieces) * (selectedLot.Pieces - pieceCount);
                    selectedLot.Pieces -= pieceCount;

                    AvailabilityListView.Items.Refresh();
                }
            }
            catch (ArgumentException ar)
            {
                MessageBox.Show(ar.Message);
            }
            catch (OrderPiecesException <int> orEx)
            {
                MessageBox.Show(orEx.Message);
            }
        }