$row */ public static function create(array $row): GoogleSheetIntegration { $valueObject = new GoogleSheetIntegrationValueObject( isset($row['id']) ? (int) $row['id'] : null, (int) $row['form_id'], (string) $row['spreadsheet_id'], (string) ($row['spreadsheet_name'] ?? ''), (string) $row['worksheet_name'], self::parseFieldMapping($row), self::parseSmartLogic($row), (bool) $row['enabled'], !empty($row['last_status']) ? (string) $row['last_status'] : null, self::parseDateTime($row, 'last_run_at'), self::parseDateTime($row, 'created_at'), self::parseDateTime($row, 'updated_at') ); return new GoogleSheetIntegration($valueObject); } /** * @param array $row * @return list */ private static function parseFieldMapping(array $row): array { $fieldMapping = json_decode($row['field_mapping'] ?? '[]', true); if (!is_array($fieldMapping)) { return []; } $normalized = []; foreach ($fieldMapping as $item) { if (!is_array($item) || empty($item['column'])) { continue; } $normalized[] = [ 'column' => (string) $item['column'], 'value' => (string) ($item['value'] ?? ''), ]; } return $normalized; } /** * @param array $row * @return array */ private static function parseSmartLogic(array $row): array { $smartLogic = json_decode($row['smart_logic'] ?? '[]', true); return is_array($smartLogic) ? $smartLogic : []; } /** * @param array $row */ private static function parseDateTime(array $row, string $field): ?DateTime { if (empty($row[$field])) { return null; } return new DateTime((string) $row[$field]); } }