public async Task <ActionResult <RecommendedWallet> > GetRecommendedWallet(string fundNames, int stocksLimit) { var RecommendedWallet = new RecommendedWallet(); RecommendedWallet.FundNames = fundNames.Split(','); RecommendedWallet.Id = Guid.NewGuid(); RecommendedWallet.Performance12Months = 0; RecommendedWallet.Performance6Months = 0; RecommendedWallet.Performance1Month = 0; RecommendedWallet.Assets = new List <Asset>(); foreach (string f in RecommendedWallet.FundNames) { var fund = await _fundController.GetFund(f); if (fund.Value != null) { var wallet = await _walletController.GetWallet(fund.Value.Wallet.Id); foreach (Asset a in wallet.Value.Assets.OrderByDescending(s => s.Size).Take(stocksLimit)) { if (stocksLimit > RecommendedWallet.Assets.Count() || RecommendedWallet.Assets.OrderBy(s => s.Percentage).First().Percentage < a.Percentage) { RecommendedWallet.Assets.Add(a); } } RecommendedWallet.Total = RecommendedWallet.Assets.Select(s => s.Size).Sum(); } } RecommendedWallet.Assets = RecommendedWallet.Assets.OrderByDescending(s => s.Percentage).Take(stocksLimit).ToList(); return(RecommendedWallet); }
public async Task <IActionResult> PutRecommendedWallet(Guid id, RecommendedWallet recommendedWallet) { if (id != recommendedWallet.Id) { return(BadRequest()); } _context.Entry(recommendedWallet).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!RecommendedWalletExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <ActionResult <RecommendedWallet> > PostRecommendedWallet(RecommendedWallet recommendedWallet) { _context.RecommendedWallets.Add(recommendedWallet); await _context.SaveChangesAsync(); return(CreatedAtAction("GetRecommendedWallet", new { id = recommendedWallet.Id }, recommendedWallet)); }