39 lines
1.1 KiB
Dart
39 lines
1.1 KiB
Dart
// Shared helpers so entity lookup dropdowns omit inactive records.
|
|
// Do not use these for status-picker dropdowns (Active / Inactive choices).
|
|
|
|
const _inactiveStatuses = {
|
|
'inactive',
|
|
'locked',
|
|
'blacklisted',
|
|
'disabled',
|
|
};
|
|
|
|
/// Returns true when a raw API row should appear in a lookup dropdown.
|
|
bool isActiveOptionRow(Map<String, dynamic> item) {
|
|
if (item['is_active'] == false) return false;
|
|
if (item['isActive'] == false) return false;
|
|
|
|
final status = (item['status']?.toString() ?? '').trim().toLowerCase();
|
|
if (status.isEmpty) return true;
|
|
return !_inactiveStatuses.contains(status);
|
|
}
|
|
|
|
/// Active user suitable for manager / assignee dropdowns.
|
|
bool isActiveUserOption({
|
|
required String status,
|
|
required bool isActive,
|
|
}) {
|
|
return isActive && status.trim().toLowerCase() == 'active';
|
|
}
|
|
|
|
/// Active vendor suitable for PO / asset vendor dropdowns.
|
|
bool isActiveVendorOption({
|
|
required bool isActive,
|
|
String? status,
|
|
}) {
|
|
if (!isActive) return false;
|
|
final normalized = (status ?? '').trim().toLowerCase();
|
|
if (normalized.isEmpty) return true;
|
|
return !_inactiveStatuses.contains(normalized);
|
|
}
|