예제 #1
0
        public string ExportChartAsTable(ChartDataRequest dataRequest)
        {
            _dataPresenter.DataRequest = dataRequest;
            _dataPresenter.InputPoints = _dataProcessor.GetChartData(dataRequest.Begin, dataRequest.End,
                                                                     ConvertCurrencyValuesToCodes(dataRequest.CurrencyValues));

            return(_dataPresenter.ExportAsTable());
        }
예제 #2
0
        public IActionResult LoadChartData(string json)
        {
            ChartDataRequest clientRequest = null;
            IDictionary <CurrencyCodeEntry, ICollection <ChartCurrencyDataPoint <CurrencyDataEntry> > > points = null;

            string resultJson = "";

            //try
            //{
            clientRequest = JsonConvert.DeserializeObject <ChartDataRequest>(json);

            if (clientRequest != null)
            {
                if (clientRequest.End.Date > DateTime.Now.Date)
                {
                    throw new ArgumentOutOfRangeException("End date should not be greater than todays date.");
                }

                _currencyXplorer.ChartTimePeriod          = new ChartTimePeriod(clientRequest.Begin, clientRequest.End);
                _currencyXplorer.ChartCurrencyCodeStrings = clientRequest.CurrencyValues;
                _currencyXplorer.RequestChartData();

                points = _currencyXplorer.ChartDataPoints;

                // Minimify all

                IDictionary <string, List <JsonChartPointData> > lazyPoints =
                    new Dictionary <string, List <JsonChartPointData> >();

                foreach (var pair in points)
                {
                    lazyPoints.Add(pair.Key.Alias, new List <JsonChartPointData>());

                    foreach (var currencyDataPoint in pair.Value)
                    {
                        // TODO: fix date conversion so that it is based on language.
                        lazyPoints[pair.Key.Alias].Add(new JsonChartPointData()
                        {
                            ActualDate = currencyDataPoint.DataObject.ActualDate.ToString("yyyy.M.dd"),
                            Value      = currencyDataPoint.DataObject.Value,
                            Alias      = currencyDataPoint.DataObject.DbCurrencyCodeEntry.Alias,
                            Name       = currencyDataPoint.DataObject.DbCurrencyCodeEntry.Name
                        });
                    }
                }

                resultJson = JsonConvert.SerializeObject(new { State = "Success", Data = lazyPoints });
            }
            //}
            //catch (Exception e)
            //{
            //    Debug.WriteLine(e.Message);
            //    resultJson = JsonConvert.SerializeObject(new { State = "Failed", Data = e.Message });
            //}

            return(Json(resultJson));
        }
예제 #3
0
        public IActionResult ExportAsTable(string json)
        {
            ChartDataRequest clientRequest = JsonConvert.DeserializeObject <ChartDataRequest>(json);

            string status   = "OK";
            string filePath = "";

            if (clientRequest != null)
            {
                filePath = _currencyExplorer.ExportChartAsTable(clientRequest);
            }

            if (System.IO.File.Exists(filePath) == false)
            {
                status = "Fail";
            }

            return(Json(new { Status = status, Path = filePath }));
        }
        public async Task <IActionResult> GetChartData([FromBody] ChartDataRequest model)
        {
            if (ModelState.IsValid)
            {
                var serviceRequest = _mapper.Map <ChartRequestDto>(model);

                // ReSharper disable once PossibleInvalidOperationException
                serviceRequest.UserId = CurrentUser.UserId.Value;

                var chartDataResult = await _chartService.GetDataAsync(serviceRequest);

                if (chartDataResult.IsValid)
                {
                    return(Ok(SmartJsonResult <ChartDataReturnModel> .Success(_mapper.Map <ChartDataReturnModel>(chartDataResult.Result))));
                }

                return(BadRequest(SmartJsonResult.Failure(chartDataResult.ValidationErrors)));
            }
            return(BadRequest(SmartJsonResult.Failure(GetModelStateErrors(ModelState))));
        }
예제 #5
0
 public async Task <ResponseModel> GetChartData([FromQuery] ChartDataRequest request)
 {
     return(await this.mediator.Send(request));
 }
예제 #6
0
        private async void RequestChartData()
        {
            var testPair = ConfigurationManager.AppSettings["testPair"];
            var request  = new ChartDataRequest(testPair, DateTime.UtcNow.AddHours(-10), DateTime.UtcNow, CandlestickPeriod.MediaHora);
            var candles  = Enumerable.Empty <ChartDataCandle>();

            using (var client = new HttpClient())
            {
                candles = await client.GetAsync <IEnumerable <ChartDataCandle> >(new EndPointConfiguration { Address = publicExUrl }, request);
            }

            if (!candles.HasElements())
            {
                return;
            }

            Tendencia     tendencia           = null;
            var           tendencias          = new List <Tendencia>();
            var           candlesTendencia    = new List <ChartDataCandle>();
            TipoTendencia?ultimoTipoTendencia = null;

            var variacionesNegativas = new[] { TipoVariacion.BajaEstabilizacion, TipoVariacion.BajaModerada, TipoVariacion.BajaFuerte };
            var variacionesPositivas = new[] { TipoVariacion.AlzaEstabilizacion, TipoVariacion.AlzaModerada, TipoVariacion.AlzaFuerte };

            foreach (var candle in candles)
            {
                var tipoTendenciaActual = TipoTendencia.Estable;

                if (variacionesNegativas.Contains(candle.TipoVariacion))
                {
                    tipoTendenciaActual = TipoTendencia.Baja;
                }
                else if (variacionesPositivas.Contains(candle.TipoVariacion))
                {
                    tipoTendenciaActual = TipoTendencia.Alza;
                }

                if (!ultimoTipoTendencia.HasValue)
                {
                    tendencia = new Tendencia {
                        Tipo = tipoTendenciaActual
                    }
                }
                ;
                else if (ultimoTipoTendencia.Value != tipoTendenciaActual)
                {
                    tendencia.Candles = candlesTendencia.OrderBy(ct => ct.DateTime);
                    tendencias.Add(tendencia);
                    tendencia = new Tendencia {
                        Tipo = tipoTendenciaActual
                    };
                    candlesTendencia = new List <ChartDataCandle>();
                }

                candlesTendencia.Add(candle);

                ultimoTipoTendencia = tipoTendenciaActual;
            }

            tendencia.Candles = candlesTendencia;
            tendencias.Add(tendencia);
            var tendenciasResult = tendencias.OrderBy(t => t.Start);
        }