/// <summary> /// Berechnet das Tanken. Wieviel Liter Treibstoff bezogen wird und wie teuer es ist /// </summary> /// <param name="source"></param> /// <param name="e"></param> public void Refuel(Object source, ElapsedEventArgs e) { try { Tank tank = _activeTap.Fuel.TankList.First(t => t.VolumeLiter >= 0.25); if (tank != null) { tank.VolumeLiter = tank.VolumeLiter - 0.25f; } else { StopRefuel(); MessageService.AddWarningMessage("Zu wenig Treibstoff", "Es ist zu wenig Treibstoff vorhanden, um weiter zu tanken können. Gehen Sie bitte an die Kasse und zahlen Sie das bereits getankte."); return; } } catch (Exception ex) { StopRefuel(); MessageService.AddErrorMessage("Fehler", ex.Message); return; } Liter = Liter + 0.25; ToPayValue = Convert.ToDecimal(Liter) * ActiveTap.Fuel.PricePerLiter; }
/// <summary> /// Fügt dem Coin Container eine Münze hinzu /// </summary> /// <param name="coin">Münze welche dem CoinContainer hinzugefügt werden soll</param> public void AddCoin(Coin coin) { for (int i = 0; i < 200; i++) { if (_coins[i] == null) { try { _coins[i] = coin; break; } catch (IndexOutOfRangeException ex) { MessageService.AddWarningMessage("Zu viele Münzen/Noten", $"Das Limit für die Noten/Münzen {coin.GetValue()} wurde erreicht. Es können keine weiteren Geldstücken mit diesem Wert eingeworfen werden. Das Geldstück mit dem Wert {coin.GetValue()} wird nicht in der Kasse gespeichert."); } } } _percentFilling = 100.0 / _maximunCoins * _coins.Where(x => x != null).Count(); }
/// <summary> /// Schliesst die Zahlung ab, sofern genug Geld eingeworfen wurde. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void _btnFertig_Click(object sender, RoutedEventArgs e) { GasPump selectedGasPump = (GasPump)GasPumpComboBox.SelectedItem; int[] outputCoins = new int[1]; try { outputCoins = Context.FinishInput(selectedGasPump); if (outputCoins[0] == -1) { _tbxAnzeige.Text += $"\r\nEs wurde noch zu wenig Geld eingeworfen. Es fehlen noch {selectedGasPump.ToPayValue - decimal.Parse(Context.GetValueInput().ToString()) / 100} Franken."; } else { _tbxAnzeige.Text += "\r\nAusgabe:\r\n"; RenderNumberOfCoins(outputCoins); DisableButtons(); IReceipt receipt = Context.CreateReceipt(selectedGasPump); selectedGasPump.ToPayValue = 0; ReceiptDisplay receiptDisplay = new ReceiptDisplay(); receiptDisplay.Context = receipt; receiptDisplay.Show(); } } catch (Exception ex) { if (ex.Message.StartsWith("Es kann leider kein Rückgeld gegeben werden.")) { MessageService.AddWarningMessage("Fehler", $"{ex.Message}\r\n{ex.Source}\r\n{ex.StackTrace}"); } else { MessageService.AddErrorMessage("Fehler", ex.Message); } return; } }
/// <summary> /// Teilt dem Benutzer mit, dass ein CoinContainer den maximalen Füllungsgrad überschritten hat. /// </summary> /// <param name="coin">Münzwert vom überschritenen CoinContainer</param> private void AlertCoinMaximun(int coin) { MessageService.AddWarningMessage("Maximaler Füllungsgrad überschritten", $"Der CoinContainer von der Münzen {coin} hat den maximalen Füllungsgrad überschritten"); }