Files
ednotif-bundle/src/Bovin/Mapper/CreateSortieResponseMapper.php
2026-04-22 14:56:36 +02:00

67 lines
2.2 KiB
PHP

<?php
declare(strict_types=1);
namespace Malio\EdnotifBundle\Bovin\Mapper;
use Malio\EdnotifBundle\Bovin\Dto\CreateSortieResponseDto;
use Malio\EdnotifBundle\Shared\Mapper\StandardResponseMapper;
final class CreateSortieResponseMapper
{
use BovinNodeMappingTrait;
public function __construct(
private readonly StandardResponseMapper $standardResponseMapper,
) {}
public function map(object $soapResponse): CreateSortieResponseDto
{
$standardResponse = $this->standardResponseMapper->map($soapResponse->ReponseStandard ?? null);
$specific = $soapResponse->ReponseSpecifique ?? null;
$pending = false;
$identification = null;
$entryMovement = null;
$exitMovement = null;
if (is_object($specific)) {
$pendingFlag = $specific->AttenteValidationBDNi ?? null;
if (null !== $pendingFlag) {
$pending = (bool) $this->toNullableBool($pendingFlag);
}
$validee = $specific->SortieValidee ?? null;
if (is_object($validee)) {
$identityNode = $validee->IdentiteBovin ?? null;
if (is_object($identityNode)) {
$identification = $this->mapIdentification($identityNode);
}
$mouvementBovin = $validee->MouvementBovin ?? null;
if (is_object($mouvementBovin)) {
$entryNode = $mouvementBovin->MouvementEntreeBovin ?? null;
if (is_object($entryNode)) {
$entryMovement = $this->mapMovement($entryNode, 'entry');
}
$exitNode = $mouvementBovin->MouvementSortieBovin ?? null;
if (is_object($exitNode)) {
$exitMovement = $this->mapMovement($exitNode, 'exit');
}
}
}
}
return new CreateSortieResponseDto(
standardResponse: $standardResponse,
pendingBdniValidation: $pending,
identification: $identification,
entryMovement: $entryMovement,
exitMovement: $exitMovement,
rawSoapResponse: $soapResponse,
);
}
}