private List <Debt> GetDebts(int profileId)
        {
            var debts = new List <Debt>();

            using (var conn = DataAccess.EstablishConnection())
            {
                var cmd = conn.CreateCommand();
                try
                {
                    cmd.CommandText = "SELECT DebtID, Dbt_Name, Dbt_Principal, Dbt_LastUpdateDate, Dbt_InterestType, Dbt_NumberOfTimesApplied, Dbt_AnnualPercentageRate, RecordBy, RecordDate FROM tblDebts WHERE ProfileID = @ProfileID";
                    cmd.Parameters.AddWithValue("@ProfileID", profileId);

                    if (conn.State == ConnectionState.Closed)
                    {
                        conn.Open();
                    }

                    var read = cmd.ExecuteReader();

                    while (read.Read())
                    {
                        var debt = new Debt()
                        {
                            ID = read.GetInt32(0), ProfileID = profileId, Name = read.GetString(1), Principal = read.GetDouble(2), LastUpdateDate = DateTime.Parse(read.GetString(3)), InterestType = (InterestType)read.GetInt32(4), TimesApplied = (CompoundNumberApplied)read.GetInt32(5), AnnualPercentageRate = read.GetDouble(6), RecordBy = read.GetString(7), RecordDate = DateTime.Parse(read.GetString(8))
                        };

                        debts.Add(debt);
                    }
                    read.Close();
                }
                finally { conn.Close(); cmd.Dispose(); }
            }

            return(debts);
        }
Пример #2
0
        public DebtOverviewTable(Debt debt)
        {
            DebtID = debt.ID;

            var list = new List <DebtOverviewItem>();

            var earliestDate = debt.GetEarliestDate();

            var dateRange = debt.CalculateDateRange();

            for (int i = 0; i <= dateRange; i++)
            {
                var date = earliestDate.AddDays(i);

                var dateIncreases = debt.GetDebtIncreasesForDate(date);
                var datePayments  = debt.GetDebtPaymentsForDate(date);

                var paymentsCount  = 0;
                var increasesCount = 0;

                for (int j = 0; j < dateIncreases.Count && j < datePayments.Count; j++)
                {
                    var item = new DebtOverviewItem(DebtID)
                    {
                        Date      = date,
                        Principal = AdjustPrincipal(list, debt.Principal),

                        IncreaseAmount = dateIncreases[j].Amount,
                        IncreaseType   = dateIncreases[j].IncreaseType,

                        PaymentMade = datePayments[j].Amount
                    };

                    paymentsCount++;
                    increasesCount++;

                    list.Add(item);
                }

                if (dateIncreases.Count > datePayments.Count)
                {
                    for (int j = datePayments.Count; j < dateIncreases.Count; j++)
                    {
                        var item = new DebtOverviewItem(DebtID)
                        {
                            Date      = date,
                            Principal = AdjustPrincipal(list, debt.Principal),

                            IncreaseAmount = dateIncreases[j].Amount,
                            IncreaseType   = dateIncreases[j].IncreaseType
                        };

                        list.Add(item);
                    }
                }
                else if (datePayments.Count > dateIncreases.Count)
                {
                    for (int j = dateIncreases.Count; j < datePayments.Count; j++)
                    {
                        var item = new DebtOverviewItem(DebtID)
                        {
                            Date      = date,
                            Principal = AdjustPrincipal(list, debt.Principal),

                            PaymentMade = datePayments[j].Amount
                        };

                        list.Add(item);
                    }
                }

                if (dateIncreases.Count == 0 && datePayments.Count == 0)
                {
                    var item = new DebtOverviewItem(DebtID)
                    {
                        Principal = AdjustPrincipal(list, debt.Principal),
                        Date      = date
                    };

                    list.Add(item);
                }
            }

            var finalItem = new DebtOverviewItem(DebtID)
            {
                Principal = AdjustPrincipal(list, debt.Principal),
                Date      = DateTime.Now
            };

            list.Add(finalItem);

            //Reverse Order
            var reversed = new List <DebtOverviewItem>();

            for (int i = list.Count - 1; i >= 0; i--)
            {
                reversed.Add(list[i].Transfer());
            }

            _items = reversed;
        }