Exemplo n.º 1
0
        public async Task <AssetData> GetAssetData(string ticket, int userId)
        {
            var searchData = await Search(ticket);

            if (searchData == null)
            {
                return(null);
            }

            if (AssetTypes.STOCK == searchData.Type)
            {
                var stockInfo = new StockInfo(_marketData, _financeData, ticket);
                RegisterAllOperations(stockInfo, userId);
                return(await GetAssetData(stockInfo));
            }

            if (AssetTypes.ETF == searchData.Type)
            {
                var fondInfo = new FondInfo(_marketData, _financeData, ticket);
                RegisterAllOperations(fondInfo, userId);
                return(await GetAssetData(fondInfo));
            }

            if (AssetTypes.OFZ == searchData.Type)
            {
                var bondInfo = new BondInfo(_marketData, _financeData, ticket);
                RegisterAllOperations(bondInfo, userId);
                return(await GetAssetData(bondInfo));
            }

            return(null);
        }
Exemplo n.º 2
0
        private AssetInfo Getbond()
        {
            var operations = new List <AssetOperation>()
            {
                new AssetOperation()
                {
                    Id            = 1,
                    Ticket        = "SU26209RMFS5",
                    Amount        = 2,
                    PaymentPrice  = 103180,
                    PortfolioId   = 1,
                    AssetAction   = _buyAction,
                    AssetActionId = _buyAction.Id,
                    AssetType     = _bondType,
                    AssetTypeId   = _bondType.Id,
                    Date          = new DateTime(2020, 2, 7)
                },
                new AssetOperation()
                {
                    Id            = 2,
                    Ticket        = "SU26209RMFS5",
                    Amount        = 1,
                    PortfolioId   = 1,
                    PaymentPrice  = 103230,
                    AssetAction   = _buyAction,
                    AssetActionId = _buyAction.Id,
                    AssetType     = _bondType,
                    AssetTypeId   = _bondType.Id,
                    Date          = new DateTime(2020, 4, 4)
                }
            };

            var payments = new List <Payment>()
            {
                new Payment()
                {
                    PortfolioId  = 1,
                    Ticket       = "SU26209RMFS5",
                    Amount       = 3,
                    Date         = DateTime.Now,
                    PaymentValue = 11370
                },
            };

            _financeDataService.EfContext.Payments.AddRange(payments);
            _financeDataService.EfContext.SaveChanges();

            var stockInfo = new BondInfo(_stockMarketData, _financeDataService, "SU26209RMFS5");

            foreach (var assetOperation in operations)
            {
                stockInfo.RegisterOperation(assetOperation);
            }

            return(stockInfo);
        }
        private void RegisterOperation(List<AssetInfo> assets, AssetOperation operation)
        {
            if (operation.AssetType.Name == SeedFinanceData.STOCK_ASSET_TYPE)
            {
                var asset = assets.FirstOrDefault(a => a.Ticket == operation.Ticket);

                if (asset == null)
                {
                    var stockInfo = new StockInfo(_marketData, _financeDataService, operation.Ticket);
                    assets.Add(stockInfo);
                    asset = stockInfo;
                }
                
                asset.RegisterOperation(operation);
            }

            if (operation.AssetType.Name == SeedFinanceData.FOND_ASSET_TYPE)
            {
                var asset = assets.FirstOrDefault(a => a.Ticket == operation.Ticket);

                if (asset == null)
                {
                    var fondInfo = new FondInfo(_marketData, _financeDataService, operation.Ticket);
                    assets.Add(fondInfo);
                    asset = fondInfo;
                }

                asset.RegisterOperation(operation);
            }

            if (operation.AssetType.Name == SeedFinanceData.BOND_ASSET_TYPE)
            {
                var asset = assets.FirstOrDefault(a => a.Ticket == operation.Ticket);

                if (asset == null)
                {
                    var bondInfo = new BondInfo(_marketData, _financeDataService, operation.Ticket);
                    assets.Add(bondInfo);
                    asset = bondInfo;
                }

                asset.RegisterOperation(operation);
            }
        }