<?php

class kavehwooSMSmanger
{

  private $prefix;

  public function __construct($prefix)
  {
    $this->prefix = $prefix;
    $this->create_options();
    add_action('admin_head', [$this, 'custom_menu_icon']);
    add_action('admin_enqueue_scripts', [$this, 'conditionally_add_inline_script']);
  }

  public static function are_any_sms_notifications_enabled()
  {
    // Get all theme options
    $options = get_option('kaveh_sms'); // Replace with your actual option name
    // Get all WooCommerce statuses
    if (!class_exists('WooCommerce')) {
      return false;
    }
    $woocommerceStatuses = wc_get_order_statuses();
    // Check each status option
    foreach ($woocommerceStatuses as $statusKey => $statusValue) {
      $statusKey = substr($statusKey, 3); // Remove "wc-" prefix
      $option_name = 'kaveh_smson_customer_' . $statusKey;

      if (isset($options[$option_name]) && $options[$option_name]) {
        return true; // At least one is enabled
      }
    }

    return false; // None are enabled
  }

  public function create_options()
  {
    if (class_exists('CSF')) {
      CSF::createOptions(
        $this->prefix,
        array(
          'menu_title' => 'پیامک کاوه',
          'menu_slug' => 'kaveh-woo-sms',
        )
      );

      $sections = array(
        array(
          'id' => 'one_tab', // Set a unique slug-like ID
          'title' => 'پیامک های ووکامرس',
          'fields' => $this->get_section_general_fields(),
        ),
      );

      foreach ($sections as $section) {
        CSF::createSection($this->prefix, $section);
      }
    }
  }
  public function get_section_general_fields() {
    $woocommerceStatuses = [];
    $fields = array(); // Initialize $fields at the start

    if (class_exists('woocommerce')) {
        $woocommerceStatuses = wc_get_order_statuses();

        foreach ($woocommerceStatuses as $statusKey => $statusValue) {
            $statusKey = substr($statusKey, 3); // Removing "wc-" prefix
            
            // Field for customer
            $fields[] = array(
                'id' => 'kaveh_smson_customer_' . $statusKey,
                'type' => 'switcher',
                'title' => $statusValue,
                'text_on' => 'فعال',
                'text_off' => 'غیرفعال',
                'default' => false
            );

            // Field for tabs
            $fields[] = array(
                'id'            => 'smstaboption',
                'type'          => 'tabbed',
                'dependency' => array(
                    array('kaveh_smson_customer_' . $statusKey, '==', 1),
                ),
                'title'         => 'تنظیمات پیامک',
                'tabs'          => array(
                    array(
                        'title'     => 'برای مشتری',
                        'icon'      => 'fa fa-user',
                        'fields'    => array(
                            array(
                                'id' => 'kaveh_banner_patern_' . $statusKey,
                                'type' => 'text',
                                'title' => 'پترن پیامک برای مشتری',
                            ),
                            array(
                                'id' => 'kaveh_pattern_paragraph_' . $statusKey,
                                'type' => 'textarea',
                                'class' => 'orderDetailsTextarea' . $statusKey,
                                'title' => 'متن پیام مشتری',
                                'default' => 'سلام {customer_first_name} {customer_last_name} عزیز
                                وضعیت سفارش شما : {status} 
                                کد رهگیری : {transaction_id} ',
                                'subtitle' => 'این متن فقط برای نحوه نمایش و انتخاب متغیر ها می باشد و متن اصلی شما در پنل پیامکی قرار گرفته و متغیر ها را از این فیلد دریافت میکند'
                            ),
                            array(
                                'type'    => 'submessage',
                                'style'   => 'success',
                                'content' => "
                                    <strong>جزییات سفارش : </strong><br>
                                    <span class='clickable' data-status='{$statusKey}'>{mobile}</span> = شماره موبایل مشتری ، 
                                    <span class='clickable' data-status='{$statusKey}'>{phone}</span> = شماره تلفن مشتری ، 
                                    <span class='clickable' data-status='{$statusKey}'>{email}</span> = ایمیل مشتری ، 
                                    <span class='clickable' data-status='{$statusKey}'>{status}</span> = وضعیت سفارش ، <br>
                                    <span class='clickable' data-status='{$statusKey}'>{all_items}</span> = محصولات سفارش ، 
                                    <span class='clickable' data-status='{$statusKey}'>{all_items_qty}</span> = محصولات سفارش بهمراه تعداد ، 
                                    <span class='clickable' data-status='{$statusKey}'>{count_items}</span> = تعداد محصولات سفارش ،<br>
                                    <span class='clickable' data-status='{$statusKey}'>{price}</span> = مبلغ سفارش ، 
                                    <span class='clickable' data-status='{$statusKey}'>{post_id}</span> = شماره سفارش اصلی ، 
                                    <span class='clickable' data-status='{$statusKey}'>{order_id}</span> = شماره سفارش ، 
                                    <span class='clickable' data-status='{$statusKey}'>{transaction_id}</span> = شماره تراکنش ،<br>
                                    <span class='clickable' data-status='{$statusKey}'>{date}</span> = تاریخ سفارش ، 
                                    <span class='clickable' data-status='{$statusKey}'>{customerdescription}</span> = توضیحات مشتری ، 
                                    <span class='clickable' data-status='{$statusKey}'>{paymentmethod}</span> = روش پرداخت ، 
                                    <span class='clickable' data-status='{$statusKey}'>{shippingmethod}</span> = روش ارسال ،<br><br>

                                    <strong>جزییات صورت حساب : </strong><br>
                                    <span class='clickable' data-status='{$statusKey}'>{customer_first_name}</span> = نام مشتری ، 
                                    <span class='clickable' data-status='{$statusKey}'>{customer_last_name}</span> = نام خانوادگی مشتری ، 
                                    <span class='clickable' data-status='{$statusKey}'>{customer_company}</span> = نام شرکت ، 
                                    <span class='clickable' data-status='{$statusKey}'>{customer_country}</span> = کشور ،<br>
                                    <span class='clickable' data-status='{$statusKey}'>{customer_state}</span> = ایالت/استان ، 
                                    <span class='clickable' data-status='{$statusKey}'>{customer_city}</span> = شهر ، 
                                    <span class='clickable' data-status='{$statusKey}'>{customer_address_1}</span> = آدرس 1 ، 
                                    <span class='clickable' data-status='{$statusKey}'>{customer_address_2}</span> = آدرس 2 ، 
                                    <span class='clickable' data-status='{$statusKey}'>{customer_postcode}</span> = کد پستی ،<br><br>

                                    <strong>جزییات حمل و نقل : </strong><br>
                                    <span class='clickable' data-status='{$statusKey}'>{receiver_first_name}</span> = نام مشتری ، 
                                    <span class='clickable' data-status='{$statusKey}'>{receiver_last_name}</span> = نام خانوادگی مشتری ، 
                                    <span class='clickable' data-status='{$statusKey}'>{receiver_company}</span> = نام شرکت ، 
                                    <span class='clickable' data-status='{$statusKey}'>{receiver_country}</span> = کشور ،<br>  
                                    <span class='clickable' data-status='{$statusKey}'>{receiver_state}</span> = ایالت/استان ، 
                                    <span class='clickable' data-status='{$statusKey}'>{receiver_city}</span> = شهر ، 
                                    <span class='clickable' data-status='{$statusKey}'>{receiver_address_1}</span> = آدرس 1 ، 
                                    <span class='clickable' data-status='{$statusKey}'>{receiver_address_2}</span> = آدرس 2 ، 
                                    <span class='clickable' data-status='{$statusKey}'>{receiver_postcode}</span> = کد پستی ،<br><br>
                                ",
                            ),
                        )
                    ),
                    array(
                        'title'     => 'برای مدیر',
                        'icon'      => 'far fa-address-book',
                        'fields'    => array(
                            array(
                                'id' => 'kaveh_manager_tel_' . $statusKey,
                                'type' => 'text',
                                'title' => 'شماره تماس مدیر',
                                'subtitle' => 'در صورت وجود چند شماره با , جدا کنید'
                            ),
                            array(
                                'id' => 'kaveh_manager_patern_' . $statusKey,
                                'type' => 'text',
                                'title' => 'پترن پیامک برای مدیر',
                                'subtitle' => 'در صورت وجود عدم نیاز به ارسال پیامک مدیر فیلد ها را خالی بگذارید'
                            ),
                            array(
                                'id' => 'kaveh_pattern_manager_paragraph_' . $statusKey,
                                'type' => 'textarea',
                                'class' => 'ordermanagerDetailsTextarea' . $statusKey,
                                'title' => 'متن پیام مدیر',
                                'default' => 'سلام {customer_first_name} {customer_last_name} عزیز
                                                وضعیت سفارش شما : {status} 
                                                کد رهگیری : {transaction_id} ',
                                'subtitle' => 'این متن فقط برای نحوه نمایش و انتخاب متغیر ها می باشد و متن اصلی شما در پنل پیامکی قرار گرفته و متغیر ها را از این فیلد دریافت میکند'
                            ),
                            array(
                                'type'    => 'submessage',
                                'style'   => 'success',
                                'content' => "
                                    <strong>جزییات سفارش : </strong><br>
                                    <span class='clickablemanager' data-status='{$statusKey}'>{mobile}</span> = شماره موبایل مشتری ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{phone}</span> = شماره تلفن مشتری ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{email}</span> = ایمیل مشتری ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{status}</span> = وضعیت سفارش ، <br>
                                    <span class='clickablemanager' data-status='{$statusKey}'>{all_items}</span> = محصولات سفارش ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{all_items_qty}</span> = محصولات سفارش بهمراه تعداد ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{count_items}</span> = تعداد محصولات سفارش ،<br>
                                    <span class='clickablemanager' data-status='{$statusKey}'>{price}</span> = مبلغ سفارش ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{post_id}</span> = شماره سفارش اصلی ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{order_id}</span> = شماره سفارش ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{transaction_id}</span> = شماره تراکنش ،<br>
                                    <span class='clickablemanager' data-status='{$statusKey}'>{date}</span> = تاریخ سفارش ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{customerdescription}</span> = توضیحات مشتری ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{paymentmethod}</span> = روش پرداخت ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{shippingmethod}</span> = روش ارسال ،<br><br>

                                    <strong>جزییات صورت حساب : </strong><br>
                                    <span class='clickablemanager' data-status='{$statusKey}'>{customer_first_name}</span> = نام مشتری ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{customer_last_name}</span> = نام خانوادگی مشتری ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{customer_company}</span> = نام شرکت ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{customer_country}</span> = کشور ،<br>
                                    <span class='clickablemanager' data-status='{$statusKey}'>{customer_state}</span> = ایالت/استان ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{customer_city}</span> = شهر ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{customer_address_1}</span> = آدرس 1 ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{customer_address_2}</span> = آدرس 2 ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{customer_postcode}</span> = کد پستی ،<br><br>

                                    <strong>جزییات حمل و نقل : </strong><br>
                                    <span class='clickablemanager' data-status='{$statusKey}'>{receiver_first_name}</span> = نام مشتری ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{receiver_last_name}</span> = نام خانوادگی مشتری ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{receiver_company}</span> = نام شرکت ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{receiver_country}</span> = کشور ،<br>  
                                    <span class='clickablemanager' data-status='{$statusKey}'>{receiver_state}</span> = ایالت/استان ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{receiver_city}</span> = شهر ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{receiver_address_1}</span> = آدرس 1 ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{receiver_address_2}</span> = آدرس 2 ، 
                                    <span class='clickablemanager' data-status='{$statusKey}'>{receiver_postcode}</span> = کد پستی ،<br><br>
                                ",
                            ),
                        )
                    ),
                )
            );
        }
    }

    return $fields;
}



  public function custom_menu_icon()
  {
    ?>
    <style>
   

      #toplevel_page_kaveh-woo-sms .wp-menu-image:before {
        content: '' !important;
      }

      #toplevel_page_kaveh-woo-sms div.wp-menu-image {
        width: 24px;
        height: 34px;
        margin-right: 5px;
      }

      .clickable {
        cursor: pointer;
      }

      .clickablemanager {
        cursor: pointer;
      }
    </style>
    <?php
  }

  public function conditionally_add_inline_script()
  {
    if (isset($_GET['page']) && $_GET['page'] === 'kaveh-woo-sms') {
      wp_register_script('custom-inline-script', '', [], null, true);
      wp_enqueue_script('custom-inline-script');

      if (class_exists('woocommerce')) {
        $woocommerceStatuses = wc_get_order_statuses();
        $inline_js = '';

        foreach ($woocommerceStatuses as $statusKey => $statusValue) {
          $statusKey = substr($statusKey, 3);

          $inline_js .= "
          document.querySelectorAll('.clickable[data-status=\"{$statusKey}\"]').forEach(function(span) {
            span.addEventListener('click', function() {
              const textarea = document.querySelector('.orderDetailsTextarea{$statusKey} textarea');
              if (textarea) {
                textarea.value += span.textContent + ' ';
                console.log('کلیک شد: ' + span.textContent);
                console.log(textarea)
              } else {
                console.error('Textarea not found for status: {$statusKey}');
              }
            });
          });
          document.querySelectorAll('.clickablemanager[data-status=\"{$statusKey}\"]').forEach(function(span) {
            span.addEventListener('click', function() {
              const textarea = document.querySelector('.ordermanagerDetailsTextarea{$statusKey} textarea');
              if (textarea) {
                textarea.value += span.textContent + ' ';
                console.log('کلیک شد: ' + span.textContent);
                console.log(textarea)
              } else {
                console.error('Textarea not found for status: {$statusKey}');
              }
            });
          });
        ";
        }

        wp_add_inline_script('custom-inline-script', $inline_js);
      }
    }
  }



}