public void CreateFromRawData_UnitPrice(string unitPrice, decimal expected, string expectedCurrency) { var asset = PortfolioAsset.CreateFromRawData("iShares 20+ Year Treasury Bond ETF", "10", unitPrice, "6617"); asset.UnitPrice.ShouldBe(expected); asset.Currency.ShouldBe(expectedCurrency); }
public async Task <IActionResult> AddStock(int?id, string tickerinput, string amount) { Portfolio portfolio = await _context.Portfolio.Include(p => p.PortfolioAssets).SingleAsync(p => p.ID == id); List <string> heldTickers = portfolio.PortfolioAssets.Select(p => p.AssetSymbol).ToList(); PortfolioAsset newAsset = new PortfolioAsset { AssetSymbol = tickerinput.ToUpper(), NumberOfAssetOwned = Int32.Parse(amount) }; if (portfolio.PortfolioAssets.Count == 0) { _context.PortfolioAsset.Add(newAsset); portfolio.PortfolioAssets = new List <PortfolioAsset>() { newAsset }; } else if (!heldTickers.Contains(tickerinput)) { portfolio.PortfolioAssets.Add(newAsset); _context.Update(portfolio); } else { PortfolioAsset asset = portfolio.PortfolioAssets.Single(p => p.AssetSymbol == tickerinput); asset.NumberOfAssetOwned += int.Parse(amount); _context.Update(asset); } await _context.SaveChangesAsync(); HttpContext.Session.Remove("selected_port_viewmodel"); return(RedirectToAction("AddStock", new { id = id })); }
static List <PortfolioAsset> Convert(dynamic py_assets) { var assets = new List <PortfolioAsset>(); for (int i = 0; i < py_assets.Length(); i++) { assets.Add(PortfolioAsset.CreateFromRawData((string)py_assets[i].name, (string)py_assets[i].units, (string)py_assets[i].unitPrice, (string)py_assets[i].valueSEK)); } return(assets); }
public void CreateFromRawData_BaseCase() { const string expectedName = "iShares 20+ Year Treasury Bond ETF"; var asset = PortfolioAsset.CreateFromRawData(expectedName, "2", "600 USD", "6617"); asset.Name.ShouldBe(expectedName); asset.Units.ShouldBe(2); asset.UnitPrice.ShouldBe(600); asset.Currency.ShouldBe("USD"); asset.ValueDomesticCurrency.ShouldBe(6617); }
public static PortfolioAssetViewModel FromAsset(PortfolioAsset asset) { return(new PortfolioAssetViewModel { Name = asset.Name, Tag = asset.Tag, ValueDomesticCurrency = asset.ValueDomesticCurrency, GoalAllocation = asset.AllocationGoal?.Allocation ?? 0, GoalLeverage = asset.AllocationGoal?.Leverage ?? 1.0m, }); }
public async Task <IActionResult> DeleteConfirmed(int id) { Portfolio portfolio = await _context.Portfolio.Include(p => p.PortfolioAssets).SingleAsync(m => m.ID == id); foreach (PortfolioAsset asset in portfolio.PortfolioAssets) { PortfolioAsset assetToRemove = _context.PortfolioAsset.Single(p => p.ID == asset.ID); _context.PortfolioAsset.Remove(assetToRemove); } _context.Portfolio.Remove(portfolio); await _context.SaveChangesAsync(); HttpContext.Session.Remove("selected_port_viewmodel"); return(RedirectToAction("Index")); }
public Response <List <PortfolioAsset> > GetPortfolioAssets() { var data = new List <PortfolioAsset>(); using (var command = _context.Database.GetDbConnection().CreateCommand()) { // TODO: Move to Config command.CommandText = "EXEC dbo.GetPortfolioAssets"; _context.Database.OpenConnection(); using (var result = command.ExecuteReader()) { while (result.Read()) { // Build Portfolio Asset var portfolioAsset = new PortfolioAsset() { units = Convert.ToDouble(result["Units"]), asset = new Asset() { AssetId = Convert.ToInt32(result["AssetID"]), Name = result["Name"].ToString(), Symbol = result["Symbol"].ToString(), } }; // Add Portofolio Asset data.Add(portfolioAsset); } } //_context.Database.CloseConnection(); } var response = new Response <List <PortfolioAsset> >() { Data = data, Status = ResponseStatus.Success }; return(response); }
public async Task <IActionResult> EditPortfolioAsset(PortfolioAssetViewModel assetvm) { string returnurl = assetvm.ReturnUrl; var portfolioAsset = new PortfolioAsset { Id = assetvm.Id, Caption = assetvm.Caption }; if (assetvm.Asset == null) { portfolioAsset.Asset = assetvm.CurrentAsset; } else { if (!string.IsNullOrEmpty(assetvm.CurrentAsset)) { _fileManager.RemovePortfolioAsset(assetvm.CurrentAsset); } portfolioAsset.Asset = _fileManager.SavePortfolioAsset(assetvm.Asset); } if (portfolioAsset.Id > 0) { _repo.UpdatePortfolioAsset(portfolioAsset); } else { var item = _repo.GetPortfolioItemForAssets(assetvm.PortfolioItemId); portfolioAsset.PortfolioItem = item; _repo.AddPortfolioAsset(portfolioAsset); } if (await _repo.SaveChangesAsync()) { return(LocalRedirect(returnurl)); } else { return(View(portfolioAsset)); } }
public async Task <IActionResult> DeleteStock(int?id, string stockTicker, string amountRemove) { ApplicationUser user = await _userManager.FindByIdAsync(HttpContext.User.GetUserId()); List <Portfolio> portfolios = _context.Portfolio.Where(p => p.User.Id == user.Id).Include(p => p.PortfolioAssets).ToList(); Portfolio workingPortfolio = portfolios.Single(p => p.ID == id); portfolios.Remove(workingPortfolio); var model = new DeleteStockFromPortfolioViewModel { WorkingPortfolio = workingPortfolio, UserPortfolios = portfolios }; PortfolioAsset asset = _context.PortfolioAsset.Single(p => p.PortfolioID == id && p.AssetSymbol == stockTicker); if (asset.NumberOfAssetOwned < int.Parse(amountRemove)) { asset.NumberOfAssetOwned = 0; } else { asset.NumberOfAssetOwned -= int.Parse(amountRemove); } if (asset.NumberOfAssetOwned == 0) { _context.PortfolioAsset.Remove(asset); await _context.SaveChangesAsync(); } else { _context.Update(asset); await _context.SaveChangesAsync(); } HttpContext.Session.Remove("selected_port_viewmodel"); return(View(model)); }
public void UpdatePortfolioAsset(PortfolioAsset portfolioAsset) { _ctx.PortfolioAssets.Update(portfolioAsset); }
public void AddPortfolioAsset(PortfolioAsset portfolioAsset) { _ctx.PortfolioAssets.Add(portfolioAsset); }
public void CreateFromRawData_ValueDomestic(string value, decimal expected) { var asset = PortfolioAsset.CreateFromRawData("iShares 20+ Year Treasury Bond ETF", "10", "600 USD", value); asset.ValueDomesticCurrency.ShouldBe(expected); }
public void CreateFromRawData_Units(string units, decimal expected) { var asset = PortfolioAsset.CreateFromRawData("iShares 20+ Year Treasury Bond ETF", units, "600 USD", "6617"); asset.Units.ShouldBe(expected); }