return $result;
}
+
+ /**
+ * Статический метод для получения информации о заданном количестве продуктов.
+ *
+ * @param int $limit Количество продуктов, которые нужно получить.
+ * @return array
+ */
+ public static function getSomeProductsInfo($limit)
+ {
+ $products = Products1c::find()
+ ->where(['tip' => 'products'])
+ ->andWhere(['not', ['components' => '']])
+ ->limit($limit)
+ ->all();
+
+ $result = [];
+
+ foreach ($products as $product) {
+ $components = json_decode($product->components, true);
+ $composition = [];
+
+ foreach ($components as $componentId => $quantity) {
+ $component = Products1c::findOne(['id' => $componentId]);
+ if ($component && $quantity > 0) {
+ $composition[] = [
+ 'name' => $component->name,
+ 'quantity' => $quantity,
+ 'unit' => 'шт'
+ ];
+ }
+ }
+
+ $result[] = [
+ 'id' => $product->id,
+ 'name' => $product->name,
+ 'pictures' => self::getProductPictureUrl($product->id),
+ 'price' => self::getProductPrice($product->id),
+ 'oldprice' => self::getProductOldPrice($product->id),
+ 'description' => self::getProductDescription($product->id),
+ 'qty' => self::getProductQty($product->id),
+ 'weight' => self::getProductWeight($product->id),
+ 'minorder' => self::getProductMinOrder($product->id),
+ 'composition' => $composition,
+ 'available' => self::getProductAvailability($product->id)
+ ];
+ }
+
+ return $result;
+ }
+
/**
* Статический метод для создания XML-фида на основе информации о продуктах.
*
foreach ($productsInfo as $product) {
$offer = $offers->addChild('offer');
$offer->addAttribute('id', $product['id']);
+ $offer->addAttribute('available', $product['available'] ? 'true' : 'false');
$offer->addChild('name', htmlspecialchars($product['name']));
//TODO добавить url на конкректный букет
$offer->addChild('url', 'https://bazacvetov24.ru/flowers/' . $product['id']);
// Приватные статические вспомогательные методы
private static function getProductPictureUrl($productId) {
- return ['https://files.erp24.ru/pic.jpg'];
+ return ['https://bazacvetov24.ru/products/5339/51-roza-premium_3326_md.jpg'];
}
private static function getProductPrice($productId) {
$price = Prices::find()
}
private static function getProductOldPrice($productId) { return null; }
private static function getProductDescription($productId) { return 'Описание'; }
- private static function getProductQty($productId) { return 100; }
+ private static function getProductQty($productId) { return 1; }
private static function getProductWeight($productId) {
return null;
}
return 1;
}
private static function getProductAvailability($productId) {
- return true;
+ return false;
}
}