import 'package:built_collection/built_collection.dart'; import 'package:invoiceninja_flutter/constants.dart'; import 'package:invoiceninja_flutter/data/models/client_model.dart'; import 'package:invoiceninja_flutter/data/models/company_model.dart'; import 'package:invoiceninja_flutter/data/models/entities.dart'; import 'package:invoiceninja_flutter/redux/reports/reports_state.dart'; import 'package:invoiceninja_flutter/ui/reports/reports_screen.dart'; ReportResult clientReport({ UserCompanyEntity userCompany, ReportsUIState reportsUIState, BuiltMap clientMap, }) { final List> data = []; BuiltList columns; final reportColumns = userCompany.settings.reportColumns; if (reportColumns != null && reportColumns.containsKey(kReportClient)) { columns = reportColumns[kReportClient]; } else { columns = BuiltList([ ClientFields.name, ]); } for (var clientId in clientMap.keys) { final client = clientMap[clientId]; if (client.isDeleted) { continue; } final List row = []; data.add(row); for (var column in columns) { switch (column) { case ClientFields.name: row.add(ReportEntityValue( entityType: EntityType.client, entityId: client.id, )); break; case ClientFields.idNumber: row.add(ReportValue(value: client.idNumber)); break; case ClientFields.vatNumber: row.add(ReportValue(value: client.vatNumber)); break; case ClientFields.state: row.add(ReportValue(value: client.state)); break; } } } return ReportResult( allColumns: [ ClientFields.name, ClientFields.idNumber, ClientFields.vatNumber, ClientFields.state, ], columns: columns.toList(), data: data, ); }