/// <summary>
        /// Fragt die effektive Anzahl von Münzen im Automaten ab.
        /// </summary>
        /// <returns></returns>
        public QuantityCoins GetQuantityCoins()
        {
            var quantityCoins = new QuantityCoins();

            foreach (var oneContainer in containers)
            {
                for (int i = 1; i < oneContainer.CountCoins(); i++)
                {
                    quantityCoins.AddCoinValue(oneContainer.GetCoinsValue());
                }
            }
            return(quantityCoins);
        }
        /// <summary>
        /// Gibt das Rückgeld dem Kunden heraus
        /// </summary>
        /// <param name="outputValue">Betrag, welcher ausbezahlt werden muss</param>
        /// <returns>Die Anzahl von den verschiedenen Münzen, welche ausgegeben werden müssen</returns>
        public QuantityCoins GetChange(int outputValue)
        {
            var outputCoins = new QuantityCoins();

            while (outputValue >= 100000)
            {
                if (containers[12].CountCoins() > 0)
                {
                    outputCoins.AddCoinValue(100000);
                    containers[12].RemoveCoin();
                    if (containers[12].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(100000);
                    }
                    outputValue -= 100000;
                }
                else
                {
                    break;
                }
            }
            while (outputValue >= 20000)
            {
                if (containers[11].CountCoins() > 0)
                {
                    outputCoins.AddCoinValue(20000);
                    containers[11].RemoveCoin();
                    if (containers[11].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(20000);
                    }
                    outputValue -= 20000;
                }
                else
                {
                    break;
                }
            }
            while (outputValue >= 10000)
            {
                if (containers[10].CountCoins() > 0)
                {
                    outputCoins.AddCoinValue(10000);
                    containers[10].RemoveCoin();
                    if (containers[10].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(10000);
                    }
                    outputValue -= 10000;
                }
                else
                {
                    break;
                }
            }
            while (outputValue >= 5000)
            {
                if (containers[9].CountCoins() > 0)
                {
                    outputCoins.AddCoinValue(5000);
                    containers[9].RemoveCoin();
                    if (containers[9].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(5000);
                    }
                    outputValue -= 5000;
                }
                else
                {
                    break;
                }
            }
            while (outputValue >= 2000)
            {
                if (containers[8].CountCoins() > 0)
                {
                    outputCoins.AddCoinValue(2000);
                    containers[8].RemoveCoin();
                    if (containers[8].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(2000);
                    }
                    outputValue -= 2000;
                }
                else
                {
                    break;
                }
            }
            while (outputValue >= 1000)
            {
                if (containers[7].CountCoins() > 0)
                {
                    outputCoins.AddCoinValue(1000);
                    containers[7].RemoveCoin();
                    if (containers[7].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(1000);
                    }
                    outputValue -= 1000;
                }
                else
                {
                    break;
                }
            }
            while (outputValue >= 500)
            {
                if (containers[6].CountCoins() > 0)
                {
                    outputCoins.AddCoinValue(500);
                    containers[6].RemoveCoin();
                    if (containers[6].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(500);
                    }
                    outputValue -= 500;
                }
                else
                {
                    break;
                }
            }
            while (outputValue >= 200)
            {
                if (containers[5].CountCoins() >= 1)
                {
                    outputCoins.AddCoinValue(200);
                    containers[5].RemoveCoin();
                    if (containers[5].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(200);
                    }
                    outputValue -= 200;
                }
                else
                {
                    break;
                }
            }
            while (outputValue >= 100)
            {
                if (containers[4].CountCoins() >= 1)
                {
                    outputCoins.AddCoinValue(100);
                    containers[4].RemoveCoin();
                    if (containers[4].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(100);
                    }
                    outputValue -= 100;
                }
                else
                {
                    break;
                }
            }
            while (outputValue >= 50)
            {
                if (containers[3].CountCoins() >= 1)
                {
                    if (outputValue < 100)
                    {
                        var isOddNumber = false;
                        try
                        {
                            var dividedOutput = outputValue / 2;
                        }
                        catch (Exception)
                        {
                            isOddNumber = true;
                        }
                        if (!isOddNumber)
                        {
                            if (containers[0].CountCoins() <= 0)
                            {
                                break;
                            }
                        }
                    }
                    outputCoins.AddCoinValue(50);
                    containers[3].RemoveCoin();
                    if (containers[3].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(50);
                    }
                    outputValue -= 50;
                }
                else
                {
                    break;
                }
            }
            while (outputValue >= 20)
            {
                if (containers[2].CountCoins() >= 1)
                {
                    outputCoins.AddCoinValue(20);
                    if (containers[2].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(20);
                    }
                    containers[2].RemoveCoin();
                    outputValue -= 20;
                }
                else
                {
                    break;
                }
            }
            while (outputValue >= 10)
            {
                if (containers[1].CountCoins() >= 1)
                {
                    outputCoins.AddCoinValue(10);
                    containers[1].RemoveCoin();
                    if (containers[1].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(10);
                    }
                    outputValue -= 10;
                }
                else
                {
                    break;
                }
            }
            while (outputValue >= 5)
            {
                if (containers[0].CountCoins() >= 1)
                {
                    outputCoins.AddCoinValue(5);
                    containers[0].RemoveCoin();
                    if (containers[0].GetMinPercentFlling())
                    {
                        AlertCoinMinimun(5);
                    }
                    outputValue -= 5;
                }
                else
                {
                    throw new Exception("Es kann leider kein Rückgeld gegeben werden, da die entsprechenden Münzen nicht vorhanden sind. Geben Sie Abbruch ein und Sie erhalten ihr Geld zurück");
                }
            }
            insertCoins = new List <Coin>();
            insertValue = 0;
            return(outputCoins);
        }