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); } }