private BrokerageAccount UpdateAccount(string acctNumber)
        {
            //Force update of security values
            ISecurityRepository securityRepo = new SecurityRepository();

            securityRepo.UpdateSecurities();

            BrokerageAccount acct = null;

            acct = DataContext.BrokerageAccounts
                   .Include("Orders")
                   .Include("WatchList")
                   .Include("WatchList.Securities")
                   .Include("Positions")
                   .Include("Positions.Security")
                   .Where(ba => ba.AccountNumber == acctNumber).SingleOrDefault();

            if (acct != null && acct.Positions != null && !_LocalDataOnly)
            {
                acct.Positions = acct.Positions.OrderBy(p => p.Total).ToList();

                //Get account position securities
                var securities = acct.Positions.Select(p => p.Security).Distinct().ToList();

                var positions = acct.Positions;
                foreach (var pos in positions)
                {
                    pos.Total = pos.Shares * pos.Security.Last;
                    DataContext.Entry(pos).State = System.Data.EntityState.Modified;
                }
                acct.PositionsTotal = acct.Positions.Sum(p => p.Total);
                acct.Total          = acct.PositionsTotal + acct.CashTotal;

                DataContext.Entry(acct).State = System.Data.EntityState.Modified;

                try
                {
                    DataContext.SaveChanges();
                }
                catch
                {
                    //If we fail simply continue for sample app
                }
            }

            return(acct);
        }
        internal static void Initialize(AccountAtAGlanceContext context)
        {
            //var customer = new Customer()
            //{
            //    FirstName = "Marcus",
            //    LastName = "Hightower",
            //    Address = "1234 Anywhere St.",
            //    City = "Phoenix",
            //    State = "AZ",
            //    Zip = 85229,
            //    CustomerCode = "C15643"
            //};
            //var ba = new BrokerageAccount()
            //{
            //    AccountNumber = "Z485739881",
            //    AccountTitle = "Joint Brokerage",
            //    Total = 1369265.00M,
            //    MarginBalance = 414888.67M,
            //    IsRetirement = false,
            //    CashTotal = 10000.00M,
            //    PositionsTotal = 1359265.00M,
            //    WatchList = new WatchList { Title = "My Watch Securities" }
            //};
            //customer.BrokerageAccounts.Add(ba);
            //context.Customers.Add(customer);

            //var exchange = new Exchange
            //{
            //    Title = "NYSE"
            //};

            //var stock = new Stock
            //{
            //    Change = 2.5M,
            //    PercentChange = 5.00M,
            //    Last = 32.10M,
            //    Shares = 100000,
            //    Symbol = "MSFT",
            //    RetrievalDateTime = DateTime.Now,
            //    Company = "Microsoft Corporation",
            //    Exchange = exchange,
            //    DayHigh = 33.00M,
            //    DayLow = 32.00M,
            //    Dividend = 0M,
            //    Open = 32.00M,
            //    Volume = 1000000M,
            //    YearHigh = 34.00M,
            //    YearLow = 28.00M,
            //    AverageVolume = 100000M,
            //    MarketCap = 10000000M
            //};

            //context.Stocks.Add(stock);

            context.Database.ExecuteSqlCommand(@"
                    CREATE PROCEDURE dbo.DeleteSecuritiesAndExchanges

                    AS
	                    BEGIN
	 
	                            BEGIN TRANSACTION
		                    BEGIN TRY
			                    DELETE FROM WatchListSecurity;
			                    DELETE FROM Positions;   
			                    DELETE FROM Securities_Stock;
			                    DELETE FROM Securities_MutualFund;
			                    DELETE FROM Securities;
			                    DELETE FROM Exchanges; 
			                    DELETE FROM MarketIndexes	
			                    COMMIT TRANSACTION
			                    SELECT 0				
		                    END TRY
		                    BEGIN CATCH
			                    ROLLBACK TRANSACTION
			                    SELECT -1		
		                    END CATCH
	
	                    END
            ");

            context.Database.ExecuteSqlCommand(@"
                CREATE PROCEDURE dbo.DeleteAccounts

                AS
	                BEGIN

		                BEGIN TRANSACTION
			                BEGIN TRY
				                DELETE FROM Orders;                                              
				                DELETE FROM BrokerageAccounts; 
				                DELETE FROM WatchLists;  
				                DELETE FROM Customers						
				                COMMIT TRANSACTION
				                SELECT 0				
			                END TRY
			                BEGIN CATCH
				                ROLLBACK TRANSACTION
				                SELECT -1		
			                END CATCH
	                END	
	        "    );


            IStockEngine engine   = new StockEngine();
            var          sr       = new SecurityRepository(engine);
            var          opStatus = sr.InsertSecurityData();

            if (opStatus.Status)
            {
                var mr = new MarketsAndNewsRepository(engine);
                opStatus = mr.InsertMarketData();

                if (opStatus.Status)
                {
                    var ar = new AccountRepository(engine);
                    opStatus = ar.RefreshAccountsData();
                }
            }
        }