public ActionResult Create(BaseFinancialViewModel model) { model.SelectList = selectList; if (ModelState.IsValid) { FinancialAsset asset = mapper.Map <FinancialAsset>(model); db.FinancialRepo.Add(asset); db.Commit(); return(RedirectToAction("Table", "Expense")); } return(View(model)); }
public ActionResult Edit(int id, BaseFinancialViewModel model) { model.SelectList = selectList; if (ModelState.IsValid) { FinancialAsset asset = mapper.Map <FinancialAsset>(model); asset.Id = id; db.FinancialRepo.Update(asset); db.Commit(); return(RedirectToAction("Table", "Income")); } return(View(model)); }
public async Task <BaseResponse <string> > Handle(OrderStockCommand request, CancellationToken cancellationToken) { // calcular o total das ações desejadas // pegar o saldo do trader logado // verificar se o trader tem saldo suficiente // registrar a compra: // salvar as ações compradas // debitar do saldo var stock = await _repository.GetBySymbol(request.Symbol); if (stock is null) { return(await Task.FromResult(new BaseResponse <string>() { Error = true, ErrorMessage = "ativo inválido" })); } var totalAmount = stock.CurrentPrice * request.Amount; var trader = await _traderRepository.GetById(1); if (trader.AccountAmmount < totalAmount) { return(await Task.FromResult(new BaseResponse <string>() { Error = true, ErrorMessage = "saldo insuficiente" })); } var financialAsset = trader.FinancialAssets.Find(f => f.Stock.Symbol == stock.Symbol); if (financialAsset is null) { financialAsset = new FinancialAsset { Amount = request.Amount, Stock = stock, UnitPrice = stock.CurrentPrice, Trader = trader }; trader.FinancialAssets.Add(financialAsset); } else { trader.FinancialAssets.FindAll(f => f.Stock.Symbol == stock.Symbol).ForEach(f => f.Amount += request.Amount); } trader.AccountAmmount -= totalAmount; await _traderRepository.Update(trader); return(await Task.FromResult(new BaseResponse <string>("sucesso"))); }
static void Main(string[] args) { Console.WriteLine("Welcome to your investment application!!!"); Portfolio userPortfolio = new Portfolio(); bool showPortfolioOptions = true; while (showPortfolioOptions) { Console.WriteLine(); userPortfolio.ShowOptions(); Console.WriteLine(); int option = int.Parse(Console.ReadLine()); switch (option) { case 1: Console.WriteLine("Asset Name:"); string assetName = Console.ReadLine(); Console.WriteLine("Asset Value:"); double assetValue = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture); Console.WriteLine("Asset Amount:"); int assetAmount = int.Parse(Console.ReadLine()); Console.WriteLine("Date:"); DateTime date = DateTime.Parse(Console.ReadLine()); FinancialAsset newAsset = new FinancialAsset(assetName, assetValue, assetAmount, date); userPortfolio.NewAsset(newAsset); break; case 2: foreach (FinancialAsset asset in userPortfolio.FinancialAssets) { Console.WriteLine( "Name: " + asset.AssetName + " Value: " + asset.AssetValue + " Amount: " + asset.AssetAmount + " TotalValue: " + asset.TotalValue() + " Date: " + asset.Date); } break; case 3: Console.WriteLine("Asset Name:"); string name = Console.ReadLine(); Console.WriteLine("Asset Amount:"); int amount = int.Parse(Console.ReadLine()); userPortfolio.SellAsset(name, amount); break; case 4: double portfolioValue = userPortfolio.PortfolioValue(); Console.WriteLine("Portfolio Value: " + portfolioValue); break; case 5: Console.WriteLine("Month: "); int month = int.Parse(Console.ReadLine()); Console.WriteLine("Year:"); int year = int.Parse(Console.ReadLine()); double monthValue = userPortfolio.PortfolioValueByDate(month, year); Console.WriteLine("Month Value: " + monthValue); break; case 6: showPortfolioOptions = false; break; default: Console.WriteLine("Invalid Option"); break; } } }