get_pie_chart_sections function

Future<List<PieChartSectionData>> get_pie_chart_sections({
  1. required List<Map<String, dynamic>> payments,
  2. required String parameter,
  3. required bool same_background_color,
})

Implementation

Future<List<PieChartSectionData>> get_pie_chart_sections({
  required List<Map<String, dynamic>> payments,
  required String parameter,
  required bool same_background_color,
}) async {
  List<Map<String, dynamic>> sum_of_payments_by_parameter =
      get_sum_of_payments_by_parameter(
    payments: payments,
    parameter: parameter,
  );

  List<PieChartSectionData> pie_chart_sections = [];

  int total_amount_in_sales = 0;

  for (var payments_by_parameter in sum_of_payments_by_parameter) {
    total_amount_in_sales += payments_by_parameter["amount"] as int;
  }

  for (var payments_by_parameter in sum_of_payments_by_parameter) {
    Color random_color =
        Color((Random().nextDouble() * 0xFFFFFF).toInt()).withOpacity(1.0);

    double payments_by_parameter_percentage =
        ((payments_by_parameter["amount"] as int) * 100) /
            total_amount_in_sales;

    String title = "";
    if (parameter == "dispenser") {
      title = (payments_by_parameter[parameter] + 1).toString();
    } else {
      String id = payments_by_parameter[parameter];

      String collection_name =
          parameter.substring(0, parameter.indexOf("_id")) + "s";

      await FirebaseFirestore.instance
          .collection(collection_name)
          .doc(id)
          .get()
          .then((DocumentSnapshot snapshot) {
        Map<String, dynamic> snapshot_data =
            snapshot.data() as Map<String, dynamic>;
        title = snapshot_data["name"];
      });
    }

    pie_chart_sections.add(
      PieChartSectionData(
        color: random_color,
        value: payments_by_parameter_percentage,
        title: title,
        titleStyle: TextStyle(
          color: Colors.white,
          backgroundColor:
              same_background_color ? random_color : Colors.transparent,
        ),
      ),
    );
  }
  return pie_chart_sections;
}