67 lines
2.2 KiB
PHP
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,
|
|
);
|
|
}
|
|
}
|