/// <summary> /// Generates a rebate for every sale in our working sale database. /// </summary> public void GenerateRebateChecks() { State = RebateModelState.RebateChecksGenerated; foreach (Sale s in _salesDatabase.AllSales()) { if (s.RebateState == RebateState.Rebate) { s.RebateState = RebateState.Generated; _rebates.Add(s); } } }
/// <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; } }
/// <summary> /// Generates a rebate for the current sale. /// </summary> /// <param name="salesID">The salesID for the current sale</param> /// <param name="date">The entered date.</param> public void GenerateRebate(int salesID, DateTime date) { _currentSale = _salesDatabase.GetSale(salesID); DateTime endJuly = new DateTime(2018, 07, 30); if (DateTime.Compare(date, endJuly) < 0) { Error = "Rebate refunds checks are not generated till the end of July!"; State = RebateModelState.RebateEnterError; return; } if (_currentSale.RebateState == RebateState.Generated) { Error = "Rebate has already been generated."; State = RebateModelState.RebateEnterError; return; } _currentSale.RebateState = RebateState.Rebate; State = RebateModelState.RebateGenerated; _currentSale.RebateAmount = _currentSale.Total() * 0.11; }
/// <summary> /// Consturcts the RebateModel /// </summary> /// <param name="sd">The current in use SalesDatabase</param> public RebateModel(SalesDatabase sd) { _salesDatabase = sd; State = RebateModelState.Initial; _rebates = new List <Sale>(); }