public static void ViewPseudoFunds() { try { using (var db = new PseudoMarketsDbContext()) { Console.WriteLine("==========================================="); Console.WriteLine("PSEUDO FUNDS" + "\n"); var pseudoFunds = db.PseudoFunds.ToList(); foreach (PseudoFunds fund in pseudoFunds) { Console.WriteLine("FUND ID: " + fund.Id); Console.WriteLine("FUND NAME: " + fund.FundName); Console.WriteLine("FUND TICKER: " + fund.FundTicker); Console.WriteLine("FUND DESC: " + fund.FundDescription); Console.WriteLine("FUND INIT INVESTMENT: $" + fund.InitialInvestment); Console.WriteLine("SHARES OUTSTANDING: " + fund.SharesOutstanding); } } Console.WriteLine("==========================================="); Console.WriteLine("Enter to return back to menu..."); Console.ReadKey(); ClientMenu(); } catch (Exception e) { Console.WriteLine(e); throw; } }
public static void UpdateFundNav() { try { using (var db = new PseudoMarketsDbContext()) { Console.WriteLine("==========================================="); Console.WriteLine("MANUALLY UPDATE FUND NAV" + "\n"); Console.Write("ENTER FUND TICKER: "); string fundTicker = Console.ReadLine(); var existingFund = db.PseudoFunds.FirstOrDefault(x => x.FundTicker == fundTicker); int fundId = existingFund.Id; double currentInvestmentValue = 0; if (fundId > 0 && fundId != null) { var securities = db.PseudoFundUnderlyingSecurities.Where(x => x.FundId == fundId).ToList(); foreach (PseudoFundUnderlyingSecurities security in securities) { currentInvestmentValue += GetCurrentSecurityPrice(security.Ticker) * security.Quantity; } } double nav = currentInvestmentValue / existingFund.SharesOutstanding; PseudoFundHistories newHistory = new PseudoFundHistories() { FundId = fundId, CurrentNav = nav, ClosingDate = DateTime.Today }; db.PseudoFundHistories.Add(newHistory); db.SaveChanges(); Console.WriteLine("NAV SUCCESSFULLY UPDATED"); Log.Information("NAV for Fund: " + fundTicker + " updated on " + DateTime.Now); } Console.WriteLine("==========================================="); Console.WriteLine("Enter to return back to menu..."); Console.ReadKey(); ClientMenu(); } catch (Exception e) { Console.WriteLine(e); throw; } }
public static void CreatePseudoFund() { try { using (var db = new PseudoMarketsDbContext()) { Console.WriteLine("==========================================="); Console.WriteLine("CREATE PSEUDO FUND" + "\n"); Console.Write("ENTER FUND NAME: "); string fundName = Console.ReadLine(); Console.Write("ENTER FUND TICKER: "); string fundTicker = Console.ReadLine(); Console.Write("ENTER FUND DESC: "); string fundDesc = Console.ReadLine(); Console.Write("ENTER INITIAL SHARES OUTSTANDING: "); int sharesOutstanding = Int32.Parse(Console.ReadLine()); PseudoFunds newFund = new PseudoFunds() { FundName = fundName, FundDescription = fundDesc, FundTicker = fundTicker, InitialInvestment = 0, SharesOutstanding = sharesOutstanding }; db.PseudoFunds.Add(newFund); db.SaveChanges(); Console.WriteLine("FUND " + fundTicker + " CREATED SUCCESSFULLY"); Log.Information("Created Pseudo Fund with ticker: " + fundTicker + " on " + DateTime.Now); } Console.WriteLine("==========================================="); Console.WriteLine("Enter to return back to menu..."); Console.ReadKey(); ClientMenu(); } catch (Exception e) { Console.WriteLine(e); throw; } }
public static void ViewFundSecurities() { try { using (var db = new PseudoMarketsDbContext()) { Console.WriteLine("==========================================="); Console.WriteLine("VIEW FUND UNDERLYING SECURITIES" + "\n"); Console.Write("ENTER FUND TICKER: "); string ticker = Console.ReadLine(); int fundId = db.PseudoFunds.FirstOrDefault(x => x.FundTicker == ticker).Id; if (fundId > 0) { var securities = db.PseudoFundUnderlyingSecurities.Where(x => x.FundId == fundId).ToList(); foreach (PseudoFundUnderlyingSecurities security in securities) { Console.WriteLine("==========================================="); Console.WriteLine("EQUITY TICKER: " + security.Ticker); Console.WriteLine("QUANTITY: " + security.Quantity); Console.WriteLine("PURCHASE PRICE: $" + security.PurchasePrice); Console.WriteLine("==========================================="); } } else { Console.WriteLine("INVALID FUND TICKER"); } } Console.WriteLine("==========================================="); Console.WriteLine("Enter to return back to menu..."); Console.ReadKey(); ClientMenu(); } catch (Exception e) { Console.WriteLine(e); throw; } }
public static void ViewFundTrades() { try { using (var db = new PseudoMarketsDbContext()) { Console.WriteLine("==========================================="); Console.WriteLine("VIEW FUND TRADES" + "\n"); Console.Write("ENTER FUND TICKER: "); string ticker = Console.ReadLine(); var orders = db.Orders.Where(x => x.Symbol == ticker).ToList(); if (orders != null && orders.Count > 0) { foreach (Orders order in orders) { Console.WriteLine("TYPE: " + order.Type); Console.WriteLine("PRICE: $" + order.Price); Console.WriteLine("QUANTITY: " + order.Quantity); Console.WriteLine("DATE: " + order.Date); Console.WriteLine("TRANSACTION ID: " + order.TransactionID); } } else { Console.WriteLine("INVALID FUND TICKER"); } } Console.WriteLine("==========================================="); Console.WriteLine("Enter to return back to menu..."); Console.ReadKey(); ClientMenu(); } catch (Exception e) { Console.WriteLine(e); throw; } }
public static void ViewFundHistory() { try { using (var db = new PseudoMarketsDbContext()) { Console.WriteLine("==========================================="); Console.WriteLine("VIEW FUND HISTORY" + "\n"); Console.Write("ENTER FUND TICKER: "); string ticker = Console.ReadLine(); int fundId = db.PseudoFunds.FirstOrDefault(x => x.FundTicker == ticker).Id; if (fundId > 0) { var fundHistory = db.PseudoFundHistories.Where(x => x.FundId == fundId).ToList(); foreach (PseudoFundHistories history in fundHistory) { Console.WriteLine("NAV: $" + history.CurrentNav); Console.WriteLine("DATE: " + history.ClosingDate); } } else { Console.WriteLine("INVALID FUND TICKER"); } } Console.WriteLine("==========================================="); Console.WriteLine("Enter to return back to menu..."); Console.ReadKey(); ClientMenu(); } catch (Exception e) { Console.WriteLine(e); throw; } }
public static void UpdateFundSecurities() { try { using (var db = new PseudoMarketsDbContext()) { Console.WriteLine("==========================================="); Console.WriteLine("UPDATE FUND UNDERLYING SECURITIES" + "\n"); Console.Write("ENTER FUND TICKER: "); string fundTicker = Console.ReadLine(); var existingFund = db.PseudoFunds.FirstOrDefault(x => x.FundTicker == fundTicker); var fundId = existingFund.Id; if (existingFund != null && fundId > 0) { Console.Write("ENTER EQUITY TICKER TO ADD: "); string equityTicker = Console.ReadLine(); Console.Write("ENTER QUANTITY: "); int quantity = Int32.Parse(Console.ReadLine()); Console.Write("ENTER ORDER TYPE (BUY/SELL): "); string orderType = Console.ReadLine(); var client = new HttpClient(); var response = client.GetAsync(BASE_URL + "/api/Quotes/SmartQuote/" + equityTicker); var responseString = response.Result.Content.ReadAsStringAsync(); var responseJson = JsonConvert.DeserializeObject <LatestPriceOutput>(responseString.Result); double orderTotal = responseJson.price * quantity; Console.WriteLine("ORDER SUMMARY: " + orderType + " " + quantity + " SHARES OF " + responseJson.symbol + " @ " + responseJson.price + " = $" + orderTotal); Console.Write("EXECUTE (y/n)?: "); string action = Console.ReadLine().ToUpper(); if (action == "Y") { if (orderType.ToUpper() == "BUY") { PseudoFundUnderlyingSecurities newSecurity = new PseudoFundUnderlyingSecurities() { FundId = fundId, PurchasePrice = orderTotal, Quantity = quantity, Ticker = equityTicker }; db.PseudoFundUnderlyingSecurities.Add(newSecurity); existingFund.InitialInvestment += orderTotal; db.Entry(existingFund).State = EntityState.Modified; db.SaveChanges(); } else { var existingSecurity = db.PseudoFundUnderlyingSecurities.FirstOrDefault(x => x.Ticker == equityTicker); if (existingSecurity != null) { double costBasis = existingSecurity.PurchasePrice * existingSecurity.Quantity; double currentValue = orderTotal; double gainOrLoss = currentValue - costBasis; existingSecurity.Quantity -= quantity; existingFund.InitialInvestment += gainOrLoss; db.Entry(existingFund).State = EntityState.Modified; db.Entry(existingSecurity).State = EntityState.Modified; db.SaveChanges(); } else { Console.WriteLine("SECURITY DOES NOT CURRENTLY EXIST IN THIS FUND"); ClientMenu(); } } Console.WriteLine("SUCCESSFULLY UPDATED SECURITIES FOR FUND " + fundTicker); Log.Information("Executed: " + orderType + " " + quantity + " SHARES OF " + responseJson.symbol + " @ " + responseJson.price + " = $" + orderTotal); } else { Console.WriteLine("ORDER CANCELLED"); ClientMenu(); } } else { Console.WriteLine("INVALID FUND TICKER"); ClientMenu(); } Console.WriteLine("FUND " + fundTicker + " CREATED SUCCESSFULLY"); Log.Information("Created Pseudo Fund with ticker: " + fundTicker + " on " + DateTime.Now); } Console.WriteLine("==========================================="); Console.WriteLine("Enter to return back to menu..."); Console.ReadKey(); ClientMenu(); } catch (Exception e) { Console.WriteLine(e); throw; } }