36 lines
1.0 KiB
PHP
36 lines
1.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\BpnConnect;
|
|
|
|
use App\BpnConnect\Model\TravelMailingRecipient;
|
|
use App\BpnConnect\Model\TravelMailingResponse;
|
|
|
|
class TravelsClient extends AbstractApiClient
|
|
{
|
|
private const string MAILING_PATH = '/api/v1/travels/mailing';
|
|
|
|
/**
|
|
* An unknown travel code yields an empty list, not an error: bpn-connect cannot tell it
|
|
* apart from a travel without confirmed participants.
|
|
*/
|
|
public function getMailingRecipients(string $travelCode): TravelMailingResponse
|
|
{
|
|
$payload = $this->request(self::MAILING_PATH, [
|
|
'travelCode' => $travelCode,
|
|
]);
|
|
|
|
$recipients = array_map(
|
|
static fn (array $item) => new TravelMailingRecipient(
|
|
email: $item['email'],
|
|
firstName: $item['first_name'] ?? '',
|
|
lastName: $item['last_name'] ?? '',
|
|
),
|
|
$payload['data'] ?? [],
|
|
);
|
|
|
|
return new TravelMailingResponse($payload['meta']['travel_code'] ?? $travelCode, $recipients);
|
|
}
|
|
}
|