private void AddChartValues(string chartName, double value, DateTime time, UnitOfTime unitOfTime, double?accumulatedValue = 0)
        {
            var chart      = this.GetChart(chartName);
            var lastRecord = chart[unitOfTime].OrderByDescending(x => x.StartDate).FirstOrDefault();

            if (lastRecord.StartDate.IsInSamePeriodAs(time, unitOfTime))
            {
                lastRecord.Value += (decimal)value;
            }
            else
            {
                lastRecord = new ChartStatsViewModel
                {
                    StartDate  = time,
                    UnitOfTime = unitOfTime,
                    Value      = (decimal)value
                };

                if (this.charts[chartName][unitOfTime].Count > 100)
                {
                    this.charts[chartName][unitOfTime] = this.charts[chartName][unitOfTime]
                                                         .OrderByDescending(x => x.StartDate)
                                                         .Take(35)
                                                         .ToList();
                }

                this.charts[chartName][unitOfTime].Add(lastRecord);
            }

            if (accumulatedValue != 0)
            {
                lastRecord.AccumulatedValue += (decimal)accumulatedValue.Value;
            }
        }
        public IEnumerable <ChartStatsViewModel> AssetTypesChart()
        {
            var globalAssetsModel = new ChartStatsViewModel
            {
                Label = "Global",
                Value = this.db.Assets.Count(x => x.Type != AssetType.NEP5)
            };

            var tokenAssetsModel = new ChartStatsViewModel
            {
                Label = "NEP-5",
                Value = this.db.Assets.Count(x => x.Type == AssetType.NEP5)
            };

            return(new List <ChartStatsViewModel> {
                globalAssetsModel, tokenAssetsModel
            });
        }