Files
interblue.pl/modules/x13allegro/classes/php5/Sync/XAllegroSyncStatuses.php
2024-10-25 14:16:28 +02:00

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;
}
}