/*! * \brief Remove the selected ticket (if any) from the lottery. * * If no ticket is selected, the function does nothing besides showing an error message. * If removing the selected ticket leaves the list empty, the add-comment button * and delete-ticket button are disabled. */ private void BtnRemoveTicket_Click(object sender, RoutedEventArgs e) { if (!HasTicketSelected()) { return; } var ticket = (Ticket)LwTickets.SelectedItem; if (WndDialogMessage.Show(this, "Do you want to delete this ticket?\n\nLottery number: " + ticket.LotteryNumber, "Confirm Delete", MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes) { return; } CurrentLottery.RemoveTicket(ticket); LwTickets.Items.Remove(ticket); var oldPrice = int.Parse(TxtPrize.Text); TxtPrize.Text = "" + (oldPrice - ticket.Price); if (LwTickets.Items.Count < 1) { BtnAddComment.IsEnabled = false; BtnRemoveTicket.IsEnabled = false; } }
//! Discards the tickets on the window closing if member DiscardTicketsOnClose is true. private void NewTicketsWindow_OnClosing(object sender, CancelEventArgs e) { if (DiscardTicketsOnClose) { foreach (Ticket ticket in LwTickets.Items) { CurrentLottery.RemoveTicket(ticket); } } if (Owner != null) { Owner.IsEnabled = true; } }
//! Attempt to add a new ticket, either with a random or specific lottery number. private void BtnAddTicket_Click(object sender, RoutedEventArgs e) { int actualLotteryNumber; if (BuyRandomLotteryNumber) { actualLotteryNumber = CurrentLottery.BuyLotteryNumber(TxtOwner.Text); // Makes sure that there was a ticket left to buy. if (actualLotteryNumber == Lottery.InvalidLotteryNumber) { WndDialogMessage.Show(this, "No more tickets available.", "No tickets left", MessageBoxButton.OK, MessageBoxImage.Information); return; } } else { if (string.IsNullOrEmpty(TxtSpecificLotteryNumber.Text)) { WndDialogMessage.Show(this, "No lottery number given.\nIf you want a random one, check the random box.", "Missing Number", MessageBoxButton.OK, MessageBoxImage.Information); return; } var userLotteryNumber = int.Parse(TxtSpecificLotteryNumber.Text); var result = CurrentLottery.BuyLotteryNumber(userLotteryNumber, TxtOwner.Text); switch (result) { case LotteryNumberSaleResult.Success: actualLotteryNumber = userLotteryNumber; break; case LotteryNumberSaleResult.NumberAlreadySold: WndDialogMessage.Show(this, "The number has already been sold.", "Number Unavailable", MessageBoxButton.OK, MessageBoxImage.Information); return; case LotteryNumberSaleResult.NumberOutOfRange: var msg = "The number is not in the alllowed range: " + Lottery.LotteryNumberMin + " - " + CurrentLottery.LotteryNumberMax + "."; WndDialogMessage.Show(this, msg, "Invalid Number", MessageBoxButton.OK, MessageBoxImage.Information); return; default: WndDialogMessage.Show(this, "An unspecified error occured.", "Unspecified Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } } // Add to list and update the tottal price. var ticket = CurrentLottery.Tickets.Find(T => T.LotteryNumber == actualLotteryNumber); LwTickets.Items.Add(ticket); LwTickets.ScrollIntoView(ticket); var oldPrice = int.Parse(TxtPrize.Text); TxtPrize.Text = "" + (oldPrice + ticket.Price); // Enabled the buttons for the list of tickets. BtnAddComment.IsEnabled = true; BtnRemoveTicket.IsEnabled = true; }