<?php
/** Admin Pages
 *
 * @package Bw-Winners-Network
 */

namespace BwWinnersNetwork;

if ( ! class_exists( __NAMESPACE__ . '\Admin_Pages' ) ) {

	/**
	 * Adds admin pages.
	 */
	class Admin_Pages {
		/**
		 * Hook for BwWinnersNetwork Settings page
		 *
		 * @var string
		 */
		public $options_page_hook;

		/**
		 * Adds hooks.
		 */
		public function __construct() {
			add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
		}

		/**
		 * Adds BwWinnersNetwork Options page to menu under Settings
		 */
		public function add_admin_menu() {
			$this->options_page_hook = add_options_page(
				esc_html__( 'Bw-Winners-Network', 'bw-winners-network' ),
				esc_html__( 'Bw-Winners-Network', 'bw-winners-network' ),
				'manage_options',
				'bw-winners-network-options',
				array( $this, 'options_page_content' ),
				999
			);

			add_action( 'admin_enqueue_scripts', array( $this, 'menu_page_assets' ) );
		}

		/**
		 * BwWinnersNetwork Options page template
		 */
		public function options_page_content() {
			if ( ! current_user_can( 'manage_options' ) ) {
				wp_die( esc_html__( 'You do not have sufficient capabilities to access this page.', 'bw-winners-network' ) );
			}
			?>
				<div id="bw-winners-network-options-page"></div>
			<?php
		}

		/**
		 * Enqueues styles and scripts for the BwWinnersNetwork admin pages
		 *
		 * @param mixed $hook Hook for current admin page.
		 */
		public function menu_page_assets( $hook ) {

			if ( $hook === $this->options_page_hook && current_user_can( 'manage_options' ) ) {

				$asset_file = plugin_dir_path( PLUGIN_PATH ) . 'build/admin-pages/options-page/index.asset.php';

				if ( ! file_exists( $asset_file ) ) {
					error_log( 'Admin page assets not built: ' . $asset_file );
					return;
				}

				$script_settings = include $asset_file;

				$script_settings['dependencies'][] = 'bw-winners-api-fetch';

				wp_enqueue_script(
					'bw-winners-network-admin-page-options',
					plugins_url( 'build/admin-pages/options-page/index.js', PLUGIN_PATH ),
					$script_settings['dependencies'],
					$script_settings['version'],
					true
				);

				wp_enqueue_style(
					'bw-winners-network-admin-page-options',
					plugins_url( 'build/admin-pages/options-page/index.css', PLUGIN_PATH ),
					array(),
					$script_settings['version']
				);

				$options = Options::get_options();
				wp_localize_script(
					'bw-winners-network-admin-page-options',
					'bwWinnersNetworkOptions',
					$options
				);
			}
		}
	}
}
