/** * @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; }
/** * @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; }