'name', 'order' => 'ASC', 'posts_per_page' => -1 ]; return wc_get_products($args); } private static function mapProducts($products = []) { $result = []; if (!empty($products) && is_array($products)) { foreach ($products as $product) { $result[] = self::productDTO($product); } } return $result; } private static function productDTO($product) { $hasAvailableVariation = AlkubotProductHelper::hasAvailableVariation($product->get_id()); if ($hasAvailableVariation) { $variations = AlkubotProductHelper::getProductVariations($product->get_id()); $prices = AlkubotProductHelper::getVariableProductPrices($variations); } else { $prices = AlkubotProductHelper::getProductPrices($product); } return [ "id" => $product->get_id(), "name" => $product->get_name(), "minCurrentPrice" => $prices["regularMin"], "maxCurrentPrice" => $prices["regularMax"], "minSalePrice" => $prices["saleMin"], "maxSalePrice" => $prices["saleMax"], "imageUrl" => wp_get_attachment_url($product->get_image_id()), "currency" => AlkubotProductHelper::getCurrencySettings() ]; } private static function productDetailsDTO($product) { $hasAvailableVariation = AlkubotProductHelper::hasAvailableVariation($product->get_id()); if ($hasAvailableVariation) { $variations = AlkubotProductHelper::getProductVariations($product->get_id()); $prices = AlkubotProductHelper::getVariableProductPrices($variations); } else { $variations = []; $prices = AlkubotProductHelper::getProductPrices($product); } $isAvailable = true; if (!$product->is_in_stock() || !$product->is_purchasable()) { $isAvailable = false; } return [ "id" => $product->get_id(), "name" => $product->get_name(), "currentPrice" => $prices["regularMax"], "salePrice" => $prices["saleMax"], "isAvailable" => $isAvailable, "hasAvailableVariation" => $hasAvailableVariation, "variations" => $variations, "categoryIds" => $product->get_category_ids(), "imageUrl" => wp_get_attachment_url($product->get_image_id()), "currency" => AlkubotProductHelper::getCurrencySettings() ]; } }