/// <summary> /// Used to request rebates /// </summary> public void Rebate() { bool valid = false; int ID = 0; while (!valid) { Console.Write("Enter the Sales ID: "); valid = int.TryParse(Console.ReadLine(), out ID); } Console.Write("\nEnter the date(MM/DD): "); DateTime date = new DateTime(); bool successfulDate = false; while (!successfulDate) { try { date = Convert.ToDateTime(Console.ReadLine()); successfulDate = true; } catch (Exception err) { Console.WriteLine("Enter a valid date."); } } bool rebateBool = false; while (!rebateBool) { try { _hER(ID, date); rebateBool = true; } catch (Exception ex) { Console.WriteLine("\nEnter valid ID: "); int.TryParse(Console.ReadLine(), out ID); } } if (_rm.GetCurrentState() != RebateModelState.RebateEnterError) { Console.Write("\nSales ID\tTotal\tRebate Amount\n"); List <Sale> rebates = _rm.GetUngeneratedRebates(); foreach (Sale s in rebates) { double total = s.Total(); Console.Write("\n{0}\t\t{1}\t\t{2}", s.ID, total.ToString("C"), s.RebateAmount.ToString("C")); } Console.WriteLine("\nRebates requested."); } else { Console.WriteLine("There was an error. {0}", _rm.Error); } }
/// <summary> /// Update's the output view according to the current state. /// </summary> public void update() { RebateModelState state = _rebateModel.GetCurrentState(); switch (state) { case RebateModelState.Initial: uxRebateList.Items.Clear(); uxRebateCheckList.Items.Clear(); break; case RebateModelState.RebateGenerated: List <Sale> rebates = _rebateModel.GetUngeneratedRebates(); uxRebateList.Items.Clear(); foreach (Sale sale in rebates) { uxRebateList.Items.Add(new ListViewItem(new[] { sale.ID.ToString(), String.Format("{0:c}", sale.Total()), String.Format("{0:c}", sale.RebateAmount) })); } break; case RebateModelState.RebateChecksGenerated: MessageBox.Show("Rebate checks generated and sent", "Success"); uxRebateList.Items.Clear(); uxRebateCheckList.Items.Clear(); foreach (Sale sale in _rebateModel.GetGeneratedRebates()) { uxRebateCheckList.Items.Add(new ListViewItem(new[] { sale.ID.ToString(), String.Format("{0:c}", sale.Total()), String.Format("{0:c}", sale.RebateAmount) })); } break; case RebateModelState.RebateEnterError: MessageBox.Show(_rebateModel.Error); _rebateModel.State = RebateModelState.Initial; update(); break; } }