isShopperValid method
Implementation
bool isShopperValid(Map<String, dynamic> shopper, List<dynamic> enabledFields) {
// Helper to check if a value is actually present
bool isNotEmpty(dynamic value) =>
value != null && value.toString().trim().isNotEmpty;
// Helper to check if a specific field is in the enabledFields list
bool isEnabled(String fieldName) =>
enabledFields.any((f) => f['field'] == fieldName);
// 1. Validate SHOPPER_NAME (First & Last name)
if (isEnabled('SHOPPER_NAME')) {
if (!isNotEmpty(shopper['firstName']) || !isNotEmpty(shopper['lastName'])) {
return false;
}
}
// 2. Validate SHOPPER_EMAIL
if (isEnabled('SHOPPER_EMAIL')) {
if (!isNotEmpty(shopper['email'])) {
return false;
}
}
// 3. Validate SHOPPER_PHONE
if (isEnabled('SHOPPER_PHONE')) {
if (!isNotEmpty(shopper['phoneNumber'])) {
return false;
}
}
// 4. Validate SHIPPING_ADDRESS
if (isEnabled('SHIPPING_ADDRESS')) {
final address = shopper['deliveryAddress'] as Map<String, dynamic>?;
if (address == null) return false; // Address block missing entirely
bool isAddressValid = isNotEmpty(address['address1']) &&
isNotEmpty(address['city']) &&
isNotEmpty(address['state']) &&
isNotEmpty(address['countryCode']) &&
isNotEmpty(address['postalCode']);
if (!isAddressValid) return false;
}
// 5. Check uniqueReference
if (!isNotEmpty(shopper['uniqueReference'])) {
return false;
}
return true; // All enabled fields are valid
}