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); }