<?php
/**
 * Tech Repair Orders Admin
 *
 * @package Tech_Repair_Service
 */

// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * Tech_Repair_Orders Class
 */
class Tech_Repair_Orders {

    /**
     * Constructor
     */
    public function __construct() {
        // Add admin menu
        add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
        
        // Add custom column to orders list
        add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_type_column' ) );
        add_action( 'manage_shop_order_posts_custom_column', array( $this, 'display_order_type_column' ), 10, 2 );
        
        // Add order meta box
        add_action( 'add_meta_boxes', array( $this, 'add_repair_details_meta_box' ) );
        
        // Enqueue admin styles
        add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) );
    }
    
    /**
     * Enqueue admin styles
     */
    public function enqueue_admin_styles( $hook ) {
        // Проверяем, что мы на странице заказов ремонта
        if ( 'toplevel_page_tech-repair-orders' === $hook ) {
            // Подключаем Dashicons
            wp_enqueue_style( 'dashicons' );
            
            // Подключаем наши стили
            wp_enqueue_style(
                'tech-repair-orders',
                TECH_REPAIR_PLUGIN_URL . 'assets/css/tech-repair-orders.css',
                array(),
                TECH_REPAIR_VERSION
            );
        }
    }

    /**
     * Add admin menu
     */
    public function add_admin_menu() {
        // Получаем количество активных заказов ремонта
        $active_repair_orders_count = 0;
        
        // Проверяем, что WooCommerce активен
        if ( class_exists( 'WooCommerce' ) ) {
            // Получаем активные заказы ремонта (со статусом processing или on-hold)
            $active_repair_orders = $this->get_repair_orders( array( 'processing', 'on-hold' ) );
            $active_repair_orders_count = count( $active_repair_orders );
        }
        
        // Добавляем счетчик активных заказов в название меню
        $menu_title = esc_html__( 'Repair Orders', 'tech-repair-service' );
        if ( $active_repair_orders_count > 0 ) {
            $menu_title .= ' <span class="awaiting-mod">' . $active_repair_orders_count . '</span>';
        }
        
        // Добавляем пункт в главное меню
        add_menu_page(
            esc_html__( 'Repair Orders', 'tech-repair-service' ),
            $menu_title,
            'manage_woocommerce',
            'tech-repair-orders',
            array( $this, 'render_orders_page' ),
            'dashicons-admin-tools', // Иконка инструментов для ремонта
            25 // Позиция в меню (выше, сразу после Записей)
        );
    }

    /**
     * Render orders page
     */
    public function render_orders_page() {
        // Check if WooCommerce is active
        if ( ! class_exists( 'WooCommerce' ) ) {
            echo '<div class="notice notice-error"><p>';
            esc_html_e( 'WooCommerce is required for this feature.', 'tech-repair-service' );
            echo '</p></div>';
            return;
        }
        
        // Обработка фильтров
        $status_filter = isset( $_GET['order_status'] ) ? sanitize_text_field( $_GET['order_status'] ) : '';
        $date_filter = isset( $_GET['date_filter'] ) ? sanitize_text_field( $_GET['date_filter'] ) : '';
        $search_query = isset( $_GET['search'] ) ? sanitize_text_field( $_GET['search'] ) : '';
        
        // Получаем заказы с учетом фильтров
        $repair_orders = $this->get_repair_orders( $status_filter, $date_filter, $search_query );
        
        // Page title
        echo '<div class="wrap">';
        echo '<h1>' . esc_html__( 'Repair Orders', 'tech-repair-service' ) . '</h1>';
        
        // Информационная панель
        $this->display_dashboard( $repair_orders );
        
        // Display orders table
        $this->display_orders_table( $repair_orders );
        
        echo '</div>';
    }
    
    /**
     * Get repair orders
     *
     * @param string $status_filter Optional status filter
     * @param string $date_filter Optional date filter
     * @param string $search_query Optional search query
     * @return array Array of WC_Order objects
     */
    private function get_repair_orders( $status_filter = '', $date_filter = '', $search_query = '' ) {
        // Prepare status filter (Подготовка фильтра по статусу)
        // Use 'any' instead of array of statuses to avoid conflicts with WooCommerce core
        $status = 'any';
        if ( ! empty( $status_filter ) ) {
            $status = $status_filter;
        }
        
        // Prepare date filter (Подготовка фильтра по дате)
        $date_query = array();
        if ( ! empty( $date_filter ) ) {
            $today = current_time( 'Y-m-d' );
            
            switch ( $date_filter ) {
                case 'today':
                    $date_query = array(
                        'after'  => $today . ' 00:00:00',
                        'before' => $today . ' 23:59:59',
                    );
                    break;
                    
                case 'week':
                    $date_query = array(
                        'after' => date( 'Y-m-d', strtotime( '-7 days' ) ),
                    );
                    break;
                    
                case 'month':
                    $date_query = array(
                        'after' => date( 'Y-m-d', strtotime( '-30 days' ) ),
                    );
                    break;
            }
        }
        
        // Query arguments
        $args = array(
            'limit'        => -1,
            'type'         => 'shop_order',
            'status'       => $status,
            'return'       => 'objects',
            'orderby'      => 'date',
            'order'        => 'DESC',
        );
        
        // Добавляем фильтр по дате, если указан
        if ( ! empty( $date_query ) ) {
            $args['date_created'] = $date_query;
        }
        
        // Get orders
        $orders = wc_get_orders( $args );
        
        // Filter orders to include only those with tech repair products
        $repair_orders = array();
        
        foreach ( $orders as $order ) {
            $order_id = $order->get_id();
            $has_repair_product = get_post_meta( $order_id, '_has_tech_repair_products', true ) === 'yes';
            
            if ( ! $has_repair_product ) {
                // Проверяем заказ на наличие продуктов ремонта
                foreach ( $order->get_items() as $item ) {
                    $product_id = $item->get_product_id();
                    
                    if ( $product_id && get_post_meta( $product_id, '_tech_repair_product', true ) === 'yes' ) {
                        $has_repair_product = true;
                        // Добавляем метаданные для будущей фильтрации
                        update_post_meta( $order_id, '_has_tech_repair_products', 'yes' );
                        break;
                    }
                }
            }
            
            if ( ! $has_repair_product ) {
                continue; // Пропускаем заказы без продуктов ремонта
            }
            
            // Проверяем соответствие поисковому запросу
            $matches_search = empty( $search_query ); // Если поиск пуст, то заказ сразу соответствует
            
            if ( ! empty( $search_query ) ) {
                // Поиск по номеру заказа
                if ( strpos( $order->get_order_number(), $search_query ) !== false ) {
                    $matches_search = true;
                }
                
                // Поиск по имени клиента
                if ( ! $matches_search ) {
                    $customer_name = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();
                    if ( stripos( $customer_name, $search_query ) !== false ) {
                        $matches_search = true;
                    }
                }
                
                // Поиск по email клиента
                if ( ! $matches_search ) {
                    if ( stripos( $order->get_billing_email(), $search_query ) !== false ) {
                        $matches_search = true;
                    }
                }
                
                // Поиск по устройству и проблеме
                if ( ! $matches_search ) {
                    foreach ( $order->get_items() as $item ) {
                        $product_id = $item->get_product_id();
                        
                        if ( $product_id && get_post_meta( $product_id, '_tech_repair_product', true ) === 'yes' ) {
                            $device_id = get_post_meta( $product_id, '_tech_repair_device_id', true );
                            $issue_id = get_post_meta( $product_id, '_tech_repair_issue_id', true );
                            
                            if ( $device_id ) {
                                $device = get_post( $device_id );
                                if ( $device && stripos( $device->post_title, $search_query ) !== false ) {
                                    $matches_search = true;
                                    break;
                                }
                            }
                            
                            if ( $issue_id ) {
                                $issue = get_post( $issue_id );
                                if ( $issue && stripos( $issue->post_title, $search_query ) !== false ) {
                                    $matches_search = true;
                                    break;
                                }
                            }
                        }
                    }
                }
            }
            
            // Добавляем заказ в результаты, если он соответствует поиску
            if ( $matches_search ) {
                $repair_orders[] = $order;
            }
        }
        
        return $repair_orders;
    }
    
    /**
     * Display dashboard with key metrics
     *
     * @param array $orders Array of WC_Order objects
     */
    private function display_dashboard( $orders ) {
        // Подсчитываем статистику
        $total_revenue = 0;
        $device_stats = array();
        $issue_stats = array();
        $status_stats = array();
        $monthly_revenue = array();
        $total_completed = 0;
        $total_processing = 0;
        
        foreach ( $orders as $order ) {
            // Добавляем к общей выручке
            $total_revenue += $order->get_total();
            
            // Статистика по статусам
            $status = $order->get_status();
            if ( ! isset( $status_stats[$status] ) ) {
                $status_stats[$status] = 0;
            }
            $status_stats[$status]++;
            
            // Считаем завершенные и в процессе заказы
            if ( $status === 'completed' ) {
                $total_completed++;
            } elseif ( $status === 'processing' ) {
                $total_processing++;
            }
            
            // Статистика по месяцам
            $date = $order->get_date_created();
            if ( $date ) {
                $month_key = $date->date_i18n( 'Y-m' );
                if ( ! isset( $monthly_revenue[$month_key] ) ) {
                    $monthly_revenue[$month_key] = 0;
                }
                $monthly_revenue[$month_key] += $order->get_total();
            }
            
            // Собираем статистику по устройствам и проблемам
            foreach ( $order->get_items() as $item ) {
                $product_id = $item->get_product_id();
                
                if ( $product_id && get_post_meta( $product_id, '_tech_repair_product', true ) === 'yes' ) {
                    // Получаем информацию об устройстве и проблеме
                    $device_id = get_post_meta( $product_id, '_tech_repair_device_id', true );
                    $issue_id = get_post_meta( $product_id, '_tech_repair_issue_id', true );
                    
                    if ( $device_id ) {
                        $device = get_post( $device_id );
                        if ( $device ) {
                            $device_name = $device->post_title;
                            if ( ! isset( $device_stats[ $device_name ] ) ) {
                                $device_stats[ $device_name ] = 0;
                            }
                            $device_stats[ $device_name ]++;
                        }
                    }
                    
                    if ( $issue_id ) {
                        $issue = get_post( $issue_id );
                        if ( $issue ) {
                            $issue_name = $issue->post_title;
                            if ( ! isset( $issue_stats[ $issue_name ] ) ) {
                                $issue_stats[ $issue_name ] = 0;
                            }
                            $issue_stats[ $issue_name ]++;
                        }
                    }
                }
            }
        }
        
        // Отображаем информационную панель
        echo '<div class="tech-repair-orders-stats">';
        echo '<h3>' . esc_html__( 'Repair Orders Dashboard', 'tech-repair-service' ) . '</h3>';
        
        echo '<div class="tech-repair-stats-grid">';
        
        // Общая выручка
        echo '<div class="tech-repair-stats-item tech-repair-revenue">';
        echo '<h4>' . esc_html__( 'Total Revenue', 'tech-repair-service' ) . '</h4>';
        echo '<p class="tech-repair-stats-value">' . wc_price( $total_revenue ) . '</p>';
        echo '<p>' . sprintf( esc_html__( 'From %d repair orders', 'tech-repair-service' ), count( $orders ) ) . '</p>';
        echo '</div>';
        
        // Количество заказов
        echo '<div class="tech-repair-stats-item tech-repair-orders">';
        echo '<h4>' . esc_html__( 'Orders Status', 'tech-repair-service' ) . '</h4>';
        echo '<p class="tech-repair-stats-value">' . count( $orders ) . '</p>';
        
        // Добавляем информацию о завершенных и в процессе
        echo '<p>';
        echo '<span class="tech-repair-order-status status-completed">' . esc_html__( 'Completed', 'tech-repair-service' ) . '</span>: ' . $total_completed . ' &nbsp; ';
        echo '<span class="tech-repair-order-status status-processing">' . esc_html__( 'Processing', 'tech-repair-service' ) . '</span>: ' . $total_processing;
        echo '</p>';
        echo '</div>';
        
        // Статистика по статусам
        echo '<div class="tech-repair-stats-item tech-repair-status">';
        echo '<h4>' . esc_html__( 'Orders by Status', 'tech-repair-service' ) . '</h4>';
        if ( ! empty( $status_stats ) ) {
            echo '<ul>';
            foreach ( $status_stats as $status => $count ) {
                echo '<li><span class="tech-repair-order-status status-' . esc_attr( $status ) . '">' . 
                    esc_html( wc_get_order_status_name( $status ) ) . '</span>: ' . $count . '</li>';
            }
            echo '</ul>';
        } else {
            echo '<p>' . esc_html__( 'No data available', 'tech-repair-service' ) . '</p>';
        }
        echo '</div>';
        
        // Популярные устройства
        echo '<div class="tech-repair-stats-item tech-repair-devices">';
        echo '<h4>' . esc_html__( 'Popular Devices', 'tech-repair-service' ) . '</h4>';
        if ( ! empty( $device_stats ) ) {
            arsort( $device_stats );
            echo '<ol>';
            $count = 0;
            foreach ( $device_stats as $device => $num ) {
                echo '<li><strong>' . esc_html( $device ) . '</strong>: ' . $num . '</li>';
                $count++;
                if ( $count >= 5 ) break; // Показываем только топ-5
            }
            echo '</ol>';
        } else {
            echo '<p>' . esc_html__( 'No data available', 'tech-repair-service' ) . '</p>';
        }
        echo '</div>';
        
        // Популярные проблемы
        echo '<div class="tech-repair-stats-item tech-repair-issues">';
        echo '<h4>' . esc_html__( 'Common Issues', 'tech-repair-service' ) . '</h4>';
        if ( ! empty( $issue_stats ) ) {
            arsort( $issue_stats );
            echo '<ol>';
            $count = 0;
            foreach ( $issue_stats as $issue => $num ) {
                echo '<li><strong>' . esc_html( $issue ) . '</strong>: ' . $num . '</li>';
                $count++;
                if ( $count >= 5 ) break; // Показываем только топ-5
            }
            echo '</ol>';
        } else {
            echo '<p>' . esc_html__( 'No data available', 'tech-repair-service' ) . '</p>';
        }
        echo '</div>';
        
        echo '</div>'; // .tech-repair-stats-grid
        echo '</div>'; // .tech-repair-orders-stats
    }
    
    /**
     * Display orders table
     *
     * @param array $orders Array of WC_Order objects
     */
    private function display_orders_table( $orders ) {
        // If no orders found
        if ( empty( $orders ) ) {
            echo '<div class="notice notice-info"><p>';
            esc_html_e( 'No repair orders found.', 'tech-repair-service' );
            echo '</p></div>';
            return;
        }
        
        // Добавляем фильтры и поиск
        echo '<div class="tech-repair-orders-filters">';
        echo '<form method="get">';
        echo '<input type="hidden" name="page" value="tech-repair-orders" />';
        
        // Поиск
        echo '<div class="filter-item filter-search">';
        echo '<input type="text" name="search" placeholder="' . esc_attr__( 'Search by order #, customer, device or issue...', 'tech-repair-service' ) . '" value="' . 
            ( isset( $_GET['search'] ) ? esc_attr( sanitize_text_field( $_GET['search'] ) ) : '' ) . '" />';
        echo '</div>';
        
        // Фильтр по статусу заказа
        echo '<div class="filter-item filter-status">';
        echo '<select name="order_status">';
        echo '<option value="">' . esc_html__( 'All statuses', 'tech-repair-service' ) . '</option>';
        foreach ( wc_get_order_statuses() as $status => $label ) {
            $selected = isset( $_GET['order_status'] ) && $_GET['order_status'] === $status ? 'selected' : '';
            echo '<option value="' . esc_attr( $status ) . '" ' . $selected . '>' . esc_html( $label ) . '</option>';
        }
        echo '</select>';
        echo '</div>';
        
        // Фильтр по дате
        echo '<div class="filter-item filter-date">';
        echo '<select name="date_filter">';
        echo '<option value="">' . esc_html__( 'All dates', 'tech-repair-service' ) . '</option>';
        echo '<option value="today"' . ( isset( $_GET['date_filter'] ) && $_GET['date_filter'] === 'today' ? ' selected' : '' ) . '>' . 
            esc_html__( 'Today', 'tech-repair-service' ) . '</option>';
        echo '<option value="week"' . ( isset( $_GET['date_filter'] ) && $_GET['date_filter'] === 'week' ? ' selected' : '' ) . '>' . 
            esc_html__( 'This week', 'tech-repair-service' ) . '</option>';
        echo '<option value="month"' . ( isset( $_GET['date_filter'] ) && $_GET['date_filter'] === 'month' ? ' selected' : '' ) . '>' . 
            esc_html__( 'This month', 'tech-repair-service' ) . '</option>';
        echo '</select>';
        echo '</div>';
        
        // Кнопка фильтрации
        echo '<div class="filter-item filter-button">';
        echo '<input type="submit" class="button" value="' . esc_attr__( 'Apply Filters', 'tech-repair-service' ) . '" />';
        echo '</div>';
        
        // Кнопка сброса фильтров
        if ( isset( $_GET['search'] ) || isset( $_GET['order_status'] ) || isset( $_GET['date_filter'] ) ) {
            echo '<div class="filter-item filter-reset">';
            echo '<a href="' . esc_url( admin_url( 'admin.php?page=tech-repair-orders' ) ) . '" class="button button-secondary">' . 
                esc_html__( 'Reset', 'tech-repair-service' ) . '</a>';
            echo '</div>';
        }
        
        echo '</form>';
        echo '</div>';
        
        // Отображаем количество заказов
        echo '<div class="tablenav top">';
        echo '<div class="tablenav-pages">';
        echo '<span class="displaying-num">' . sprintf( _n( '%s order', '%s orders', count( $orders ), 'tech-repair-service' ), count( $orders ) ) . '</span>';
        echo '</div>';
        echo '</div>';
        
        // Table header
        echo '<table class="wp-list-table widefat fixed striped tech-repair-orders-table">';
        echo '<thead>';
        echo '<tr>';
        echo '<th class="column-order">' . esc_html__( 'Order', 'tech-repair-service' ) . '</th>';
        echo '<th class="column-date">' . esc_html__( 'Date', 'tech-repair-service' ) . '</th>';
        echo '<th class="column-status">' . esc_html__( 'Status', 'tech-repair-service' ) . '</th>';
        echo '<th class="column-customer">' . esc_html__( 'Customer', 'tech-repair-service' ) . '</th>';
        echo '<th class="column-device">' . esc_html__( 'Device', 'tech-repair-service' ) . '</th>';
        echo '<th class="column-issue">' . esc_html__( 'Issue', 'tech-repair-service' ) . '</th>';
        echo '<th class="column-service">' . esc_html__( 'Service Type', 'tech-repair-service' ) . '</th>';
        echo '<th class="column-total">' . esc_html__( 'Total', 'tech-repair-service' ) . '</th>';
        echo '<th class="column-actions">' . esc_html__( 'Actions', 'tech-repair-service' ) . '</th>';
        echo '</tr>';
        echo '</thead>';
        echo '<tbody>';
        
        // Table rows
        foreach ( $orders as $order ) {
            $order_id = $order->get_id();
            $order_number = $order->get_order_number();
            $order_date = $order->get_date_created();
            $order_status = $order->get_status();
            $order_total = $order->get_formatted_order_total();
            
            // Get customer info
            $customer_name = $order->get_billing_first_name() . ' ' . $order->get_billing_last_name();
            $customer_email = $order->get_billing_email();
            $customer_phone = $order->get_billing_phone();
            
            // Get repair items
            $repair_items = array();
            
            foreach ( $order->get_items() as $item ) {
                $product_id = $item->get_product_id();
                
                if ( $product_id && get_post_meta( $product_id, '_tech_repair_product', true ) === 'yes' ) {
                    // Получаем информацию об устройстве и проблеме
                    $device_id = get_post_meta( $product_id, '_tech_repair_device_id', true );
                    $issue_id = get_post_meta( $product_id, '_tech_repair_issue_id', true );
                    $option = get_post_meta( $product_id, '_tech_repair_option', true );
                    
                    $device = get_post( $device_id );
                    $issue = get_post( $issue_id );
                    
                    $repair_items[] = array(
                        'product_id' => $product_id,
                        'device' => $device ? $device->post_title : esc_html__( 'Unknown Device', 'tech-repair-service' ),
                        'issue' => $issue ? $issue->post_title : esc_html__( 'Unknown Issue', 'tech-repair-service' ),
                        'option' => $option,
                        'price' => $item->get_total(),
                    );
                }
            }
            
            // Для каждого элемента ремонта создаем отдельную строку
            if ( ! empty( $repair_items ) ) {
                foreach ( $repair_items as $index => $item ) {
                    // Table row
                    echo '<tr>';
                    
                    // Order number - показываем только для первого элемента
                    echo '<td>';
                    echo '<a href="' . esc_url( admin_url( 'post.php?post=' . $order_id . '&action=edit' ) ) . '">';
                    echo '<strong>#' . esc_html( $order_number ) . '</strong>';
                    echo '</a>';
                    echo '</td>';
                    
                    // Order date - показываем только для первого элемента
                    echo '<td>';
                    if ( $order_date ) {
                        echo esc_html( $order_date->date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ) ) );
                    }
                    echo '</td>';
                    
                    // Order status - показываем только для первого элемента
                    echo '<td>';
                    echo '<span class="tech-repair-order-status status-' . esc_attr( $order_status ) . '">';
                    echo esc_html( wc_get_order_status_name( $order_status ) );
                    echo '</span>';
                    echo '</td>';
                    
                    // Customer - показываем только для первого элемента
                    echo '<td>';
                    echo esc_html( $customer_name ) . '<br>';
                    echo '<small>' . esc_html( $customer_email ) . '</small>';
                    if ( ! empty( $customer_phone ) ) {
                        echo '<br><small>' . esc_html( $customer_phone ) . '</small>';
                    }
                    echo '</td>';
                    
                    // Device
                    echo '<td>' . esc_html( $item['device'] ) . '</td>';
                    
                    // Issue
                    echo '<td>' . esc_html( $item['issue'] ) . '</td>';
                    
                    // Service Type (option)
                    echo '<td>' . esc_html( $item['option'] ) . '</td>';
                    
                    // Price - показываем только для первого элемента
                    echo '<td>';
                    // Проверяем, был ли заказ создан через форму быстрого заказа и равна ли цена нулю
                    if ( $order->get_meta( '_tech_repair_quick_order' ) === 'yes' && $order->get_total() == 0 ) {
                        echo '<span class="tech-repair-order-form">' . esc_html__( 'Order form', 'tech-repair-service' ) . '</span>';
                    } else {
                        echo wp_kses_post( $order_total );
                    }
                    echo '</td>';
                    
                    // Actions - показываем только для первого элемента
                    echo '<td class="actions">';
                    echo '<a href="' . esc_url( admin_url( 'post.php?post=' . $order_id . '&action=edit' ) ) . '" class="button">';
                    echo '<span class="dashicons dashicons-visibility" style="margin-right: 5px;"></span>';
                    esc_html_e( 'View', 'tech-repair-service' );
                    echo '</a>';
                    echo '</td>';
                    
                    echo '</tr>';
                }
            } else {
                // Если нет элементов ремонта, все равно показываем заказ
                echo '<tr>';
                
                // Order number
                echo '<td>';
                echo '<a href="' . esc_url( admin_url( 'post.php?post=' . $order_id . '&action=edit' ) ) . '">';
                echo '<strong>#' . esc_html( $order_number ) . '</strong>';
                echo '</a>';
                echo '</td>';
                
                // Order date
                echo '<td>';
                if ( $order_date ) {
                    echo esc_html( $order_date->date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ) ) );
                }
                echo '</td>';
                
                // Order status
                echo '<td>';
                echo '<span class="tech-repair-order-status status-' . esc_attr( $order_status ) . '">';
                echo esc_html( wc_get_order_status_name( $order_status ) );
                echo '</span>';
                echo '</td>';
                
                // Customer
                echo '<td>';
                echo esc_html( $customer_name ) . '<br>';
                echo '<small>' . esc_html( $customer_email ) . '</small>';
                if ( ! empty( $customer_phone ) ) {
                    echo '<br><small>' . esc_html( $customer_phone ) . '</small>';
                }
                echo '</td>';
                
                // Empty cells for device, issue, service type
                echo '<td>-</td>';
                echo '<td>-</td>';
                echo '<td>-</td>';
                
                // Order total
                echo '<td>';
                // Проверяем, был ли заказ создан через форму быстрого заказа и равна ли цена нулю
                if ( $order->get_meta( '_tech_repair_quick_order' ) === 'yes' && $order->get_total() == 0 ) {
                    echo '<span class="tech-repair-order-form">' . esc_html__( 'Order form', 'tech-repair-service' ) . '</span>';
                } else {
                    echo wp_kses_post( $order_total );
                }
                echo '</td>';
                
                // Actions
                echo '<td class="actions">';
                echo '<a href="' . esc_url( admin_url( 'post.php?post=' . $order_id . '&action=edit' ) ) . '" class="button">';
                echo '<span class="dashicons dashicons-visibility" style="margin-right: 5px;"></span>';
                esc_html_e( 'View', 'tech-repair-service' );
                echo '</a>';
                echo '</td>';
                
                echo '</tr>';
            }
        }
        
        echo '</tbody>';
        echo '</table>';
    }
    
    /**
     * Add order type column to orders list
     *
     * @param array $columns Columns array
     * @return array Modified columns array
     */
    public function add_order_type_column( $columns ) {
        $new_columns = array();
        
        foreach ( $columns as $key => $value ) {
            $new_columns[ $key ] = $value;
            
            // Add order type column after order number
            if ( $key === 'order_number' ) {
                $new_columns['order_type'] = esc_html__( 'Order Type', 'tech-repair-service' );
            }
        }
        
        return $new_columns;
    }
    
    /**
     * Display order type column
     *
     * @param string $column Column name
     * @param int $order_id Order ID
     */
    public function display_order_type_column( $column, $order_id ) {
        if ( $column === 'order_type' ) {
            $order = wc_get_order( $order_id );
            
            if ( ! $order ) {
                return;
            }
            
            $has_repair_product = false;
            
            // Check if order has tech repair products
            foreach ( $order->get_items() as $item ) {
                $product_id = $item->get_product_id();
                
                if ( $product_id && get_post_meta( $product_id, '_tech_repair_product', true ) === 'yes' ) {
                    $has_repair_product = true;
                    break;
                }
            }
            
            if ( $has_repair_product ) {
                echo '<span class="tech-repair-order-status status-processing">';
                echo esc_html__( 'Repair', 'tech-repair-service' );
                echo '</span>';
                
                // Add order meta for filtering
                update_post_meta( $order_id, '_has_tech_repair_products', 'yes' );
            } else {
                echo '<span class="tech-repair-order-status status-cancelled">';
                echo esc_html__( 'Regular', 'tech-repair-service' );
                echo '</span>';
            }
        }
    }
    
    /**
     * Add repair details meta box
     */
    public function add_repair_details_meta_box() {
        add_meta_box(
            'tech_repair_details',
            esc_html__( 'Repair Details', 'tech-repair-service' ),
            array( $this, 'render_repair_details_meta_box' ),
            'shop_order',
            'side',
            'default'
        );
    }
    
    /**
     * Render repair details meta box
     *
     * @param WP_Post $post Post object
     */
    public function render_repair_details_meta_box( $post ) {
        $order = wc_get_order( $post->ID );
        
        if ( ! $order ) {
            return;
        }
        
        $repair_items = array();
        
        // Get repair items
        foreach ( $order->get_items() as $item ) {
            $product_id = $item->get_product_id();
            
            if ( $product_id && get_post_meta( $product_id, '_tech_repair_product', true ) === 'yes' ) {
                // Get repair details
                $device_id = get_post_meta( $product_id, '_tech_repair_device_id', true );
                $issue_id = get_post_meta( $product_id, '_tech_repair_issue_id', true );
                $option = get_post_meta( $product_id, '_tech_repair_option', true );
                
                $device = get_post( $device_id );
                $issue = get_post( $issue_id );
                
                $repair_items[] = array(
                    'product_id' => $product_id,
                    'device' => $device ? $device->post_title : esc_html__( 'Unknown Device', 'tech-repair-service' ),
                    'issue' => $issue ? $issue->post_title : esc_html__( 'Unknown Issue', 'tech-repair-service' ),
                    'option' => $option,
                    'price' => $item->get_total(),
                );
            }
        }
        
        // Display repair items
        if ( ! empty( $repair_items ) ) {
            echo '<div class="tech-repair-order-details">';
            
            foreach ( $repair_items as $item ) {
                echo '<div class="tech-repair-order-item">';
                
                echo '<h4>' . esc_html( $item['device'] ) . '</h4>';
                
                echo '<p><strong>' . esc_html__( 'Issue:', 'tech-repair-service' ) . '</strong> ';
                echo esc_html( $item['issue'] ) . '</p>';
                
                echo '<p><strong>' . esc_html__( 'Option:', 'tech-repair-service' ) . '</strong> ';
                echo esc_html( $item['option'] ) . '</p>';
                
                echo '<p><strong>' . esc_html__( 'Price:', 'tech-repair-service' ) . '</strong> ';
                echo wp_kses_post( wc_price( $item['price'] ) ) . '</p>';
                
                echo '</div>';
            }
            
            echo '</div>';
        } else {
            echo '<p>' . esc_html__( 'This order does not contain any repair items.', 'tech-repair-service' ) . '</p>';
        }
    }
}
