<?php
namespace Indeed\Uap;

class WooCategoryReferralRates
{
    /**
     * @param none
     * @return none
     */
    public function __construct()
    {
        // Admin
        add_action( 'product_cat_add_form_fields', [ $this, 'catReferralRateFormAdd' ], 999, 2 );
        add_action( 'product_cat_edit_form_fields', [ $this, 'catReferralRateFormEdit' ], 999 );
        add_action( 'edited_product_cat', [ $this, 'saveReferralRate' ], 999, 1 );
        add_action( 'create_product_cat', [ $this, 'saveReferralRate' ], 999, 1 );

        // Public
        add_filter( 'uap_filter_referral_amount', [ $this, 'filterAmount'], 2, 4 );
    }

    public function catReferralRateFormAdd( $cat=0 )
    {
        $currency = get_option('uap_currency');
        $catId = isset( $cat->term_id ) ? $cat->term_id : 0;
        $types = [
                          'flat' 					=> esc_html__( 'Flat ', 'uap') . '(' . $currency .')',
                          'percentage'		=> esc_html__( 'Percentage ', 'uap') . '(%)',
                          'default'       => esc_html__( 'Default Affiliate system Settings', 'uap' ),
        ];
        $data = [
                  'uap_referral_type'		    => get_term_meta( $catId, 'uap_referral_type', true ),
                  'uap_referral_value'		  => get_term_meta( $catId, 'uap_referral_value', true ),
                  'types'                   => $types,
                  'cat_id'                  => $catId,
                  'uap_excluded'            => get_term_meta( $catId, 'uap_excluded', true ),
        ];
        if ( $data['uap_excluded'] === '' || $data['uap_excluded'] === false || $data['uap_excluded'] === null ){
            $data['uap_excluded'] = 0;
        }
        
        $view = new \Indeed\Uap\IndeedView();
        $output = $view->setTemplate( UAP_PATH . 'admin/views/woo-cats-referral-rate-add.php' )
                  ->setContentData( $data )
                  ->getOutput();
        echo esc_uap_content( $output );
    }


    public function catReferralRateFormEdit( $cat=0 )
    {
        $currency = get_option('uap_currency');
        $catId = isset( $cat->term_id ) ? $cat->term_id : 0;
        $types = [
                          'flat' 					=> esc_html__( 'Flat ', 'uap') . '(' . $currency .')',
                          'percentage'		=> esc_html__( 'Percentage ', 'uap') . '(%)',
                          'default'       => esc_html__( 'Default Affiliate system Settings', 'uap' ),
        ];
        $data = [
                  'uap_referral_type'		    => get_term_meta( $catId, 'uap_referral_type', true ),
                  'uap_referral_value'		  => get_term_meta( $catId, 'uap_referral_value', true ),
                  'types'                   => $types,
                  'cat_id'                  => $catId,
                  'uap_excluded'            => get_term_meta( $catId, 'uap_excluded', true ),
        ];
        if ( $data['uap_excluded'] === '' || $data['uap_excluded'] === false || $data['uap_excluded'] === null ){
            $data['uap_excluded'] = 0;
        }

        $view = new \Indeed\Uap\IndeedView();
        $output = $view->setTemplate( UAP_PATH . 'admin/views/woo-cats-referral-rate-edit.php' )
                  ->setContentData( $data )
                  ->getOutput();
        echo esc_uap_content( $output );
    }


    public function saveReferralRate( $catId=0 )
    {
        if ( empty( $catId ) || !isset( $_POST['uap_referral_type'] ) || !isset( $_POST['uap_referral_value'] ) ){
            return false;
        }
        update_term_meta( $catId, 'uap_referral_type', uap_sanitize_array( $_POST['uap_referral_type'] ) );
        update_term_meta( $catId, 'uap_referral_value', uap_sanitize_array( $_POST['uap_referral_value'] ) );
        if ( isset( $_POST['uap_excluded'] ) ){
            update_term_meta( $catId, 'uap_excluded', sanitize_text_field( $_POST['uap_excluded'] ) );
        }
    }

    public function filterAmount( $customAmounts=[], $inputAmount=0, $productId=0, $attr=[] )
    {
        $cats = wp_get_post_terms ($productId, 'product_cat', [ 'fields'=>'ids' ] );
        if ( empty( $cats ) ){
            return $customAmounts;
        }
        $array= [];
        foreach ( $cats as $catId ){
          $type = get_term_meta( $catId, 'uap_referral_type', true );
          $value = get_term_meta( $catId, 'uap_referral_value', true );

          if ( $type == false ){
              continue;
          }
          if ( $type == 'default' ){
              continue;
          }
          if ( $value === false  || $value == '' ){
              continue;
          }
          if ( $type == 'flat' ){
              $customAmounts[] = $value;
          } else if ( $type == 'percentage' ){
              $customAmounts[] = $inputAmount * $value / 100;
          }
        }
        return $customAmounts;
    }

}
