isShopperValid method

bool isShopperValid(
  1. Map<String, dynamic> shopper,
  2. List enabledFields
)

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
}