private async Task <NewUserStatisticWidgetResultDto> GetMonthlyNewUserStatisticWidgetAsync(NewUserStatisticWidgetInputDto input)
        {
            DateTime endDate   = input.EndDate;
            DateTime startDate = input.StartDate;

            var months     = new[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" };
            var monthCount = (endDate.Year - startDate.Year) * 12 + endDate.Month - startDate.Month + 1;
            var labels     = new List <string>();

            for (var i = 0; i < monthCount; i++)
            {
                labels.Add(months[endDate.Month - 1] + " " + endDate.Year);
                endDate = endDate.AddMonths(-1);
            }

            labels.Reverse();

            var data = new Dictionary <string, int>();

            for (var i = 0; i < monthCount; i++)
            {
                data.Add(labels[i], new Random().Next(1500, 3000));
            }

            return(new NewUserStatisticWidgetResultDto()
            {
                Data = data
            });
        }
        private async Task <NewUserStatisticWidgetResultDto> GetDailyNewUserStatisticWidgetAsync(NewUserStatisticWidgetInputDto input)
        {
            var dayCount = (input.EndDate - input.StartDate).Days + 1;

            var labels = new List <string>();

            for (int i = 0; i < dayCount; i++)
            {
                labels.Add(input.StartDate.AddDays(i).ToString("dd/MM/yyyy"));
            }

            var data = new Dictionary <string, int>();

            for (var i = 0; i < dayCount; i++)
            {
                data.Add(labels[i], new Random().Next(50, 100));
            }

            return(new NewUserStatisticWidgetResultDto()
            {
                Data = data
            });
        }
        public async Task <NewUserStatisticWidgetResultDto> GetNewUserStatisticWidgetAsync(NewUserStatisticWidgetInputDto input)
        {
            switch (input.Frequency)
            {
            case NewUserStatisticFrequency.Daily:
                return(await GetDailyNewUserStatisticWidgetAsync(input));

            case NewUserStatisticFrequency.Monthly:
                return(await GetMonthlyNewUserStatisticWidgetAsync(input));
            }

            throw new UserFriendlyException("Not implemented statistic frequency.");
        }