import os
from pyrogram import  Client, filters
from pyrogram.types import Message
from base.utils.database import Database
from base import Bot, MOVIEO_CLI, SOFTSUB_DIR, HARDSUB_DIR, DUBBED_DIR, MOVIEO_ENCODES_DIR

@Bot.on_message(filters.private & filters.user(MOVIEO_CLI), group=3)
async def cli_bot(_: Client, update: Message):
    msg = update.text
    if msg == None:
        msg = update.caption
    command = msg.split(',')[0]
    task_id = int(msg.split(',')[1])
    if command == 'uploaded':
        with Database() as db:
            media_task_db = db.get_media_task(task_id, 'id')
        package_id = media_task_db[0][1]
        message_id = media_task_db[0][2]
        file_name = media_task_db[0][4]
        with Database() as db:
            package_db = db.get_package(package_id, 'id', 'chat_id,type')
        user_id = package_db[0][0]
        task_type = package_db[0][1]
        try:
            file_id = update.document.file_id
            await _.send_document(user_id, file_id, caption=file_name)
        except:
            file_id = update.video.file_id
            await _.send_video(user_id, file_id, caption=file_name)
        if task_type == 1:
            file_path = SOFTSUB_DIR
        elif task_type == 2:
            file_path = HARDSUB_DIR
        elif task_type == 3:
            file_path = DUBBED_DIR
        elif task_type == 4:
            file_path = MOVIEO_ENCODES_DIR
        await _.edit_message_text(user_id, message_id, '✅ آپلود فایل با موفقیت انجام شد.')
        try:
            os.remove(f"{file_path}{file_name}")
        except:
            pass
        with Database() as db:
            db.update_media_task(task_id, 'status', 7)
    elif command == 'ERROR':
        with Database() as db:
            media_task_db = db.get_media_task(task_id, 'id')
        package_id = media_task_db[0][1]
        message_id = media_task_db[0][2]
        file_name = media_task_db[0][4]
        with Database() as db:
            package_db = db.get_package(package_id, 'id', 'chat_id,type')
        user_id = package_db[0][0]
        task_type = package_db[0][1]
        if task_type == 1:
            file_path = SOFTSUB_DIR
        elif task_type == 2:
            file_path = HARDSUB_DIR
        elif task_type == 3:
            file_path = DUBBED_DIR
        elif task_type == 4:
            file_path = MOVIEO_ENCODES_DIR
        await _.edit_message_text(user_id, message_id, '❗️ مشکلی در آپلود فایل بوجود آمد.')
        os.remove(f"{file_path}{file_name}")
        with Database() as db:
            db.update_media_task(task_id, 'status', 7)
            try:
                os.remove(f"{file_path}{file_name}")
            except:
                pass
            with Database() as db:
                db.update_media_task(task_id, 'status', 8)
