<?php
/**
 * FinalPOS Constants
 *
 * This file contains all string constants used throughout the FinalPOS plugin.
 * Following WordPress best practices, all string literals are centralized here
 * for better maintainability and consistency.
 *
 * @package FinalPOS
 * @since 1.0.0
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly
}

// ============================================================================
// Meta Keys - Order/Item Meta
// ============================================================================

if ( ! defined( 'FINALPOS_META_KEY_RESTOCK' ) ) {
	define( 'FINALPOS_META_KEY_RESTOCK', '_finalpos_restock' );
}

if ( ! defined( 'FINALPOS_META_KEY_READONLY' ) ) {
	define( 'FINALPOS_META_KEY_READONLY', '_finalpos_readonly' );
}

if ( ! defined( 'FINALPOS_META_KEY_IS_WOO_OUTLET' ) ) {
	define( 'FINALPOS_META_KEY_IS_WOO_OUTLET', '_finalpos_is_woo_outlet' );
}


if ( ! defined( 'FINALPOS_META_KEY_IMPORTED' ) ) {
	define( 'FINALPOS_META_KEY_IMPORTED', '_finalpos_imported' );
}

if ( ! defined( 'FINALPOS_META_KEY_IMPORT_SOURCE' ) ) {
	define( 'FINALPOS_META_KEY_IMPORT_SOURCE', '_finalpos_import_source' );
}

if ( ! defined( 'FINALPOS_META_KEY_ORDER_TOTAL' ) ) {
	define( 'FINALPOS_META_KEY_ORDER_TOTAL', 'finalpos_order_total' );
}

if ( ! defined( 'FINALPOS_META_KEY_ORDER_TOTAL_TAXES' ) ) {
	define( 'FINALPOS_META_KEY_ORDER_TOTAL_TAXES', 'finalpos_order_totalTaxes' );
}

// ============================================================================
// Legacy Meta Keys (for backward compatibility)
// ============================================================================

if ( ! defined( 'FINALPOS_META_KEY_READONLY_LEGACY' ) ) {
	define( 'FINALPOS_META_KEY_READONLY_LEGACY', 'finalpos-readonly' );
}

if ( ! defined( 'FINALPOS_META_KEY_IS_WOO_OUTLET_LEGACY' ) ) {
	define( 'FINALPOS_META_KEY_IS_WOO_OUTLET_LEGACY', 'finalpos-is-woo-outlet' );
}

if ( ! defined( 'FINALPOS_META_KEY_STRINGIFIED_SUMMARY_LEGACY' ) ) {
	define( 'FINALPOS_META_KEY_STRINGIFIED_SUMMARY_LEGACY', 'finalpos-stringified-summary' );
}

if ( ! defined( 'FINALPOS_META_KEY_STRINGIFIED_SUMMARY' ) ) {
	define( 'FINALPOS_META_KEY_STRINGIFIED_SUMMARY', '_finalpos_stringified_summary' );
}

// ============================================================================
// Option Names
// ============================================================================

if ( ! defined( 'FINALPOS_OPTION_CURRENT_STAGE' ) ) {
	define( 'FINALPOS_OPTION_CURRENT_STAGE', 'finalpos_current_stage' );
}

if ( ! defined( 'FINALPOS_OPTION_JWT_TOKEN' ) ) {
	define( 'FINALPOS_OPTION_JWT_TOKEN', 'finalpos_jwt_token' );
}

if ( ! defined( 'FINALPOS_OPTION_PARSED_JWT' ) ) {
	define( 'FINALPOS_OPTION_PARSED_JWT', 'finalpos_parsed_jwt' );
}

if ( ! defined( 'FINALPOS_OPTION_CONSUMER_KEY' ) ) {
	define( 'FINALPOS_OPTION_CONSUMER_KEY', 'finalpos_consumer_key' );
}

if ( ! defined( 'FINALPOS_OPTION_CONSUMER_SECRET' ) ) {
	define( 'FINALPOS_OPTION_CONSUMER_SECRET', 'finalpos_consumer_secret' );
}

if ( ! defined( 'FINALPOS_OPTION_TOKEN' ) ) {
	define( 'FINALPOS_OPTION_TOKEN', 'finalpos_token' );
}

if ( ! defined( 'FINALPOS_OPTION_ERROR' ) ) {
	define( 'FINALPOS_OPTION_ERROR', 'finalpos_error' );
}

if ( ! defined( 'FINALPOS_OPTION_LAST_NONCE' ) ) {
	define( 'FINALPOS_OPTION_LAST_NONCE', 'finalpos_last_nonce' );
}

if ( ! defined( 'FINALPOS_OPTION_LAST_NONCE_TIME' ) ) {
	define( 'FINALPOS_OPTION_LAST_NONCE_TIME', 'finalpos_last_nonce_time' );
}

if ( ! defined( 'FINALPOS_OPTION_REACTIVATION_ERROR' ) ) {
	define( 'FINALPOS_OPTION_REACTIVATION_ERROR', 'finalpos_reactivation_error' );
}

// ============================================================================
// Action/Hook Names
// ============================================================================

if ( ! defined( 'FINALPOS_ACTION_SAVE_TOKEN' ) ) {
	define( 'FINALPOS_ACTION_SAVE_TOKEN', 'finalpos_save_token' );
}

if ( ! defined( 'FINALPOS_ACTION_CHECK_SYNC_STATUS' ) ) {
	define( 'FINALPOS_ACTION_CHECK_SYNC_STATUS', 'finalpos_check_sync_status' );
}

if ( ! defined( 'FINALPOS_ACTION_COMPLETE_SETUP' ) ) {
	define( 'FINALPOS_ACTION_COMPLETE_SETUP', 'finalpos_complete_setup' );
}

if ( ! defined( 'FINALPOS_ACTION_DISCONNECT' ) ) {
	define( 'FINALPOS_ACTION_DISCONNECT', 'finalpos_disconnect' );
}

// ============================================================================
// Page Slugs
// ============================================================================

if ( ! defined( 'FINALPOS_PAGE_DASHBOARD' ) ) {
	define( 'FINALPOS_PAGE_DASHBOARD', 'finalpos-dashboard' );
}

if ( ! defined( 'FINALPOS_PAGE_SETUP' ) ) {
	define( 'FINALPOS_PAGE_SETUP', 'finalpos-setup' );
}

if ( ! defined( 'FINALPOS_PAGE_LOGS' ) ) {
	define( 'FINALPOS_PAGE_LOGS', 'finalpos-logs' );
}

// ============================================================================
// Transient Names
// ============================================================================

if ( ! defined( 'FINALPOS_TRANSIENT_ACTIVATION_REDIRECT' ) ) {
	define( 'FINALPOS_TRANSIENT_ACTIVATION_REDIRECT', 'finalpos_activation_redirect' );
}

if ( ! defined( 'FINALPOS_TRANSIENT_AUTH_NONCE_PREFIX' ) ) {
	define( 'FINALPOS_TRANSIENT_AUTH_NONCE_PREFIX', 'finalpos_auth_nonce_' );
}

// ============================================================================
// Nonce Names
// ============================================================================

if ( ! defined( 'FINALPOS_NONCE_DISCONNECT' ) ) {
	define( 'FINALPOS_NONCE_DISCONNECT', 'finalpos_disconnect' );
}

if ( ! defined( 'FINALPOS_NONCE_POLLING' ) ) {
	define( 'FINALPOS_NONCE_POLLING', 'finalpos_polling_nonce' );
}

if ( ! defined( 'FINALPOS_NONCE_FIELD' ) ) {
	define( 'FINALPOS_NONCE_FIELD', 'finalpos_nonce' );
}

// ============================================================================
// CSS/JS Handles
// ============================================================================

if ( ! defined( 'FINALPOS_HANDLE_READONLY_ORDERS' ) ) {
	define( 'FINALPOS_HANDLE_READONLY_ORDERS', 'finalpos-readonly-orders' );
}

if ( ! defined( 'FINALPOS_HANDLE_POPPINS_FONT' ) ) {
	define( 'FINALPOS_HANDLE_POPPINS_FONT', 'finalpos-poppins-font' );
}

if ( ! defined( 'FINALPOS_HANDLE_COMMON' ) ) {
	define( 'FINALPOS_HANDLE_COMMON', 'finalpos-common' );
}

if ( ! defined( 'FINALPOS_HANDLE_WIZARD' ) ) {
	define( 'FINALPOS_HANDLE_WIZARD', 'finalpos-wizard' );
}

if ( ! defined( 'FINALPOS_HANDLE_MODALS' ) ) {
	define( 'FINALPOS_HANDLE_MODALS', 'finalpos-modals' );
}

if ( ! defined( 'FINALPOS_HANDLE_LOADER' ) ) {
	define( 'FINALPOS_HANDLE_LOADER', 'finalpos-loader' );
}

if ( ! defined( 'FINALPOS_HANDLE_DASHBOARD' ) ) {
	define( 'FINALPOS_HANDLE_DASHBOARD', 'finalpos-dashboard' );
}

if ( ! defined( 'FINALPOS_HANDLE_SETTINGS_FORM' ) ) {
	define( 'FINALPOS_HANDLE_SETTINGS_FORM', 'finalpos-settings-form' );
}

if ( ! defined( 'FINALPOS_HANDLE_DASHBOARD_POLLING' ) ) {
	define( 'FINALPOS_HANDLE_DASHBOARD_POLLING', 'finalpos-dashboard-polling' );
}

if ( ! defined( 'FINALPOS_HANDLE_ADMIN_ICONS' ) ) {
	define( 'FINALPOS_HANDLE_ADMIN_ICONS', 'finalpos-admin-icons' );
}

// ============================================================================
// Stage Values
// ============================================================================

if ( ! defined( 'FINALPOS_STAGE_AUTH_KEY' ) ) {
	define( 'FINALPOS_STAGE_AUTH_KEY', 'auth_key' );
}

if ( ! defined( 'FINALPOS_STAGE_SETTINGS' ) ) {
	define( 'FINALPOS_STAGE_SETTINGS', 'settings' );
}

if ( ! defined( 'FINALPOS_STAGE_COMPLETE' ) ) {
	define( 'FINALPOS_STAGE_COMPLETE', 'complete' );
}

// ============================================================================
// Other String Constants
// ============================================================================

if ( ! defined( 'FINALPOS_READONLY_VALUE' ) ) {
	define( 'FINALPOS_READONLY_VALUE', '1' );
}

if ( ! defined( 'FINALPOS_IMPORT_SOURCE_CLI' ) ) {
	define( 'FINALPOS_IMPORT_SOURCE_CLI', 'cli' );
}

if ( ! defined( 'FINALPOS_API_DESCRIPTION_PATTERN' ) ) {
	define( 'FINALPOS_API_DESCRIPTION_PATTERN', '%FinalPOS - API%' );
}

if ( ! defined( 'FINALPOS_WEBHOOK_NAME_PATTERN' ) ) {
	define( 'FINALPOS_WEBHOOK_NAME_PATTERN', '%finalpos%' );
}

if ( ! defined( 'FINALPOS_WEBHOOK_MAX_FAILURES' ) ) {
	define( 'FINALPOS_WEBHOOK_MAX_FAILURES', 20 );
}

// Ecommerce log: allowed source filter values (woo-commerce, standalone).
if ( ! defined( 'FINALPOS_ECOMMERCE_LOG_SOURCE_OPTIONS' ) ) {
	define( 'FINALPOS_ECOMMERCE_LOG_SOURCE_OPTIONS', array( 'woo-commerce', 'standalone' ) );
}

// Ecommerce log: entity type values (order, product, refund, customer, variant, extension).
if ( ! defined( 'FINALPOS_ENTITY_TYPE_ORDER' ) ) {
	define( 'FINALPOS_ENTITY_TYPE_ORDER', 'order' );
}
if ( ! defined( 'FINALPOS_ENTITY_TYPE_PRODUCT' ) ) {
	define( 'FINALPOS_ENTITY_TYPE_PRODUCT', 'product' );
}
if ( ! defined( 'FINALPOS_ENTITY_TYPE_REFUND' ) ) {
	define( 'FINALPOS_ENTITY_TYPE_REFUND', 'refund' );
}
if ( ! defined( 'FINALPOS_ENTITY_TYPE_CUSTOMER' ) ) {
	define( 'FINALPOS_ENTITY_TYPE_CUSTOMER', 'customer' );
}
if ( ! defined( 'FINALPOS_ENTITY_TYPE_VARIANT' ) ) {
	define( 'FINALPOS_ENTITY_TYPE_VARIANT', 'variant' );
}
if ( ! defined( 'FINALPOS_ENTITY_TYPE_EXTENSION' ) ) {
	define( 'FINALPOS_ENTITY_TYPE_EXTENSION', 'extension' );
}
// Ecommerce log: entity types as key => label (label is default English, translated at runtime).
if ( ! defined( 'FINALPOS_ECOMMERCE_LOG_ENTITY_TYPES' ) ) {
	define( 'FINALPOS_ECOMMERCE_LOG_ENTITY_TYPES', array(
		FINALPOS_ENTITY_TYPE_ORDER     => 'Order',
		FINALPOS_ENTITY_TYPE_PRODUCT   => 'Product',
		FINALPOS_ENTITY_TYPE_REFUND    => 'Refund',
		FINALPOS_ENTITY_TYPE_CUSTOMER  => 'Customer',
		FINALPOS_ENTITY_TYPE_VARIANT   => 'Variant',
		FINALPOS_ENTITY_TYPE_EXTENSION => 'Extension',
	) );
}

// Ecommerce log: Hub API endpoint path (query string appended at call site).
if ( ! defined( 'FINALPOS_API_ECOMMERCE_LOG' ) ) {
	define( 'FINALPOS_API_ECOMMERCE_LOG', 'v1/api/ecommerce-log' );
}

// Ecommerce log list: items per page (permanent, no UI to change).
if ( ! defined( 'FINALPOS_ECOMMERCE_LOG_PER_PAGE' ) ) {
	define( 'FINALPOS_ECOMMERCE_LOG_PER_PAGE', 50 );
}
