import sys
import os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from celery_tasks.celery import app
from base.utils.funcs import log_request, send_request
from base.utils import YOUR_REQUEST_ADDED, SEND_TITLE_REQUEST_TO_ADMIN, fetch_title_metadata, add_title_to_elasticsearch
from config import MOVIEO_TELEGRAM_API

@app.task(queue='title_requests')
def add_title_to_database(title_primary_info, imdb_id: str):
    status = title_primary_info['status']
    if status:
        is_series = title_primary_info['is_series']
        if is_series:
            title_type = 2
        else:
            title_type = 1

        title_id, en_name = fetch_title_metadata(imdb_id, title_type)

        title_primary_info['status'] = True
        title_primary_info['en_name'] = en_name
        title_primary_info['title_id'] = title_id
        title_primary_info['title_type'] = title_type
        title_primary_info['user_id'] = -1003065180861
        title_primary_info['api_url'] = MOVIEO_TELEGRAM_API

        return title_primary_info
    else:
        return {'status': False}

@app.task(queue='title_requests')
def submit_title_request(title_final_info, admin_user_id: int, request_id: int, imdb_id: str, title_name: str):
    status = title_final_info['status']
    title_id = title_final_info['title_id']
    en_name = title_final_info['en_name']
    title_type = title_final_info['title_type']

    if status:
        add_title_to_elasticsearch(title_id, en_name, title_type)
        chat_id, movieo_id, title_name = log_request(request_id, 2)
        data = {
            'chat_id': chat_id,
            'text': YOUR_REQUEST_ADDED(request_id, title_name, movieo_id)
        }
        send_request(MOVIEO_TELEGRAM_API,'sendMessage', data)
    else:
        data = {
            'chat_id': admin_user_id,
            'text': SEND_TITLE_REQUEST_TO_ADMIN(title_name,'title request',f'tt{imdb_id}'),
            'reply_markup': {
                'inline_keyboard': [
                    [{'text': '✅ تایید درخواست', 'callback_data': f'submit_request-{request_id}'}],
                    [{'text': '❌ بستن درخواست', 'callback_data': f'submit_request-{request_id}'}],
                ]
            }
        }
        send_request(MOVIEO_TELEGRAM_API,'sendMessage', data)