61 lines
1.8 KiB
PHP
61 lines
1.8 KiB
PHP
<?php
|
|
|
|
use x13allegro\Api\Model\Offers\Enum\PublicationStatus;
|
|
|
|
final class XAllegroSyncStatuses extends XAllegroSync
|
|
{
|
|
/**
|
|
* @param int $lastAuctionId
|
|
* @param array $close_auctions
|
|
* @return bool
|
|
*/
|
|
public static function syncAuctionStatuses($lastAuctionId, array &$close_auctions = null)
|
|
{
|
|
$result = Db::getInstance()->executeS('
|
|
SELECT a.`id_xallegro_auction`, a.`id_xallegro_account`, a.`id_auction`, a.`quantity`
|
|
FROM `'._DB_PREFIX_.'xallegro_auction` a
|
|
JOIN `'._DB_PREFIX_.'xallegro_account` ac
|
|
ON a.`id_xallegro_account` = ac.`id_xallegro_account`
|
|
WHERE a.`id_xallegro_auction` > ' . (int)$lastAuctionId . '
|
|
AND a.`id_xallegro_account` > 0
|
|
AND ac.`active` = 1
|
|
LIMIT 200'
|
|
);
|
|
|
|
if (!$result) {
|
|
return false;
|
|
}
|
|
|
|
foreach ($result as $auction)
|
|
{
|
|
if (!self::changeAccount($auction['id_xallegro_account'])) {
|
|
continue;
|
|
}
|
|
|
|
$lastAuctionId = $auction['id_xallegro_auction'];
|
|
|
|
try {
|
|
$offer = self::$api->sale()->offers()->getDetails($auction['id_auction']);
|
|
}
|
|
catch (Exception $ex) {
|
|
if ($ex->getCode() == 404) {
|
|
XAllegroAuction::archiveAuctions([$auction['id_auction']]);
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
// synchronize local quantity
|
|
if ($auction['quantity'] != $offer->stock->available) {
|
|
XAllegroAuction::updateAuctionQuantity($offer->stock->available, $offer->id);
|
|
}
|
|
|
|
if ($offer->publication->status == PublicationStatus::ENDED) {
|
|
$close_auctions[] = $auction['id_auction'];
|
|
}
|
|
}
|
|
|
|
return $lastAuctionId;
|
|
}
|
|
}
|