Beispiel #1
0
        /// <summary>
        ///  Zahlt die Kredite mit den übergebenen Betrag zurück.
        /// </summary>
        public static void RepayKredit(AktienSimulatorDataSet.AccountRow account, decimal amount)
        {
            //Holt sich alle Kredite
            var kredite = GetKredite(account.Nickname);

            decimal payback = amount;

            foreach (var kredit in kredite)
            {
                if (payback == 0m)
                {
                    break;
                }

                //Fall: Kredit höher als zurückzahlende Menge
                if (kredit.Rest > payback)
                {
                    kredit.Rest -= payback;
                    payback      = 0m;
                }
                else //Fall: Einzelner Kredit kann voll beglichen werden
                {
                    payback    -= kredit.Rest;
                    kredit.Rest = 0m;
                }
            }

            //Zieht die zurückgezahlte Menge von der Bilanz ab
            //Zu hoch gesetzte Rückzahlungsmenge wird nicht abgezogen.
            account.Bilanz -= amount + payback;
        }
Beispiel #2
0
        /// <summary>
        ///  Erhöht die Zinsschulden aller Kredite eines Accounts.
        /// </summary>
        public static void UpdateKreditSchuld(AktienSimulatorDataSet.AccountRow account)
        {
            var kredite = GetKredite(account.Nickname);

            foreach (var kredit in kredite)
            {
                kredit.Rest *= 1 + PROZENTUALE_ZINSEN;
                kredit.Rest  = Math.Round(kredit.Rest, 2);
            }
        }
Beispiel #3
0
        /// <summary>
        ///  Nimmt einen neuen Kredit mit den übegebenen Betrag für einen Account auf.
        /// </summary>
        public static void KreditAufnehmen(AktienSimulatorDataSet.AccountRow account, decimal amount)
        {
            var row = Database.DataSet.Kredit.NewKreditRow();

            row.Account = account.Nickname;
            row.Höhe    = amount;
            row.Rest    = amount;
            Database.DataSet.Kredit.Rows.Add(row);
            account.Bilanz += amount;
        }
Beispiel #4
0
        /// <summary>
        ///  Schüttet die Dividende für alle angegebenen Depots auf der Bilanz eines Accounts aus.
        /// </summary>
        public static void UpdateDividende(AktienSimulatorDataSet.AccountRow account, List <AktienSimulatorDataSet.DepotRow> depots)
        {
            decimal sum = 0m;

            foreach (var depot in depots)
            {
                sum += depot.Anzahl * depot.AktieRow.Kurs * PROZENTUALE_DIVIDENDE / 100;
            }

            account.Bilanz += sum;
        }
        /// <summary>
        ///  Es wird versucht die Aktien mit der angegeben Anzahl zu verkaufen. Der Fehlercode wird zurückgegeben.
        /// </summary>
        public static ErrorCodes.SellAktie SellAktie(AktienSimulatorDataSet.AccountRow account, List <AktienSimulatorDataSet.DepotRow> depots, int aktieID, int anzahl, ref bool newDepotCreated)
        {
            var depot = LogicDepot.GetDepotOrCreate(account.Nickname, depots, aktieID, ref newDepotCreated);

            if (depot.Anzahl >= anzahl)
            {
                var sum = depot.AktieRow.Kurs * anzahl;
                account.Bilanz += sum;
                depot.Anzahl   -= anzahl;

                return(ErrorCodes.SellAktie.NoError);
            }

            return(ErrorCodes.SellAktie.NotEnoughAmount);
        }
        /// <summary>
        ///  Es wird versucht eine Aktie mit der angegebenen Anzahl zu kaufen. Der Fehlercode wird zurückgegeben.
        /// </summary>
        public static ErrorCodes.BuyAktie BuyAktie(AktienSimulatorDataSet.AccountRow account, List <AktienSimulatorDataSet.DepotRow> depots, int aktieID, int anzahl, ref bool newDepotCreated)
        {
            var depot = LogicDepot.GetDepotOrCreate(account.Nickname, depots, aktieID, ref newDepotCreated);

            var sum = depot.AktieRow.Kurs * anzahl;

            if (account.Bilanz >= sum)
            {
                depot.Anzahl   += anzahl;
                account.Bilanz -= sum;
                return(ErrorCodes.BuyAktie.NoError);
            }

            return(ErrorCodes.BuyAktie.NotEnoughMoney);
        }
        /// <summary>
        ///  Macht eine einzelne SQL-Abfrage, um einen Account einzuloggen. Gibt den Account und den Fehlercode zurück.
        /// </summary>
        public static AktienSimulatorDataSet.AccountRow CheckLogIn(string nickname, string password, ref ErrorCodes.Login errorcode)
        {
            OleDbConnection connection = new OleDbConnection(Properties.Settings.Default.AktienSimulatorConnectionString);

            connection.Open();

            //SQL Injection verhindern
            string       queryString = "SELECT * FROM Account WHERE Nickname = @Nickname";
            OleDbCommand command     = new OleDbCommand(queryString, connection);

            command.Parameters.Add("@Nickname", OleDbType.VarChar, 255);
            command.Parameters["@Nickname"].Value = nickname;

            //Account suchen
            var reader = command.ExecuteReader(CommandBehavior.SingleRow);

            if (reader.HasRows)
            {
                reader.Read();
                AktienSimulatorDataSet.AccountRow row = DataSet.Account.NewAccountRow();
                row.Nickname = reader["Nickname"].ToString();
                row.Passwort = reader["Passwort"].ToString();
                row.Bilanz   = Convert.ToDecimal(reader["Bilanz"]);

                //Prüft das Passwort
                if (row.Passwort == password)
                { // Passwort korrekt
                    errorcode = ErrorCodes.Login.NoError;
                    connection.Close();
                    return(row);
                }
                else
                { //Passwort inkorrekt
                    errorcode = ErrorCodes.Login.WrongPassword;
                }
            }
            else
            { //Account wurde nicht gefunden
                errorcode = ErrorCodes.Login.NicknameNotFound;
            }

            connection.Close();
            return(null);
        }
 /// <summary>
 ///  Speichert die notwendigen Tabellen ab.
 /// </summary>
 public static void SaveDatabase(AktienSimulatorDataSet.AccountRow account)
 {
     TableAdapterManager.DepotTableAdapter.Update(DataSet.Depot);
     TableAdapterManager.AccountTableAdapter.Update(account);
     TableAdapterManager.KreditTableAdapter.Update(DataSet.Kredit);
 }