Example #1
0
 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));
 }
Example #2
0
 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));
 }
Example #3
0
        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")));
        }
Example #4
0
        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;
                }
            }
        }