private WidgetCardChartBar GetWidgetCardChartBar(List <BaseChartData> baseChartDatas, string chartLabel)
        {
            WidgetCardChartBar widgetCardChartBar = new WidgetCardChartBar();

            List <double> datas  = new List <double>();
            List <string> colors = new List <string>();

            foreach (var baseChartData in baseChartDatas)
            {
                widgetCardChartBar.Chart.Labels.Add(new SelectDto()
                {
                    Id    = Int32.Parse(baseChartData.Month),
                    Label = $"{DateHelper.GetLabelMonthShort(baseChartData.Month)} {baseChartData.Year}"
                });

                //var amount = enumAmountState == EnumAmountState.Debit
                //    ? AsEvolution.Debit : enumAmountState == EnumAmountState.Credit
                //    ? AsEvolution.Credit : enumAmountState == EnumAmountState.Balance
                //    ? AsEvolution.Balance : 0;

                datas.Add(baseChartData.Amount);
                colors.Add(baseChartData.Amount >= 0
                    ? ChartHelper.GetChartColor(EnumChartBarColor.Green.ToString())
                    : ChartHelper.GetChartColor(EnumChartBarColor.Red.ToString()));
            }

            widgetCardChartBar.Chart.DataSets.Add(new DataSet()
            {
                Label = chartLabel,
                Data  = datas
            });
            widgetCardChartBar.Chart.Colors.Add(new Color
            {
                BackgroundColor = colors
            });

            widgetCardChartBar.Title.Label = chartLabel;
            //prendre que les datas dont nombre<>0 (pas de données si total =0 pour un mois donnée ou alors le compe ne vit pas)
            var datasNoZero = datas.Where(x => x != 0).ToList();

            widgetCardChartBar.Title.AverageAmount = datas.Count > 0 && datasNoZero.Sum() != 0 ? Math.Round(datasNoZero.Average(), 2) : 0;
            var lastData = datas.Count > 0 ? datas[datas.Count - 1] : 0; //widgetCardChartBar.Chart.DataSets[0].Data[widgetCardChartBar.Chart.DataSets[0].Data.Count - 1];

            widgetCardChartBar.Title.RatioAmount = datas.Count > 0 ? Math.Round((lastData - widgetCardChartBar.Title.AverageAmount) * 100 / Math.Abs(widgetCardChartBar.Title.AverageAmount), 2) : 0;
            widgetCardChartBar.Title.RatioLabel  = datas.Count > 0 ? $" pour {widgetCardChartBar.Chart.Labels.Last().Label }" : "données inexistantes";

            YAxe yAxe = new YAxe();

            yAxe.Ticks.Min = datas.Count > 0 ? widgetCardChartBar.Chart.DataSets[0].Data.Min() : 0;
            yAxe.Ticks.Max = datas.Count > 0 ? widgetCardChartBar.Chart.DataSets[0].Data.Max() : 0;
            widgetCardChartBar.Chart.Options.Scales.YAxes.Add(yAxe);

            widgetCardChartBar.IsLoaded = true;

            return(widgetCardChartBar);
        }
        public List <WidgetCardChartBar> GetAsChartEvolutionCustomOtf(FilterAsTableSelected filterAsTableSelected)
        {
            //Rechercher les operationTypeFamily favori pour l'utilisateur
            List <SelectDto>          otfs = _userCustomOtfService.GetOperationTypeFamilySelect(filterAsTableSelected.User.Id, filterAsTableSelected.IdAccount);
            List <WidgetCardChartBar> widgetCardChartBars = new List <WidgetCardChartBar>();

            foreach (var otf in otfs)
            {
                var baseChartDatas = GetAsEvolutionCustomOtf(filterAsTableSelected, otf.Id);
                WidgetCardChartBar widgetCardChartBar = GetWidgetCardChartBar(baseChartDatas, otf.Label);
                widgetCardChartBars.Add(widgetCardChartBar);
            }

            return(widgetCardChartBars);
        }