src/Entity/Finance/Quotation.php line 72

  1. <?php
  2. namespace App\Entity\Finance;
  3. use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
  4. use ApiPlatform\Metadata\ApiFilter;
  5. use ApiPlatform\Metadata\ApiResource;
  6. use ApiPlatform\Metadata\GetCollection;
  7. use ApiPlatform\Metadata\Link;
  8. use ApiPlatform\Metadata\Post;
  9. use App\Dto\Common\ObservationInput;
  10. use App\Dto\Finance\QuoteableInput;
  11. use App\Dto\Finance\QuoteableStatusInput;
  12. use App\Entity\Expediting\ShippingPlan;
  13. use App\Processor\Finance\QuotationInputProcessor;
  14. use App\Processor\Finance\QuotationObservationProcessor;
  15. use App\Processor\Finance\QuotationStatusInputProcessor;
  16. use Doctrine\ORM\Mapping as ORM;
  17. #[ORM\Entity]
  18. #[ApiResource(
  19.     routePrefix'/finance',
  20.     inputQuoteableInput::class,
  21.     order: ['id' => 'DESC'],
  22.     processorQuotationInputProcessor::class
  23. )]
  24. #[ApiResource(
  25.     operations: [
  26.         new GetCollection(
  27.             uriTemplate'/quotations/{identifier}/editions',
  28.             uriVariables: [
  29.                 'identifier' => new Link(fromProperty'editions'fromClassQuotation::class),
  30.             ],
  31.             paginationEnabledfalse,
  32.             order: ['id' => 'DESC'],
  33.         ),
  34.     ],
  35.     routePrefix'/finance',
  36. )]
  37. #[ApiResource(
  38.     uriTemplate'/expediting/shipping_plans/{identifier}/quotations',
  39.     operations: [new GetCollection(name'get_quotations_by_shipping_plan')],
  40.     uriVariables: [
  41.         'identifier' => new Link(fromProperty'quotations'fromClassShippingPlan::class),
  42.     ],
  43. )]
  44. #[ApiResource(
  45.     operations: [
  46.         new Post(
  47.             uriTemplate'/quotations/{identifier}/amend',
  48.             inputQuoteableInput::class,
  49.             processorQuotationInputProcessor::class,
  50.         ),
  51.         new Post(
  52.             uriTemplate'/quotations/{identifier}/status',
  53.             inputQuoteableStatusInput::class,
  54.             processorQuotationStatusInputProcessor::class,
  55.         ),
  56.         new Post(
  57.             uriTemplate'/quotations/{identifier}/observations',
  58.             inputObservationInput::class,
  59.             processorQuotationObservationProcessor::class
  60.         ),
  61.     ],
  62.     routePrefix'/finance',
  63. )]
  64. #[ApiFilter(SearchFilter::class, properties: [
  65.     'status' => 'exact',
  66.     'number' => 'ipartial',
  67.     'shippingPlan.workOrder.reference' => 'ipartial',
  68. ])]
  69. class Quotation extends BaseQuotation
  70. {
  71. }