<?php
if ( ! defined( 'ABSPATH' ) ) exit;

class Vista_Pricing_Widget extends \Elementor\Widget_Base {

	public function get_name() {
		return 'vista-pricing';
	}

	public function get_title() {
		return esc_html__( 'قیمت ها', 'vista' );
	}

	public function get_icon() {
		return 'eicon-price-table';
	}

	public function get_categories() {
		return [ 'vista-widgets' ];
	}

	public function get_keywords() {
		return [ 'pricing', 'plans', 'packages', 'قیمت', 'پلن', 'بسته' ];
	}

	protected function register_controls() {

		$this->start_controls_section( 'section_plans', [
			'label' => esc_html__( 'پلن‌ها', 'vista' ),
			'tab'   => \Elementor\Controls_Manager::TAB_CONTENT,
		] );

		$repeater = new \Elementor\Repeater();

		$repeater->add_control( 'plan_tier', [
			'label'   => esc_html__( 'دسته‌بندی', 'vista' ),
			'type'    => \Elementor\Controls_Manager::TEXT,
			'default' => 'ورودی',
		] );

		$repeater->add_control( 'plan_name', [
			'label'   => esc_html__( 'نام پلن', 'vista' ),
			'type'    => \Elementor\Controls_Manager::TEXT,
			'default' => 'پایه',
		] );

		$repeater->add_control( 'price', [
			'label'   => esc_html__( 'قیمت', 'vista' ),
			'type'    => \Elementor\Controls_Manager::TEXT,
			'default' => '۵,۰۰۰,۰۰۰',
		] );

		$repeater->add_control( 'currency', [
			'label'   => esc_html__( 'واحد پولی', 'vista' ),
			'type'    => \Elementor\Controls_Manager::TEXT,
			'default' => 'تومان',
		] );

		$repeater->add_control( 'period', [
			'label'   => esc_html__( 'دوره', 'vista' ),
			'type'    => \Elementor\Controls_Manager::TEXT,
			'default' => 'هر پروژه',
		] );

		$repeater->add_control( 'is_featured', [
			'label'        => esc_html__( 'پلن ویژه (Featured)', 'vista' ),
			'type'         => \Elementor\Controls_Manager::SWITCHER,
			'label_on'     => esc_html__( 'بله', 'vista' ),
			'label_off'    => esc_html__( 'خیر', 'vista' ),
			'return_value' => 'yes',
			'default'      => 'no',
		] );

		$repeater->add_control( 'badge_text', [
			'label'     => esc_html__( 'متن بج (مثلاً: پیشنهاد ما)', 'vista' ),
			'type'      => \Elementor\Controls_Manager::TEXT,
			'default'   => 'پیشنهاد ما',
			'condition' => [ 'is_featured' => 'yes' ],
		] );

		$repeater->add_control( 'features', [
			'label'       => esc_html__( 'ویژگی‌ها (هر خط یک مورد؛ با ✓ یا ✗ شروع کنید)', 'vista' ),
			'type'        => \Elementor\Controls_Manager::TEXTAREA,
			'default'     => "✓ تا ۳ صفحه\n✓ ریسپانسیو\n✓ پشتیبانی ۱ ماهه\n✗ سئو\n✓ تحویل ۷ روزه",
			'rows'        => 6,
			'label_block' => true,
		] );

		$repeater->add_control( 'button_text', [
			'label'   => esc_html__( 'متن دکمه', 'vista' ),
			'type'    => \Elementor\Controls_Manager::TEXT,
			'default' => 'سفارش',
		] );

		$repeater->add_control( 'button_url', [
			'label'         => esc_html__( 'لینک دکمه', 'vista' ),
			'type'          => \Elementor\Controls_Manager::URL,
			'default'       => [ 'url' => '#contact' ],
			'show_external' => true,
		] );

		$repeater->add_control( 'use_case', [
			'label'   => esc_html__( 'مناسب برای', 'vista' ),
			'type'    => \Elementor\Controls_Manager::TEXT,
			'default' => 'مناسب وبسایت‌های شخصی و کوچک',
		] );

		$this->add_control( 'plans_list', [
			'label'       => esc_html__( 'لیست پلن‌ها', 'vista' ),
			'type'        => \Elementor\Controls_Manager::REPEATER,
			'fields'      => $repeater->get_controls(),
			'default'     => [
				[
					'plan_tier'   => 'ورودی',
					'plan_name'   => 'سرور پایه',
					'price'       => '۵,۰۰۰,۰۰۰',
					'currency'    => 'تومان',
					'period'      => 'هر پروژه',
					'features'    => "✓ تا ۳ صفحه\n✓ ریسپانسیو\n✓ پشتیبانی ۱ ماهه\n✗ سئو\n✓ تحویل ۷ روزه",
					'button_text' => 'سفارش',
					'use_case'    => 'مناسب وبسایت‌های شخصی و کوچک',
				],
			],
			'title_field' => '{{{ plan_name }}}',
		] );

		$this->end_controls_section();

		$this->start_controls_section( 'section_style_content', [
			'label' => esc_html__( 'استایل محتوا', 'vista' ),
			'tab'   => \Elementor\Controls_Manager::TAB_STYLE,
		] );

		$this->add_group_control(
			\Elementor\Group_Control_Typography::get_type(),
			[
				'name'     => 'plan_name_typography',
				'label'    => esc_html__( 'تایپوگرافی نام پلن', 'vista' ),
				'selector' => '{{WRAPPER}} .price-plan-name',
			]
		);

		$this->end_controls_section();

	}

	protected function render() {
		$settings = $this->get_settings_for_display();
		$delays   = [ '', 'rd1', 'rd2', 'rd3' ];
		?>
		<div class="vista-pricing-wrap">
			<div class="price-grid">
				<?php foreach ( $settings['plans_list'] as $i => $item ) :
					$is_feat = 'yes' === $item['is_featured'];
					$delay   = $delays[ $i % 4 ];
					$url     = $item['button_url']['url'] ?? '#contact';
					$target  = ! empty( $item['button_url']['is_external'] ) ? ' target="_blank" rel="noopener"' : '';
					$specs   = array_filter( array_map( 'trim', explode( "\n", $item['features'] ) ) );
				?>
				<div class="price-card reveal <?php echo esc_attr( $delay . ( $is_feat ? ' featured' : '' ) ); ?>">
					<div class="price-top"></div>
					<?php if ( $is_feat && $item['badge_text'] ) : ?>
					<div class="price-popular-wrap"><div class="price-popular"><i class="fa-solid fa-star" style="font-size:9px"></i> <?php echo esc_html( $item['badge_text'] ); ?></div></div>
					<?php endif; ?>
					<div class="price-body">
						<?php if ( $item['plan_tier'] ) : ?><div class="price-plan"><?php echo esc_html( $item['plan_tier'] ); ?></div><?php endif; ?>
						<div class="price-plan-name"><?php echo esc_html( $item['plan_name'] ); ?></div>
						<div class="price-row">
							<div class="price-amount"><?php echo esc_html( $item['price'] ); ?></div>
							<?php if ( $item['currency'] ) : ?><div class="price-period"><?php echo esc_html( $item['currency'] ); ?></div><?php endif; ?>
						</div>
						<?php if ( $item['period'] ) : ?><div class="price-unit"><?php echo esc_html( $item['period'] ); ?></div><?php endif; ?>
						<div class="price-sep"></div>
						<?php if ( $specs ) : ?>
						<div class="price-specs">
							<?php foreach ( $specs as $line ) :
								$is_no  = strpos( $line, '✗' ) === 0 || strpos( $line, '✘' ) === 0;
								$text   = trim( ltrim( $line, '✓✔✗✘ ' ) );
								$icon   = $is_no ? 'fa-xmark' : 'fa-check';
								$vstyle = $is_no ? ' style="color:var(--t3)"' : '';
							?>
							<div class="price-spec">
								<span class="price-spec-val"<?php echo $vstyle;  ?>>
									<i class="fa-solid <?php echo esc_attr( $icon ); ?>"></i><?php echo esc_html( $text ); ?>
								</span>
							</div>
							<?php endforeach; ?>
						</div>
						<?php endif; ?>
						<a href="<?php echo esc_url( $url ); ?>"
						   class="btn<?php echo $is_feat ? '' : ' btn-outline'; ?> price-order-btn<?php echo $is_feat ? ' featured-btn' : ''; ?>"
						   <?php echo $target;  ?>>
							<?php echo esc_html( $item['button_text'] ); ?>
						</a>
						<?php if ( $item['use_case'] ) : ?><div class="price-use-case"><?php echo esc_html( $item['use_case'] ); ?></div><?php endif; ?>
					</div>
				</div>
				<?php endforeach; ?>
			</div>
		</div>
		<?php
	}


	protected function content_template() {
		?>
		<#
		var items = settings.plans_list || [];
		#>
		<div class="vista-pricing-wrap">
			<div class="price-grid">
				<# _.each( items, function( item ) {
					var is_feat = item.is_featured === 'yes';
					var cls = 'price-card on' + ( is_feat ? ' featured' : '' );
					var url = item.button_url && item.button_url.url ? item.button_url.url : '#';
					var btn_cls = 'btn price-order-btn' + ( is_feat ? ' featured-btn' : ' btn-outline' );
					var specs = item.features ? item.features.split('\n') : [];
				#>
				<div class="{{ cls }}">
					<div class="price-top"></div>
					<# if ( is_feat && item.badge_text ) { #>
					<div class="price-popular-wrap"><div class="price-popular"><i class="fa-solid fa-star" style="font-size:9px"></i> {{ item.badge_text }}</div></div>
					<# } #>
					<div class="price-body">
						<# if ( item.plan_tier ) { #><div class="price-plan">{{ item.plan_tier }}</div><# } #>
						<div class="price-plan-name">{{ item.plan_name }}</div>
						<div class="price-row">
							<div class="price-amount">{{ item.price }}</div>
							<# if ( item.currency ) { #><div class="price-period">{{ item.currency }}</div><# } #>
						</div>
						<# if ( item.period ) { #><div class="price-unit">{{ item.period }}</div><# } #>
						<div class="price-sep"></div>
						<# if ( specs.length ) { #>
						<div class="price-specs">
							<# _.each( specs, function( line ) {
								line = line.trim();
								if ( ! line ) return;
								var is_no = ( line.charAt(0) === '✗' || line.charAt(0) === '✘' );
								var text = line.replace(/^[✓✔✗✘]\s*/,'');
								var icon = is_no ? 'fa-xmark' : 'fa-check';
								var vstyle = is_no ? 'color:var(--t3,#7d95b0)' : '';
							#>
							<div class="price-spec">
								<span class="price-spec-val" style="{{ vstyle }}"><i class="fa-solid {{ icon }}"></i>{{ text }}</span>
							</div>
							<# }); #>
						</div>
						<# } #>
						<a href="{{ url }}" class="{{ btn_cls }}">{{ item.button_text }}</a>
						<# if ( item.use_case ) { #><div class="price-use-case">{{ item.use_case }}</div><# } #>
					</div>
				</div>
				<# }); #>
			</div>
		</div>
		<?php
	}

}