public async Task <IActionResult> GetSecuritiesInDb(string security_name, int source_security_id) { var g = Request.Form.Keys; var security_list = await _db.GetAllSourceSecurity(); //RequestToFinam request_to_finam List <BrokerRepositorySecurity> listSecurities = await FinamArraySecuritiesNames.GetSecurityComboList(_db, security_name, source_security_id); //if(listSecurities) //В начале есть возможность откуда брать информацию об инструментах которые нужно качать ViewBag.SourceSecurityList = security_list; ViewBag.SecName = security_name; ViewBag.BrokerRepositorySecurities = listSecurities; ViewBag.SecCount = listSecurities.Count(); return(View("DownloadSecurities")); }
public async Task <IActionResult> InspectSecurity(string source_security_id) { var list_of_sources = await _db.GetAllSourceSecurity(); ViewBag.SourceSecurityList = list_of_sources; //пытаюсь распарсить источник инструмента из комбобокс bool parsed = Int32.TryParse(source_security_id, out int intIdSource); if (!parsed || intIdSource < 0) { return(NotFound("Не удалось привести к int идентификатор, выбранного в комбобоксе инструмента.")); } var securities_list = await FinamArraySecuritiesNames.InspectSecuritiesInDb(_db, intIdSource); await _db.UpdateAllSecuritiesFromSource(securities_list, intIdSource); return(View("SourcesSecurity")); }
public async Task <IActionResult> DownloadFileFromFinam(int combo_security_id, DateTime start_date, DateTime end_date) { StringBuilder sb = new StringBuilder(); var security = await _db.GetSecurityById(combo_security_id); var nowDate = start_date; StringBuilder sb2 = new StringBuilder(); WebClient wb = new WebClient(); while (nowDate <= end_date) { string url = FinamArraySecuritiesNames.GetTrades(security, start_date); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync(); await using (Stream stream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream ?? throw new InvalidOperationException())) { Dictionary <string, int> dict_headers = new Dictionary <string, int>(); string line = ""; //получил массив за день while ((line = reader.ReadLine()) != null) { //разбил строку по запятым //<DATE>,<TIME>,<LAST>,<VOL>,<ID>,<OPER> var mass = line.Split(','); //проверяю - заголовочная это строка или нет if (line.Contains("<")) { if (mass.Contains("<DATE>")) { dict_headers["<DATE>"] = Array.IndexOf(mass, "<DATE>"); } if (mass.Contains("<TIME>")) { dict_headers["<TIME>"] = Array.IndexOf(mass, "<TIME>"); } if (mass.Contains("<LAST>")) { dict_headers["<LAST>"] = Array.IndexOf(mass, "<LAST>"); } if (mass.Contains("<VOL>")) { dict_headers["<VOL>"] = Array.IndexOf(mass, "<VOL>"); } if (mass.Contains("<ID>")) { dict_headers["<ID>"] = Array.IndexOf(mass, "<ID>"); } if (mass.Contains("<OPER>")) { dict_headers["<OPER>"] = Array.IndexOf(mass, "<OPER>"); } //после заполнения заголовочного файла переходу на следующую строку continue; } //если нет заголовка то дальше ничего не делаю и сообщаю, что невозможно идентифицировать if (!dict_headers.ContainsKey("<DATE>") || !dict_headers.ContainsKey("<TIME>") || !dict_headers.ContainsKey("<LAST>") || !dict_headers.ContainsKey("<VOL>") || !dict_headers.ContainsKey("<ID>") || !dict_headers.ContainsKey("<OPER>") ) { break; } //формируем данные для БД и проверяем если тики для данной даты и данного инструмента присутствуют //то обрываем цикл //TODO сделать процедуру для проверки тика к определенной дате, и если такой тик уже есть обрывать цикл //DateTime date_in_db = new DateTime(); if (!DateTime.TryParse(mass[dict_headers["<DATE>"]], out DateTime date_in_db)) { return(null); } var f = date_in_db; sb2.Append(line); } } } response.Close(); // await wb.DownloadStringTaskAsync(sb.ToString()); nowDate = nowDate.AddDays(1); } // // WebClient wb = new WebClient(); // // try // { // string res = await wb.DownloadStringTaskAsync(sb.ToString()); // } // catch (Exception) // { // wb.Dispose(); // return "Ошибка при скачивании"; // } // // //прибавляю один день // nowDate = nowDate.AddDays(1); return(View("DownloadSecurities")); }