<?php

namespace WPML\TM\Troubleshooting\SynchronizeSourceIdOfATEJobs;


use WPML\TM\Upgrade\Commands\SynchronizeSourceIdOfATEJobs\Command;
use WPML\Upgrade\CommandsStatus;

class TriggerSynchronization implements \IWPML_Backend_Action, \IWPML_DIC_Action  {

	const ACTION_ID = 'wpml-tm-ate-source-id-migration';

	/** @var CommandsStatus */
	private $commandStatus;

	/**
	 * @param CommandsStatus $commandStatus
	 */
	public function __construct( CommandsStatus $commandStatus ) {
		$this->commandStatus = $commandStatus;
	}


	public function add_hooks() {
		add_action( 'wpml_troubleshooting_after_fix_element_type_collation', [ $this, 'displayButton' ] );
		add_action( 'admin_enqueue_scripts', array( $this, 'enqueueScripts' ) );
		add_action( 'wp_ajax_' . self::ACTION_ID, array( $this, 'clearExecutedStateToForceUpgrade' ) );
	}

	public function displayButton() {
		?>

        <p>
            <input id="wpml_tm_ate_source_id_migration_btn"
                   type="button"
                   class="button-secondary"
                   value="<?php esc_attr_e( 'Synchronize local job ids with ATE jobs', 'wpml-translation-manager' ) ?>"
                   data-action="<?php echo self::ACTION_ID ?>"
                   data-nonce="<?php echo wp_create_nonce( self::ACTION_ID ) ?>"
            />
            <br/>

            <small style="margin-left:10px;"><?php esc_attr_e( 'Synchronize local job ids with their ATE counterparts. You will have to refresh a few times any admin page to accomplish the process.',
					'wpml-translation-manager' ) ?></small>
        </p>
		<?php
	}

	public function enqueueScripts( $hook ) {
		if ( WPML_PLUGIN_FOLDER . '/menu/troubleshooting.php' === $hook ) {
			wp_enqueue_script(
				self::ACTION_ID, WPML_TM_URL . '/res/js/ate-jobs-migration.js',
				[ 'jquery' ],
				WPML_TM_VERSION
            );
		}
	}

	public function clearExecutedStateToForceUpgrade() {
		$this->commandStatus->markAsExecuted( Command::class, false );
		wp_send_json_success();
	}
}