// src/modules/telegram/telegram.processor.ts
import {OnWorkerEvent, Processor, WorkerHost} from '@nestjs/bullmq';
import {Job} from 'bullmq';
import {InjectBot} from 'nestjs-telegraf';
import {Context, Telegraf} from 'telegraf';
import {Injectable} from "@nestjs/common";
import {PublishPageService} from "../social-api/publish.page.service";
import {isEmpty, toNumber} from "lodash";

@Injectable()
@Processor('content_writer_completed_queue') // Lắng nghe hàng đợi của AI-B
export class TelegramContentWriterCompletedProcessor extends WorkerHost {
    constructor(
        @InjectBot() private readonly bot: Telegraf<Context>,
        private readonly publishPageService: PublishPageService
    ) {
        super();
    }

    // Đây là logic xử lý task (nếu cần xử lý thêm ở tầng telegram)
    async process(job: Job<any>): Promise<any> {
        // Task viết bài đã được AI-B xử lý ở FacebookProcessor
        // Ở đây chúng ta có thể thực hiện các logic hậu kỳ nếu muốn
        console.log('TelegramProcessor_facebook_content_writer_completed_process ==> begin');
        // console.log({job});

        const adminChatId = process.env.TELEGRAM_ADMIN_ID || 0;

        console.log('TelegramProcessor_facebook_content_writer_completed_process=>posting')
        //console.log(fbContent);
        if (job.name === 'generate_post_completed') {
            const {id, needConfirm, content, autoPublish, telegramChatId, xSubmitProvider} = job.data;
            console.log({id, needConfirm, autoPublish, xSubmitProvider})
            const X_USERS = process.env.TWITTER_USERNAMES!.split(',');
            console.log({X_USERS});
            //console.log({job})
            // if (autoPublish) {
            //     // await this.publishPageService.publishTwitter(id);
            //     // await this.publishPageService.publishToFacebook(id);
            //     const postId = toNumber(id);
            //     await this.bot.telegram.sendMessage(adminChatId, '🤖Đã viết xong tin auto:');
            //
            //     try {
            //         await Promise.allSettled([
            //                 this.publishPageService.publishToFacebook(postId).then(() => {
            //                     this.bot.telegram.sendMessage(adminChatId, `Đăng bài lên FB số ${postId} thành công`);
            //                 }).catch(err => {
            //                     this.bot.telegram.sendMessage(adminChatId, `PublishToFacebook error ${err.message}`);
            //
            //                 }),
            //                 this.publishPageService.publishTwitter(postId, xSubmitProvider).then((resp) => {
            //                     this.bot.telegram.sendMessage(adminChatId, `Đăng bài lên X số ${postId} thành công via ${xSubmitProvider}, ${resp?.url}`);
            //                 }).catch(err => {
            //                     this.bot.telegram.sendMessage(adminChatId, `PublishToX error ${err.message}`);
            //                 }),
            //             ]
            //         )
            //     } catch (e) {
            //         await this.bot.telegram.sendMessage(adminChatId, `❌ Lỗi đăng bài: ${e.message}`);
            //     }
            //     return;
            // }
            await this.bot.telegram.sendMessage(telegramChatId || adminChatId, '🤖Đã viết xong:');
            await this.bot.telegram.sendMessage(telegramChatId || adminChatId,
                `${content}\n\n`,
                {
                    // parse_mode: 'Markdown',
                    reply_markup: {
                        inline_keyboard: [
                            ...X_USERS.map((xuser) => {
                                return [{
                                    text: `↗️X ${xuser}`,
                                    callback_data: `publish-post_twitter_${id}_${xuser}`
                                }];
                            }),
                            [
                                // {text: "↗️X", callback_data: `publish-post_twitter_${id}`},
                                {text: "↗️FB", callback_data: `publish-post_facebook_${id}`},
                            ],
                            [
                                // {text: "↗️All", callback_data: `publish-post_all_${id}`},
                                {text: "🗑️ Hủy bài", callback_data: `delete-post_${id}`}]
                        ]
                    }
                }
            );
        }
        return {};

        //return fbContent;
        // const postFbId= await this.publishPageService.publishToFacebook(id)
        // const twId= await this.publishPageService.publishTwitter(id)
        // return job;
        return {
            //id: id,
            // postFbId,
            // twId,
            // content: postContent,
            //image: imageSuggestion,
            status: 'posted'
        };
    }

    @OnWorkerEvent('failed')
    async onFailed(job: Job<any>, error: Error) {
        const adminChatId = process.env.TELEGRAM_ADMIN_ID || 0;
        const telegramChatId = job.data.telegramChatId
        await this.bot.telegram.sendMessage(telegramChatId || adminChatId, `❌ **Lỗi AI-B:** Job #${job.id} thất bại. \nLý do: ${error.message}`);
    }
}
