private static void MapDtoToViewModel(BusinessLogic.Service.Contract.Dto.AmericanCenturyBuyDto dto, AmericanCenturyBuyViewModel viewModel)
        {
            //transactionViewModel.Amount = transactionDto.Amount;
            viewModel.AmountInvested = dto.Amount.ToString();
            //transactionViewModel.BhId = transactionDto.BhId.ToString();
            viewModel.BuyPrice = dto.Nav.ToString();
            //transactionViewModel.Company = transactionDto.Company;
            //transactionViewModel.Credit = transactionDto.DebitCredit;
            //transactionViewModel.DividendAmount = transactionDto.DividendAmount.ToString();
            //transactionViewModel.Fee = transactionDto.Fees;
            //transactionViewModel.Id = transactionDto.Id;
            //transactionViewModel.Notes = transactionDto.Notes;
            //transactionViewModel.NumShares = transactionDto.NumberShares.ToString();

            //transactionViewModel.Period = transactionDto.Period;
            viewModel.Shares = dto.Shares.ToString();
            //transactionViewModel.Symbol = transactionDto.Symbol;
            //transactionViewModel.SuspectedType = transactionDto.Transaction;
            viewModel.BuyDate = dto.Date.ToShortDateString();
            //transactionViewModel.TxId = transactionDto.TxId;
            //transactionViewModel.Type = transactionDto.Type;
            //transactionViewModel.Xref = transactionDto.Xref.ToString();
            //transactionViewModel.XXX = transactionDto.XXX;
        }
        private List<AmericanCenturyBuyViewModel> GetTransactions(string ticker = "")
        {
            try
            {
                var totalShares = 0.0;
                var transactions = new List<AmericanCenturyBuyViewModel>();

                var transactionDtos = _americanCenturyService.GetTransactions();

                foreach (var transactionDto in transactionDtos)
                {
                    var transactionViewModel = new AmericanCenturyBuyViewModel();

                    MapDtoToViewModel(transactionDto, transactionViewModel);

                    double numShares = 0;
                    if (Double.TryParse(transactionDto.Shares.ToString(), out numShares))
                    {
                        totalShares += Math.Round(numShares, 4);
                        transactionViewModel.TotalShares = totalShares.ToString();
                    }
                    transactions.Add(transactionViewModel);
                }
                return transactions.OrderByDescending(p => p.BuyDate).ToList();

                //List<BuyAndHoldTransactionViewModel> buyAndHoldTransactions = new List<BuyAndHoldTransactionViewModel>();
                //connectionString = "Data Source=192.168.1.101;Initial Catalog=Invest;Persist Security Info=True;User ID=;Password=;";

                //if (ticker == "zzz")
                //{
                //    sql = "SELECT TOP 500 * FROM BuyAndHoldTransaction";
                //    sql += " WHERE ISNULL(XXX, '') != 'xxx'";
                //    sql += " ORDER BY TransactionDate DESC";
                //}

                //else if (!string.IsNullOrWhiteSpace(ticker))
                //{
                //    sql = "SELECT * FROM BuyAndHoldTransaction";
                //    sql += " WHERE Symbol = '" + ticker + "'";
                //    sql += " ORDER BY TransactionDate ";
                //}
                //else
                //{
                //    sql = "SELECT TOP 500 * FROM BuyAndHoldTransaction";
                //    sql += " WHERE ISNULL(XXX, '') != 'xxx'";
                //    sql += " ORDER BY TransactionDate DESC";
                //}
                //try
                //{
                //    using (SqlConnection cn = new SqlConnection(connectionString))
                //    {
                //        using (SqlCommand cmd = new SqlCommand(sql, cn))
                //        {
                //            var totalShares = 0.0;
                //            cn.Open();
                //            SqlDataReader dr = cmd.ExecuteReader();
                //            while (dr.Read())
                //            {
                //                var transaction = new BuyAndHoldTransactionViewModel();
                //                transaction.Id = Int32.Parse(dr["Id"].ToString());
                //                transaction.BhId = dr["BhId"].ToString();
                //                transaction.TxId = dr["TxId"].ToString();
                //                transaction.Date = (DateTime)dr["TransactionDate"];
                //                transaction.Symbol = dr["Symbol"].ToString();
                //                transaction.Company = dr["Company"].ToString();
                //                transaction.Quantity = dr["Quantity"].ToString();
                //                transaction.Price = dr["Price"].ToString();
                //                transaction.Amount = dr["Amount"].ToString();
                //                transaction.Fee = dr["Fees"].ToString();
                //                transaction.Credit = dr["DebitCredit"].ToString();
                //                transaction.SuspectedType = dr["Transaction"].ToString();
                //                transaction.Type = dr["Type"].ToString();
                //                transaction.Period = dr["Period"].ToString();
                //                transaction.DividendAmount = dr["DividendAmount"].ToString();
                //                transaction.AmtInv = dr["AmountInvested"].ToString();
                //                transaction.NumShares = dr["NumberShares"].ToString();
                //                double numShares = 0;
                //                if (Double.TryParse(dr["NumberShares"].ToString(), out numShares))
                //                {
                //                    totalShares += Math.Round(numShares, 4);
                //                    transaction.TotalShares = totalShares;
                //                }
                //                transaction.BuyPrice = dr["BuyPrice"].ToString();
                //                transaction.XXX = dr["XXX"].ToString();
                //                transaction.Xref = dr["Xref"].ToString();
                //                transaction.Xref2 = dr["Notes"].ToString();
                //                buyAndHoldTransactions.Add(transaction);
                //            }
                //        }
                //    }
                //    return buyAndHoldTransactions.OrderByDescending(p => p.Date).ToList();
            }

               // var model = db.ArtistNews.Take(20);

            catch (Exception ex)
            {
                var w = ex;
                return null;
            }
        }
        private static AmericanCenturyBuysViewModel BuildTransactionObjects(List<Invest.Domain.Models.AmericanCenturyTransaction> transactions, bool seperateReinvest)
        {
            var nav = GetLatestTickersNav("TWCUX");

            var AmericanCenturyTransactions = new AmericanCenturyBuysViewModel { Nav = nav.ToString("C"), SecurityTicker = "TWCUX", SecurityName = "American Century Ultra", Transactions = new List<AmericanCenturyBuyViewModel>() };
            decimal totalInvested = 0;
            decimal totalReinvested = 0;
            decimal totalShares = 0;
            decimal currentValue = 0;
            decimal totalValue = 0;
            decimal gain = 0;
            foreach (var transaction in transactions)
            {
                var shares = transaction.AmericanCenturyBuy.Shares.Value;
                var amountInvested = transaction.AmericanCenturyBuy.Amount.Value;

                if (transaction.AmericanCenturyBuy.TranType == "Buy" || !seperateReinvest)
                {
                    totalInvested += amountInvested;
                }
                else
                {
                    totalReinvested += amountInvested;
                }

                totalShares += shares;
                currentValue = shares * nav;
                totalValue += currentValue;
                gain = currentValue - transaction.AmericanCenturyBuy.Amount.Value;
                var AmericanCenturyTransaction = new AmericanCenturyBuyViewModel();

                AmericanCenturyTransaction.Id = transaction.AmericanCenturyBuy.Id;
                AmericanCenturyTransaction.BuyDate = transaction.AmericanCenturyBuy.Date.ToShortDateString();
                if (transaction.AmericanCenturyBuy.TranType == "Buy" || !seperateReinvest)
                {
                    AmericanCenturyTransaction.AmountInvested = amountInvested.ToString("C");
                }
                else
                {
                    AmericanCenturyTransaction.AmountReinvested = amountInvested.ToString("C");
                }
                AmericanCenturyTransaction.BuyPrice = transaction.AmericanCenturyBuy.Nav.Value.ToString("C");
                AmericanCenturyTransaction.Shares = transaction.AmericanCenturyBuy.Shares.Value.ToString("F3");

                AmericanCenturyTransaction.CurrentValue = currentValue.ToString("C");
                AmericanCenturyTransaction.Gain = gain.ToString("C");
                AmericanCenturyTransaction.TranType = transaction.AmericanCenturyBuy.TranType.ToString();
                AmericanCenturyTransaction.TotalShares = totalShares.ToString("F3");
                AmericanCenturyTransaction.TotalValue = totalValue.ToString("C");

                if (transaction.AmericanCenturySell != null)
                {
                    var sellPrice = transaction.AmericanCenturySell.SellPrice;
                    var proceeds = shares * sellPrice;

                    AmericanCenturyTransaction.SellDate = transaction.AmericanCenturySell.SellDate.Date.ToShortDateString();
                    AmericanCenturyTransaction.SellPrice = transaction.AmericanCenturySell.SellPrice.ToString("C");
                    AmericanCenturyTransaction.Proceeds = proceeds.ToString("C");
                    AmericanCenturyTransaction.Profit = (proceeds - amountInvested).ToString("C");
                    AmericanCenturyTransaction.CurrentValue = null;
                    AmericanCenturyTransaction.Gain = null;
                }

                AmericanCenturyTransactions.Transactions.Add(AmericanCenturyTransaction);
            }
            AmericanCenturyTransactions.TotalInvested = totalInvested.ToString("C");
            AmericanCenturyTransactions.TotalReinvested = totalReinvested.ToString("C");
            AmericanCenturyTransactions.TotalShares = totalShares.ToString("F3");
            AmericanCenturyTransactions.TotalValue = totalValue.ToString("C");
            return AmericanCenturyTransactions;
        }