@php $contactGroups = [ 'phones' => [ 'relation' => 'phoneNumbers', 'field' => 'phone_number', 'title' => __('Phone numbers'), 'placeholder' => __('Type a phone number and press Enter'), ], 'emails' => [ 'relation' => 'emailAddresses', 'field' => 'email_address', 'title' => __('Email addresses'), 'placeholder' => __('Type an email address and press Enter'), ], 'addresses' => [ 'relation' => 'postalAddresses', 'field' => 'address_line_1', 'title' => __('Postal addresses'), 'placeholder' => __('Type a complete address and press Enter'), ], ]; $submittedContacts = old('contacts', []); @endphp
@foreach($contactGroups as $type => $group) @php $submittedGroup = $submittedContacts[$type] ?? null; if (is_array($submittedGroup) && array_key_exists('items', $submittedGroup)) { $rows = $submittedGroup['items']; } elseif (isset($person) && $person->relationLoaded($group['relation'])) { $rows = $person->{$group['relation']}->map(fn ($contact) => $contact->toArray())->all(); } else { $rows = []; } $items = []; $primarySourceIndex = $submittedGroup['primary'] ?? null; $primaryIndex = null; foreach ($rows as $sourceIndex => $row) { if ($type === 'addresses') { $value = implode(', ', array_filter([ $row['address_line_1'] ?? null, $row['address_line_2'] ?? null, $row['locality'] ?? null, $row['administrative_area'] ?? null, $row['postal_code'] ?? null, $row['country_code'] ?? null, ], fn ($part) => filled($part))); } else { $value = trim((string) ($row[$group['field']] ?? '')); } if ($value === '') { continue; } $itemIndex = count($items); $items[$itemIndex] = [ 'source_index' => $sourceIndex, 'id' => $row['id'] ?? null, 'value' => $value, 'is_primary' => ! empty($row['is_primary']), ]; if ((string) $sourceIndex === (string) $primarySourceIndex || $items[$itemIndex]['is_primary']) { $primarySourceIndex ??= $sourceIndex; $primaryIndex = (string) $itemIndex; } } if ($items !== [] && ! isset($primaryIndex)) { $primaryIndex = '0'; } @endphp
{{ $group['title'] }}
@foreach($items as $index => $item)
{{ $item['value'] }}
@endforeach
@foreach($errors->getMessages() as $errorField => $messages) @if(str_starts_with($errorField, "contacts.{$type}.")) @foreach($messages as $message) {{ $message }} @endforeach @endif @endforeach
@endforeach