import { Injectable } from '@nestjs/common';
import { Context, Markup } from 'telegraf';
import { InlineKeyboardMarkup } from 'telegraf/typings/core/types/typegram';
import { UserService } from './user.service';
import { SafeTelegramHelper } from 'src/common/helpers/safe-telegram.helper';

@Injectable()
export class MenuService {
  constructor(private userService: UserService) { }

  createMainMenuKeyboard(hasTests: boolean): Markup.Markup<InlineKeyboardMarkup> {
    const buttons = [
      [Markup.button.callback('جردن پیترسون کیست؟', 'peterson')],
      [Markup.button.callback('خیانت رو ببخشم؟', 'forgive')],
      [Markup.button.callback('خیانت با من چیکار می‌کنه؟', 'effects')],
      [Markup.button.callback('💔 شروع تست', 'start_test')],
    ];
    if (hasTests) {
      buttons.push([Markup.button.callback('📊 نتیجه آخرین تست', 'get_result')]);
    }
    return Markup.inlineKeyboard(buttons);
  }

  createBackButton(): Markup.Markup<InlineKeyboardMarkup> {
    return Markup.inlineKeyboard([
      [Markup.button.callback('🔙 بازگشت', 'back')],
    ]);
  }

  async sendMainMenu(ctx: Context): Promise<void> {
    if (!ctx.from) return;

    try {
      const user = await this.userService.getOrCreateUser(ctx.from);
      const keyboard = this.createMainMenuKeyboard(
        user.tests?.length > 0 && user.tests[0].currentStep === 25
      );

      const caption = `<b>مطمئن شو که قلب و احساست در امانه 💔</b>

میخوای بدونی داره بهت خیانت میشه یا نه؟
میخوای جلوی سواستفاده از احساساتت رو بگیری؟
میخوای بدونی کسی رو که دوست داری ارزشش رو داره؟

ما اینجا بهت خیلی ساده ولی علمی کمک می‌کنیم.

تست روانشناسی خیانت، طراحی‌شده توسط دکتر جردن پیترسون، یکی از برجسته‌ترین روانشناسان دنیا، بهت کمک می‌کنه تا با اطمینان خاطر، امنیت عاطفی خودت رو حفظ کنی ✔️

حتما ویدیوها و توضیحات رو کامل ببین خیلی بهت کمک می‌کنه تا امنیت عاطفی خودت رو برقرار کنی.

<b>همین حالا شروع کن و کنترل احساست رو به دست بگیر!</b>`;

      await SafeTelegramHelper.safeSendVideo(
        ctx,
        process.env.VIDEO_START || '',
        {
          caption,
          parse_mode: 'HTML',
          reply_markup: keyboard.reply_markup,
          protect_content: true,
        }
      );
    } catch (error) {
      console.error('Error in sendMainMenu:', error);
    }
  }

  async safeDeleteMessage(ctx: Context): Promise<void> {
    await SafeTelegramHelper.safeDeleteMessage(ctx);
  }
}
