feat: admin view listing a travel's mailing recipients from bpn-connect
This commit is contained in:
1 parent
63ffe0b0b4
commit
e796dd01ee
10 files changed
+347
No files matched your search
@@ -0,0 +1,35 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user