Exemple #1
0
 /// <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;
 }
Exemple #2
0
 /// <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");
 }