<?php
/**
 * Product Selector
 *
 * @package WC_Composable_Product
 */

namespace WC_Composable_Product;

defined('ABSPATH') || exit;

/**
 * Product Selector Class
 *
 * Handles rendering the product selection interface
 */
class Product_Selector {
    /**
     * Render product selector
     *
     * @param Product_Type $product Composable product
     */
    public static function render($product) {
        if (!$product || $product->get_type() !== 'composable') {
            return;
        }

        $available_products = $product->get_available_products();
        $selection_limit = $product->get_selection_limit();
        $pricing_mode = $product->get_pricing_mode();

        $show_images = get_option('wc_composable_show_images', 'yes') === 'yes';
        $show_prices = get_option('wc_composable_show_prices', 'yes') === 'yes';
        $show_total = get_option('wc_composable_show_total', 'yes') === 'yes';

        // Get stock manager for stock information
        $stock_manager = new Stock_Manager();

        // Prepare product data for template
        $products_data = [];
        foreach ($available_products as $available_product) {
            $stock_info = $stock_manager->get_product_stock_info($available_product->get_id());

            $products_data[] = [
                'id' => $available_product->get_id(),
                'name' => $available_product->get_name(),
                'price' => $available_product->get_price(),
                'price_html' => $available_product->get_price_html(),
                'image_url' => wp_get_attachment_image_url($available_product->get_image_id(), 'thumbnail'),
                'permalink' => $available_product->get_permalink(),
                'stock_status' => $stock_info['stock_status'],
                'in_stock' => $stock_info['in_stock'],
                'stock_quantity' => $stock_info['stock_quantity'],
                'managing_stock' => $stock_info['managing_stock'],
                'backorders_allowed' => $stock_info['backorders_allowed'],
            ];
        }

        $context = [
            'product_id' => $product->get_id(),
            'products' => $products_data,
            'selection_limit' => $selection_limit,
            'pricing_mode' => $pricing_mode,
            'show_images' => $show_images,
            'show_prices' => $show_prices,
            'show_total' => $show_total,
            'fixed_price' => $product->get_price(),
            'currency_symbol' => get_woocommerce_currency_symbol(),
        ];

        // Render template
        $plugin = Plugin::instance();
        echo $plugin->render_template('product-selector.twig', $context);
    }
}
