diff --git a/src/ApiResource/Gateway/ChargeApiResource.php b/src/ApiResource/Gateway/ChargeApiResource.php index a9fa516..6e61812 100644 --- a/src/ApiResource/Gateway/ChargeApiResource.php +++ b/src/ApiResource/Gateway/ChargeApiResource.php @@ -6,11 +6,13 @@ use ApiPlatform\Doctrine\Orm\Filter; use ApiPlatform\Doctrine\Orm\State\Options; use ApiPlatform\Metadata as API; use App\ApiResource\Accounting\AccountingApiResource; +use App\Dto\Gateway\ChargeUpdateDto; use App\Entity\Gateway\Charge; use App\Entity\Money; use App\Gateway\ChargeStatus; use App\Gateway\ChargeType; use App\State\ApiResourceStateProvider; +use App\State\Gateway\ChargeStateProcessor; use Symfony\Component\Validator\Constraints as Assert; /** @@ -23,7 +25,10 @@ use Symfony\Component\Validator\Constraints as Assert; )] #[API\Get()] #[API\GetCollection(security: "is_granted('IS_AUTHENTICATED_FULLY')")] -#[API\Patch()] +#[API\Patch( + input: ChargeUpdateDto::class, + processor: ChargeStateProcessor::class, +)] class ChargeApiResource { #[API\ApiProperty(writable: false, identifier: true)] @@ -78,5 +83,5 @@ class ChargeApiResource */ #[Assert\NotBlank()] #[API\ApiFilter(Filter\SearchFilter::class, properties: ['status' => 'exact'])] - public ChargeStatus $status; + public ChargeStatus $status = ChargeStatus::Pending; } diff --git a/src/Dto/Gateway/ChargeUpdateDto.php b/src/Dto/Gateway/ChargeUpdateDto.php new file mode 100644 index 0000000..7c2557a --- /dev/null +++ b/src/Dto/Gateway/ChargeUpdateDto.php @@ -0,0 +1,17 @@ +autoMapper->map($uriVariables, $data); + + // /** @var Charge */ + // $charge = $this->autoMapper->map($data, Charge::class); + // } + + // $charge = $this->entityStateProcessor->process($charge, $operation, $uriVariables, $context); + $charge = $this->entityStateProcessor->process($data, $operation, $uriVariables, $context); + + if ($charge === null) { + return null; + } + + return $this->autoMapper->map($charge, ChargeApiResource::class); + } +}