getGraphDataSorted method

List<GraphData> getGraphDataSorted(
  1. List<CommissionsByDay> commissionsByDays
)

Implementation

List<GraphData> getGraphDataSorted(List<founder_stats_model.CommissionsByDay> commissionsByDays) {
  List<String> daysOfWeek = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];

  List<founder_stats_model.CommissionsByDay> filteredDays = commissionsByDays.where((day) {
    return daysOfWeek.contains(day.dayName);
  }).toList();

  filteredDays.sort((a, b) {
    int aAdjusted = (a.dayOfWeek == 0) ? 7 : a.dayOfWeek!;
    int bAdjusted = (b.dayOfWeek == 0) ? 7 : b.dayOfWeek!;
    return aAdjusted.compareTo(bAdjusted);
  });

  // Determine min and max for scaling
  double minSales = filteredDays.map((d) => d.totalNeoMiles ?? 0).reduce((a, b) => a < b ? a : b).toDouble();
  double maxSales = filteredDays.map((d) => d.totalNeoMiles ?? 0).reduce((a, b) => a > b ? a : b).toDouble();

  double minCommission = filteredDays.map((d) => d.totalCommission ?? 0).reduce((a, b) => a < b ? a : b).toDouble();
  double maxCommission = filteredDays.map((d) => d.totalCommission ?? 0).reduce((a, b) => a > b ? a : b).toDouble();

  return filteredDays.map((dayData) {
    double scaledNeoMiles = 20 + ((dayData.totalNeoMiles!.toDouble() - minSales) * 80 / (maxSales - minSales));
    double scaledCommission = 20 + ((dayData.totalCommission!.toDouble() - minCommission) * 80 / (maxCommission - minCommission));

    return GraphData(
      dayData.dayName!.substring(0,3) ?? "Unknown",
      scaledNeoMiles,
      scaledCommission,
    );
  }).toList();
}