<?php
/** Admin Pages
 *
 * @package BwWinnersGlobalSite
 */

namespace BwWinnersGlobalSite;

if ( ! class_exists( __NAMESPACE__ . '\Admin_Pages' ) ) {

	/**
	 * Adds admin pages.
	 */
	class Admin_Pages {
		
		/**
		 * Hook for BwWinnersGlobalSite Settings page
		 *
		 * @var string
		 */
		public $settings_page_hook;

		/**
		 * Adds hooks.
		 */
		public function __construct() {
			add_action( 'admin_menu', [ $this, 'add_admin_menu' ] );
		}

		/**
		 * Adds BwWinnersGlobalSite Site Settings
		 */
		public function add_admin_menu() {

			add_menu_page(
				esc_html__( 'Winners', 'bw-winners-global-site' ),
				esc_html__( 'Winners', 'bw-winners-global-site' ),
				'manage_options',
				'bw-winners-global-site',
				'',
				'dashicons-admin-generic',
				85
			);

			$this->settings_page_hook = add_submenu_page(
				'bw-winners-global-site',
				esc_html__( 'Winners Settings', 'bw-winners-global-site' ),
				esc_html__( 'Winners Settings', 'bw-winners-global-site' ),
				'manage_options',
				'bw-winners-global-site',
				[ $this, 'settings_page_content' ],
				5
			);

			add_action( 'admin_enqueue_scripts', array( $this, 'menu_page_assets' ) );
		}

		/**
		 * BwWinnersGlobalSite Options page template
		 */
		public function settings_page_content() {

			if ( ! current_user_can( 'manage_options' ) || ! current_user_can( 'publish_posts' ) ) {
				wp_die( esc_html__( 'You do not have sufficient capabilities to access this page.', 'bw-winners-global-site' ) );
			}
			?>
				<div class="wrap">
					<div id="bw-winners-global-site-settings-page"></div>
				</div>
			<?php
		}

		/**
		 * Enqueues styles and scripts for the BwWinnersGlobalSite admin pages
		 *
		 * @param mixed $hook Hook for current admin page.
		 */
		public function menu_page_assets( $hook ) {

			if ( $hook === $this->settings_page_hook ) {

				$asset_file = plugin_dir_path( PLUGIN_PATH ) . 'build/admin-pages/settings/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-global-site-admin-page-settings',
					plugins_url( 'build/admin-pages/settings/index.js', PLUGIN_PATH ),
					$script_settings['dependencies'],
					$script_settings['version'],
					true
				);

				wp_enqueue_style(
					'bw-winners-global-site-admin-page-settings',
					plugins_url( 'build/admin-pages/settings/index.css', PLUGIN_PATH ),
					[],
					$script_settings['version']
				);

				$options = Options::get_options();


				global $bw_winners_global_site;

				$options['spreadsheets'] = $bw_winners_global_site->google_sync->get_spreadsheets();
				$options['credentials'] = $bw_winners_global_site->google_sync->get_credentials();
				$options['task'] = $bw_winners_global_site->auto_sync_cron->get_task();
				
				wp_localize_script(
					'bw-winners-global-site-admin-page-settings',
					'bwWinnersGlobalSiteOptions',
					$options
				);
			}
		}
	}
}
