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); }
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; }