<?php

namespace Blazemedia\Affiliation\AdminUserInterface\Buttons;

use Blazemedia\Affiliation\API\CachedApi;
use Blazemedia\Affiliation\Support\Environment;

/*
 *  Class AffiliateZone
 *  
 *  Bottone e UI per la creazione degli shortcode delle zone
 */

class AffiliateParseCardAwin extends Button {

    function __construct() {

        /** 
         * Set the name of the plugin 
         * >> affiliation_link.js
         * 
         * and the name of the ajax endpoint to call into plugin
         * >> affiliation_link_action
         */
        parent::__construct('affiliation_parse_card_awin', 'affiliation_parse_card_awin_action', 'dialog-AffiliateParseCardAwin.html');
    }

    public function addFieldsToDialog() : array {

        return [

            [
                'name' => 'ApiStoredLinkProvider',
                'value' => Environment::get('BLZ_API_STORED_LINK_PROVIDER', 'https://stored-links-provider.blazemedia.it/api/')
            ],
            [
                'name'  => 'formatId-awin',
                'value' => $this->getFormatId('card','pcdw')
            ],
        ]; 

    }

    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 = [ 'card'=>'cards' ][ $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;
    }
}
