Beispiel #1
0
        public async Task <IActionResult> Post()
        {
            MicexISSClient micexClient = new MicexISSClient(new CommonLib.WebApiClient());

            var           apiClient     = new CommonLib.WebApiClient();
            TinkoffClient tinkoffClient = new TinkoffClient(apiClient);

            apiClient.addHeader("Authorization", "Bearer t.FwRjwQy5LHo3uXE0iQ6D4VGVFRvccr1_PItEHgLIOt4sc7QkQkBzd_eDACB0TTfnBBOWi_mtg84cPbvKwD4gpQ");

            string tinkoff_stocks = await tinkoffClient.GetStocks();

            string moex_json = await micexClient.GetSecurityList("shares", "TQBR");

            JObject obj     = JObject.Parse(tinkoff_stocks);
            JObject moexObj = JObject.Parse(moex_json);

            JArray instruments = (JArray)obj["payload"]["instruments"];
            JArray moex_data   = (JArray)moexObj["securities"]["data"];

            IList <string> moex_columns = moexObj["securities"]["columns"].Select(c => (string)c).ToList();

            int            isin_column = moex_columns.IndexOf("ISIN");
            IList <string> moex_isin   = moex_data.Select(t => (string)t[isin_column]).ToList();


            foreach (var jtoken in instruments)
            {
                SecurityRaw raw = jtoken.ToObject <SecurityRaw>();
                raw.Board = moex_isin.Contains(raw.isin) ? "TQBR" : "SPBMX";

                Security sec = _context.SecuritySet.Include(s => s.Emitent).SingleOrDefault(c => c.ISIN == raw.isin);
                if (sec != null)
                {
                    raw.Processed = true;
                    raw.Emitent   = sec.Emitent.Code;
                }
                ;

                if (!_context.SecurityRawSet.Any(r => r.isin == raw.isin))
                {
                    _context.SecurityRawSet.Add(raw);
                }
            }

            _context.SaveChanges();



            return(Ok());
        }
Beispiel #2
0
        public IActionResult Post([FromBody] ImportRequest requestModel)
        {
            if (requestModel.Object == "deal")
            {
                var dealRaws = _context.DealRawSet.ToList();
                var accounts = _context.AccountSet.ToList();

                foreach (DealRaw rawItem in dealRaws)
                {
                    var security = _context.SecuritySet.Single(s => s.Code == rawItem.symbol);

                    Deal deal = new Deal()
                    {
                        Number       = rawItem.number,
                        Operation    = rawItem.operation == "Купля" ? OrderOperationEnum.Buy : OrderOperationEnum.Sell,
                        securityId   = security.Id,
                        accountId    = accounts.Single(a => a.Client == rawItem.client).Id,
                        Board        = rawItem.board,
                        Date         = DateTime.ParseExact($"{rawItem.date} {rawItem.time}", "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture),
                        DeliveryDate = DateTime.ParseExact(rawItem.delivery_date, "dd.MM.yyyy", CultureInfo.InvariantCulture),
                        Count        = rawItem.count,
                        Price        = rawItem.price,
                        Volume       = rawItem.volume,
                        NKD          = security.Market == "bonds" ? rawItem.nkd : null
                    };

                    _context.DealSet.Add(deal);
                }

                _context.SaveChanges();
            }

            if (requestModel.Object == "stock")
            {
                foreach (string isin in requestModel.ISIN)
                {
                    Emitent emitent = null;

                    SecurityRaw rawItem = _context.SecurityRawSet.Single(s => s.isin == isin);

                    if (string.IsNullOrEmpty(rawItem.Emitent))
                    {
                        emitent = new Emitent()
                        {
                            Code          = rawItem.ticker,
                            Name          = rawItem.name,
                            FinancialPage = rawItem.Board == "SPBMX" ? rawItem.ticker : $"{rawItem.ticker}.ME"
                        };
                    }
                    else
                    {
                        emitent = _context.EmitentSet.Single(e => e.Code == rawItem.Emitent);
                    }

                    Share stock = new Share()
                    {
                        Emitent  = emitent,
                        ISIN     = rawItem.isin,
                        Code     = rawItem.ticker,
                        Name     = rawItem.name,
                        Region   = rawItem.Board == "SPBMX" ? "United States" : "Moscow",
                        Currency = rawItem.currency,
                        Market   = "shares",
                        Board    = rawItem.Board
                    };

                    Quote quote = new Quote()
                    {
                        Id     = Guid.NewGuid(),
                        figi   = rawItem.figi,
                        symbol = rawItem.ticker,
                        Board  = rawItem.Board
                    };

                    _context.ShareSet.Add(stock);
                    _context.QuoteSet.Add(quote);


                    rawItem.Processed = true;
                    rawItem.Emitent   = emitent.Code;

                    _context.SecurityRawSet.Update(rawItem);

                    _context.SaveChanges();
                }
            }

            return(Ok());
        }