public JsonResult PrepareData(string sec, DateTime from) { MicexISSClient client = new MicexISSClient(new WebApiClient()); var part1 = client.GetCandles(sec, from, from.AddHours(14), "1").Result; var part2 = client.GetCandles(sec, from.AddHours(14).AddMinutes(1), from.AddHours(19), "1").Result; List <ICandle> candles = new List <ICandle>(); candles.AddRange(part1); candles.AddRange(part2); //using (DataContext context = new DataContext()) //{ // context.Database. //} using (UnitOfWork unit = new UnitOfWork((DbContext) new DataContext())) { int key = 0; if (unit.CandleRepository.All <EIDService.Common.Entities.Candle>(null).Count() > 0) { key = unit.CandleRepository.All <EIDService.Common.Entities.Candle>(null).Max(c => c.Id); } foreach (ICandle candle in candles) { key++; EIDService.Common.Entities.Candle entity = new Common.Entities.Candle(); entity.Id = key; entity.CandleDate = candle.begin.ToString("yyyyMMdd"); entity.CandleTime = candle.begin.ToString("HHmm00"); entity.MaxPrice = candle.high; entity.MinPrice = candle.low; entity.OpenPrice = candle.open; entity.ClosePrice = candle.close; entity.Volume = candle.volume; entity.Value = candle.value; entity.Code = sec; unit.CandleRepository.Create(entity); } unit.Commit(); } return(Json("ok", JsonRequestBehavior.AllowGet)); }
public IEnumerable <ICandle> Get(CandleRequestModel request) { IDictionary <Func <CandleRequestModel, bool>, Action> actions = new Dictionary <Func <CandleRequestModel, bool>, Action>(); IEnumerable <ICandle> candles = null; actions.Add((pr) => { return(!string.IsNullOrEmpty(pr.security) && pr.from.HasValue); }, () => { MicexISSClient client = new MicexISSClient(new WebApiClient()); DateTime?till = null; IDictionary <string, Func <CandleRequestModel, IList <UTRADE.Library.ICandle> > > interval_actions = new Dictionary <string, Func <CandleRequestModel, IList <UTRADE.Library.ICandle> > >(); interval_actions.Add("1", (req) => { return(client.GetCandles(request.security, request.from.Value, till, request.interval).Result); }); interval_actions.Add("60", (req) => { return(client.GetCandles(request.security, request.from.Value, till, request.interval).Result); }); interval_actions.Add("D", (req) => { return(client.GetHistory(request.security, request.from.Value, till).Result); }); try { candles = interval_actions[request.interval].Invoke(request); } catch (Exception ex) { string msg = ex.Message; //Logger.Log.Error("ошибка", ex); } }); actions.Single(f => f.Key.Invoke(request)).Value.Invoke(); return(candles); }
// GET api/candle public IEnumerable <ICandle> Get([FromUri] RequestModel request) { Logger.InitLogger(); IDictionary <Func <RequestModel, bool>, Action> actions = new Dictionary <Func <RequestModel, bool>, Action>(); IEnumerable <ICandle> candles = null; Settings settings = null; using (UnitOfWork unit = new UnitOfWork((DbContext) new DataContext())) { settings = unit.SettingsRepository.All <Settings>(null).Single(); } actions.Add((pr) => { return(!pr.from.HasValue); }, () => { EIDService.Common.CandleToISS candleToISS = new Common.CandleToISS(); using (UnitOfWork unit = new UnitOfWork((DbContext) new DataContext())) { var tempData = unit.CandleRepository.All <EIDService.Common.Entities.Candle>(null).ToList(); candles = tempData.Select(c => candleToISS.Convert(c)); if (settings.ModeType == ModeType.Test) { candles = candles.Where(c => c.begin < settings.TestDateTime); settings.TestDateTime = settings.TestDateTime.AddMinutes(1); unit.SettingsRepository.Update(settings); unit.Commit(); CandlesConverter converter = new CandlesConverter(() => { return(new EID.Library.ISS.Candle()); }); candles = converter.Convert(candles.ToList(), 1, 5); } } }); actions.Add((pr) => { return(!string.IsNullOrEmpty(pr.security) && pr.from.HasValue); }, () => { MicexISSClient client = new MicexISSClient(new WebApiClient()); DateTime?till = null; if (settings.ModeType == ModeType.Test) { till = settings.TestDateTime; } IDictionary <string, Func <RequestModel, IList <EID.Library.ICandle> > > interval_actions = new Dictionary <string, Func <RequestModel, IList <EID.Library.ICandle> > >(); interval_actions.Add("1", (req) => { return(client.GetCandles(request.security, request.from.Value, till, request.interval).Result); }); interval_actions.Add("60", (req) => { return(client.GetCandles(request.security, request.from.Value, till, request.interval).Result); }); interval_actions.Add("D", (req) => { return(client.GetHistory(request.security, request.from.Value, till).Result); }); try { candles = interval_actions[request.interval].Invoke(request); Logger.Log.InfoFormat("Данные с ММВБ получены. Count {0}", candles.Count()); } catch (Exception ex) { Logger.Log.Error("ошибка", ex); } }); actions.Single(f => f.Key.Invoke(request)).Value.Invoke(); return(candles); }