classes/XLite/Model/OrderTrackingNumber.php line 96

Open in your IDE?
  1. <?php
  2. /**
  3.  * Copyright (c) 2001-present X-Cart Holdings LLC. All rights reserved.
  4.  * See https://www.x-cart.com/license-agreement.html for license details.
  5.  */
  6. namespace XLite\Model;
  7. use ApiPlatform\Core\Annotation as ApiPlatform;
  8. use Doctrine\ORM\Mapping as ORM;
  9. use XLite\API\Endpoint\OrderTrackingNumber\DTO\OrderTrackingNumberInput;
  10. use XLite\API\Endpoint\OrderTrackingNumber\DTO\OrderTrackingNumberOutput;
  11. use XLite\Controller\API\OrderTrackingNumber\DeleteOrderTrackingNumber;
  12. /**
  13.  * Order tracking number
  14.  *
  15.  * @ORM\Entity
  16.  * @ORM\Table (name="order_tracking_number")
  17.  * @ApiPlatform\ApiResource(
  18.  *      attributes={"pagination_enabled"=false},
  19.  *      shortName="Tracking numbers",
  20.  *      output=OrderTrackingNumberOutput::class,
  21.  *      itemOperations={
  22.  *          "get"={
  23.  *              "method"="GET",
  24.  *              "path"="/orders/{id}/tracking_number/{tracking_number_id}.{_format}",
  25.  *              "identifiers"={"id", "tracking_number_id"},
  26.  *              "requirements"={"id"="\d+", "tracking_number_id"="\d+"},
  27.  *              "openapi_context"={
  28.  *                   "summary"="Retrieve tracking number from order",
  29.  *                   "parameters"={
  30.  *                       {"name"="id", "in"="path", "required"=true, "schema"={"type"="integer"}},
  31.  *                       {"name"="tracking_number_id", "in"="path", "required"=true, "schema"={"type"="integer"}},
  32.  *                   },
  33.  *              },
  34.  *           },
  35.  *          "delete"={
  36.  *              "method"="DELETE",
  37.  *              "path"="/orders/{id}/tracking_number/{tracking_number_id}.{_format}",
  38.  *              "identifiers"={"id", "tracking_number_id"},
  39.  *              "requirements"={"id"="\d+", "tracking_number_id"="\d+"},
  40.  *              "controller"=DeleteOrderTrackingNumber::class,
  41.  *              "read"=false,
  42.  *              "openapi_context"={
  43.  *                   "summary"="Delete tracking number from order",
  44.  *                   "parameters"={
  45.  *                       {"name"="id", "in"="path", "required"=true, "schema"={"type"="integer"}},
  46.  *                       {"name"="tracking_number_id", "in"="path", "required"=true, "schema"={"type"="integer"}},
  47.  *                   },
  48.  *              },
  49.  *          },
  50.  *      },
  51.  *      collectionOperations={
  52.  *           "get"={
  53.  *               "method"="GET",
  54.  *               "path"="/orders/{id}/tracking_number.{_format}",
  55.  *               "identifiers"={"id"},
  56.  *               "requirements"={"id"="\d+"},
  57.  *               "openapi_context"={
  58.  *                   "summary"="Retrieve a list of tracking numbers from an order",
  59.  *                   "parameters"={
  60.  *                       {"name"="id", "in"="path", "required"=true, "schema"={"type"="integer"}}
  61.  *                   }
  62.  *               }
  63.  *           },
  64.  *          "post"={
  65.  *              "method"="POST",
  66.  *              "input"=OrderTrackingNumberInput::class,
  67.  *              "path"="/orders/{id}/tracking_number.{_format}",
  68.  *              "identifiers"={"id"},
  69.  *              "requirements"={"id"="\d+"},
  70.  *              "openapi_context"={
  71.  *                   "summary"="Add tracking number to order",
  72.  *                   "parameters"={
  73.  *                       {"name"="id", "in"="path", "required"=true, "schema"={"type"="integer"}}
  74.  *                   }
  75.  *               }
  76.  *           },
  77.  *           "get_tracking_number_by_order_number"={
  78.  *               "method"="GET",
  79.  *               "path"="/orders/by_number/{orderNumber}/tracking_number.{_format}",
  80.  *               "identifiers"={"orderNumber"},
  81.  *               "requirements"={"orderNumber"="\w+"},
  82.  *               "openapi_context"={
  83.  *                    "summary"="Retrieve a list of tracking numbers by order number",
  84.  *                    "parameters"={
  85.  *                        {"name"="orderNumber", "in"="path", "required"=true, "schema"={"type"="string"}},
  86.  *                    },
  87.  *               },
  88.  *           },
  89.  *      }
  90.  *  )
  91.  */
  92. class OrderTrackingNumber extends \XLite\Model\AEntity
  93. {
  94.     /**
  95.      * Order tracking number unique id
  96.      *
  97.      * @var mixed
  98.      *
  99.      * @ORM\Id
  100.      * @ORM\GeneratedValue (strategy="AUTO")
  101.      * @ORM\Column         (type="integer")
  102.      */
  103.     protected $tracking_id;
  104.     /**
  105.      * Value
  106.      *
  107.      * @var string
  108.      *
  109.      * @ORM\Column (type="text")
  110.      */
  111.     protected $value;
  112.     /**
  113.      * Order tracking creation date
  114.      *
  115.      * @var integer
  116.      *
  117.      * @ORM\Column (type="integer")
  118.      */
  119.     protected $creationDate;
  120.     /**
  121.      * Relation to a order entity
  122.      *
  123.      * @var \XLite\Model\Order
  124.      *
  125.      * @ORM\ManyToOne  (targetEntity="XLite\Model\Order", inversedBy="trackingNumbers", fetch="LAZY")
  126.      * @ORM\JoinColumn (name="order_id", referencedColumnName="order_id", onDelete="CASCADE")
  127.      */
  128.     protected $order;
  129.     /**
  130.      * Get tracking_id
  131.      *
  132.      * @return integer
  133.      */
  134.     public function getTrackingId()
  135.     {
  136.         return $this->tracking_id;
  137.     }
  138.     /**
  139.      * Set value
  140.      *
  141.      * @param string $value
  142.      * @return OrderTrackingNumber
  143.      */
  144.     public function setValue($value)
  145.     {
  146.         if ($this->isChanged($value)) {
  147.             $this->setCreationDate();
  148.         }
  149.         $this->value $value;
  150.         return $this;
  151.     }
  152.     /**
  153.      * Get value
  154.      *
  155.      * @return string
  156.      */
  157.     public function getValue()
  158.     {
  159.         return $this->value;
  160.     }
  161.     /**
  162.      * Set order
  163.      *
  164.      * @param \XLite\Model\Order $order
  165.      * @return OrderTrackingNumber
  166.      */
  167.     public function setOrder(\XLite\Model\Order $order null)
  168.     {
  169.         $this->order $order;
  170.         return $this;
  171.     }
  172.     /**
  173.      * Get order
  174.      *
  175.      * @return \XLite\Model\Order
  176.      */
  177.     public function getOrder()
  178.     {
  179.         return $this->order;
  180.     }
  181.     /**
  182.      * Set creation date
  183.      *
  184.      * @return OrderTrackingNumber
  185.      */
  186.     public function setCreationDate()
  187.     {
  188.         $this->creationDate time();
  189.         return $this;
  190.     }
  191.     /**
  192.      * Get creation date
  193.      *
  194.      * @return creationDate
  195.      */
  196.     public function getCreationDate()
  197.     {
  198.         return $this->creationDate;
  199.     }
  200.     /**
  201.      * Checks if the tracking number is changed
  202.      *
  203.      * @param string $value
  204.      * @return boolean
  205.      */
  206.     private function isChanged($value)
  207.     {
  208.         return $this->value !== $value;
  209.     }
  210. }