fix: only assign dummy data to the applicant
This commit is contained in:
@@ -23,8 +23,9 @@ class PersonalDataSynchronizer
|
||||
* Processes all active participants (status 'F' or 'A'). Skips canceled participants (status 'S').
|
||||
* Updates all personal data fields and communication information.
|
||||
*
|
||||
* For the applicant (index 0), missing mandatory fields are filled with defaults
|
||||
* to handle company applicants created by travel agencies.
|
||||
* Also fills missing mandatory fields on the applicant object for company bookings
|
||||
* created by travel agencies. The applicant is separate from participant 0 and may
|
||||
* contain only company data without personal fields required by the BPN API.
|
||||
*
|
||||
* IMPORTANT: The applicant's address must never be modified. This method updates
|
||||
* participant addresses independently to ensure applicant data remains intact.
|
||||
@@ -34,17 +35,16 @@ class PersonalDataSynchronizer
|
||||
*/
|
||||
public function updateParticipantPersonalData(array $participants, Booking $bookingData): void
|
||||
{
|
||||
// Fill missing mandatory fields on applicant (for company bookings by travel agencies)
|
||||
// This is separate from participants - applicant may be a company while participants are real people
|
||||
$this->fillMissingApplicantFields($bookingData);
|
||||
|
||||
foreach ($participants as $participant) {
|
||||
// Skip canceled participants (status 'S')
|
||||
if ('S' === $participant->status) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Fill missing mandatory fields for applicant (company bookings by travel agencies)
|
||||
if (0 === $participant->index) {
|
||||
$this->fillMissingMandatoryFields($participant);
|
||||
}
|
||||
|
||||
$bookingData->participants[$participant->index]->firstName = $participant->firstName;
|
||||
$bookingData->participants[$participant->index]->name = $participant->lastName;
|
||||
$bookingData->participants[$participant->index]->dateOfBirth = $participant->dateOfBirth;
|
||||
@@ -78,32 +78,43 @@ class PersonalDataSynchronizer
|
||||
}
|
||||
|
||||
/**
|
||||
* Fills missing mandatory fields with defaults for company applicants.
|
||||
* Fills missing mandatory fields on the applicant for company bookings.
|
||||
*
|
||||
* Travel agencies often create bookings with company data as the applicant,
|
||||
* which lacks personal data fields. These fields are mandatory for the BPN
|
||||
* API, so we fill them with sensible defaults.
|
||||
* API, so we fill them with sensible defaults. The applicant is separate from
|
||||
* participants - participant 0 is a real person and must not be modified here.
|
||||
*/
|
||||
private function fillMissingMandatoryFields(ParticipantDto $participant): void
|
||||
private function fillMissingApplicantFields(Booking $bookingData): void
|
||||
{
|
||||
if (null === $participant->firstName || '' === $participant->firstName) {
|
||||
$participant->firstName = 'Anmelder';
|
||||
if (null === $bookingData->applicant) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (null === $participant->gender || '' === $participant->gender) {
|
||||
$participant->gender = 'D';
|
||||
$applicant = $bookingData->applicant;
|
||||
|
||||
if (null === $applicant->firstName || '' === $applicant->firstName) {
|
||||
$applicant->firstName = 'Anmelder';
|
||||
}
|
||||
|
||||
if (null === $participant->nationality || '' === $participant->nationality) {
|
||||
$participant->nationality = 'D';
|
||||
if (null === $applicant->gender || '' === $applicant->gender) {
|
||||
$applicant->gender = 'D';
|
||||
}
|
||||
|
||||
if (null === $participant->dateOfBirth) {
|
||||
$participant->dateOfBirth = new \DateTimeImmutable('-20 years');
|
||||
if (null === $applicant->nationality || '' === $applicant->nationality) {
|
||||
$applicant->nationality = 'D';
|
||||
}
|
||||
|
||||
if (null === $participant->mobile || '' === $participant->mobile) {
|
||||
$participant->mobile = '12345';
|
||||
if (null === $applicant->dateOfBirth) {
|
||||
$applicant->dateOfBirth = new \DateTimeImmutable('-20 years');
|
||||
}
|
||||
|
||||
if (null === $applicant->communication) {
|
||||
$applicant->communication = new Communication();
|
||||
}
|
||||
|
||||
if (null === $applicant->communication->mobile || '' === $applicant->communication->mobile) {
|
||||
$applicant->communication->mobile = '12345';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user