CustomerOrderItemsResolver.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. namespace Webkul\BagistoApi\Resolver;
  3. use ApiPlatform\GraphQl\Resolver\FieldResolverInterface;
  4. use ApiPlatform\GraphQl\Resolver\ResourceFieldResolver;
  5. use ApiPlatform\Metadata\GraphQl\Operation;
  6. use GraphQL\Type\Definition\ResolveInfo;
  7. use Webkul\BagistoApi\Models\CustomerOrder;
  8. /**
  9. * Custom field resolver for CustomerOrder.items
  10. * Ensures qty fields are always included in nested item responses
  11. */
  12. class CustomerOrderItemsResolver implements FieldResolverInterface
  13. {
  14. public function __construct(
  15. private readonly ResourceFieldResolver $resourceFieldResolver,
  16. ) {}
  17. public function __invoke($source, array $args, mixed $context, ResolveInfo $info): mixed
  18. {
  19. // Get the items through the default resolver
  20. $result = ($this->resourceFieldResolver)($source, $args, $context, $info);
  21. // If source is a CustomerOrder instance, ensure qty fields are accessible
  22. if ($source instanceof CustomerOrder && $source->items) {
  23. // Ensure all items have qty fields explicitly set in their attributes
  24. // This is handled by the FixedSerializerContextBuilder and toArray override
  25. // Just return the items collection as-is
  26. return $source->items;
  27. }
  28. return $result;
  29. }
  30. }