<?php

namespace Blazemedia\Affiliation\AdminUserInterface\Buttons;

use Blazemedia\Affiliation\API\CachedApi;

/*
 *  Class AffiliateParse Button ( nuovo )
 *  
 *  Bottone e UI per la creazione degli shortcode dei link
 */
class AffiliateParseImage extends Button {

    function __construct() { 
        
        /** 
         * Set the name of the plugin 
         * >> affiliation_button.js
         * 
         * and the name of the ajax endpoint to call into plugin
         * >> affiliation_button_action
         */
        parent::__construct( 'affiliation_parse_image', 'affiliation_parse_image_action' , 'dialog-AffiliateParseImage.html');       
    }

    
    public function addFieldsToDialog() : array {

        return [

            [
                'name' => 'ApiRenderingManager',
                'value' => BLZ_API_RENDERING_MANAGER
            ],
            [
                'name'  => 'formatId-amazon',
                'value' => $this->getFormatId('image','imga')
            ],
            [
                'name'  => 'formatId-eBay',
                'value' => $this->getFormatId('image','imge')
            ],
        ]; 

    }


    protected function getFormatId( string $type, string $code ) {

        $api = CachedApi::getInstance();

        /// serve a tradurre la action a seconda del tipo. con l'idea di 
        /// centralizzare questa parte del codice estendendo una classe astratta 
        /// AffiliateParseRenderFormat, che magari contenga tutta la mappa
        $action = [ 'image'=>'images' ][ $type ]; 

        // var_dump($action, $type, BLZ_API_FORMAT_PROVIDER."{$action}/"); die;

        $buttons = json_decode( $api->get( BLZ_API_FORMAT_PROVIDER."{$action}/") );

        if( !is_array($buttons) ) {

            echo '<div>Errore di comunicazione con il server. Riprovare </div>'; die;
        } 

        $buttons = array_filter( $buttons, function( $button ) use( $code ) {
                return $button->code == $code;
            } 
        );

        return array_shift( $buttons )->id;
    }

    
}