コード例 #1
0
        private void AddColleague()
        {
            string name = CommandLine.AddColleague();

            // Verifies that the name is not an empty string.
            if (name.Equals(String.Empty))
            {
                CommandLine.NameIsEmpty();
                return;
            }
            IAccount account = null;

            account = AccountManager.AccountList.Find(s => s.Name.Equals(name));
            // Verifies that the colleague does not exist already.
            if (account != null)
            {
                CommandLine.ColleagueExistsAlready(name);
                return;
            }
            // Creates a new account and adds it to the account-manager.
            account = new AccountImplementation(name);
            AccountManager.AddAccount(account);
            CommandLine.AccountSuccess(name);
        }
        public AccountManager Load(string path, AccountManager accountManager, IValidator validator)
        {
            List <string[]> lineList = File.ReadLines(path).Select(line => line.Split('\t')).ToList();

            // Drops the header/first line from the file
            lineList.RemoveAt(0);
            IAccount account;

            foreach (string[] line in lineList)
            {
                // Makes sure every line consists of 4 parts
                if (line.Length != 4)
                {
                    throw new FormatException();
                }
                string name       = line[0];
                string dateString = line[1];
                string amount     = line[2];
                string purpose    = line[3];
                account = null;

                // Verifies the name.
                if (name.Equals(String.Empty) || name.Length > 20)
                {
                    throw new FormatException("The name of a colleague has to have at least one and a maximum of 20 characters.");
                }

                // Checks if account exists already.
                account = accountManager.AccountList.Find(s => s.Name.Equals(name));
                if (account == null)
                {
                    // Adds the account if it does not exist yet.
                    account = new AccountImplementation(name);
                    accountManager.AddAccount(account);
                }

                // Verifies the date.
                if (!validator.DateCheck(dateString))
                {
                    throw new FormatException("Dates have to be in the format dd.MM.yyyy to be loaded.");
                }
                DateTime date = Convert.ToDateTime(dateString);

                // Verifies the amount.
                if (!validator.MoneyCheck(amount))
                {
                    throw new FormatException("The values of transactions can only have two decimal places.");
                }
                decimal value = Convert.ToDecimal(amount);

                // Verifies the purpose.
                if (purpose.Length > 30)
                {
                    throw new FormatException("A purpose cannot exceed the maximum of 30 characters.");
                }

                // Adds the transaction
                ITransaction transaction = new TransactionImplementation(value, date, purpose);
                account.AddTransaction(transaction);
            }

            return(accountManager);
        }