/**
  * @param OrdersCollection $ordersCollection
  * @param null $date
  * @return OrdersCollection
  */
 public function getTrackingStatusesForCollection(OrdersCollection $ordersCollection, $date = null)
 {
     $numberS = array();
     foreach ($ordersCollection as $order) {
         /* @var $order \ExpressRuSDK\Model\Entities\Order\Order */
         if ($order->getExpressRuNumber()) {
             $numberS[] = $order->getExpressRuNumber();
         }
     }
     if (!$numberS) {
         throw new \InvalidArgumentException('Empty orders numbers');
     }
     $method = new GetTrackingStatusesMethod($numberS, $date);
     $apiResponse = $this->apiTransmitter->transmitMethod($method);
     if ($apiResponse->isError()) {
         return $ordersCollection;
     }
     foreach ($apiResponse->getResult() as $number => $statusesArray) {
         $order = $ordersCollection->getByExpressRuNumber($number);
         $statusesCollection = new StatusesCollection();
         foreach ($statusesArray as $statusArray) {
             $status = new TrackingStatus($this->trackingStatusMetadata);
             $this->trackingStatusMapper->mapStatusFromArray($status, $statusArray);
             $statusesCollection[] = $status;
         }
         $order->setStatusesCollection($statusesCollection);
     }
     return $ordersCollection;
 }
Exemple #2
0
 /**
  * @param OrdersCollection $ordersCollection
  * @param \DateTime|null $date
  * @return array
  */
 public function getTrackingStatusesForCollection(OrdersCollection $ordersCollection, \DateTime $date = null)
 {
     $numberS = array();
     foreach ($ordersCollection as $order) {
         /* @var $order \ExpressRuSDK\Model\Entities\Order\Order */
         if ($order->getExpressRuNumber()) {
             $numberS[] = $order->getExpressRuNumber();
         }
     }
     if (!$numberS) {
         throw new \InvalidArgumentException('Empty orders numbers');
     }
     $dateText = $date instanceof \DateTime ? $date->format('Y-m-d H:i') : null;
     $method = new GetTrackingStatusesMethod($numberS, $dateText);
     $apiResponse = $this->apiTransmitter->transmitMethod($method);
     $statusesResultArray = array();
     if ($apiResponse->isError()) {
         return $statusesResultArray;
     }
     foreach ($apiResponse->getResult() as $number => $statusesArray) {
         $statusesCollection = new StatusesCollection();
         foreach ($statusesArray as $statusArray) {
             $status = new TrackingStatus($this->trackingStatusMetadata);
             $this->trackingStatusMapper->mapStatusFromArray($status, $statusArray);
             $statusesCollection[] = $status;
         }
         $statusesResultArray[$number] = $statusesCollection;
     }
     return $statusesResultArray;
 }