import os
from config import TEMP_FOLDER, PRETRAINED_MODEL
import pwd
import grp

def clear_temp_folder():
    """Xóa toàn bộ file trong thư mục temp trước khi lưu ảnh mới."""
    for filename in os.listdir(TEMP_FOLDER):
        file_path = os.path.join(TEMP_FOLDER, filename)
        try:
            if os.path.isfile(file_path):
                os.remove(file_path)
        except Exception as e:
            print(f"Không thể xóa {file_path}: {e}")


def ensure_correct_permissions(path):
    try:
        uid = pwd.getpwnam("www-data").pw_uid
        gid = grp.getgrnam("www-data").gr_gid

        os.chown(path, uid, gid)

        os.chmod(path, 0o777)

    except Exception as e:
        print(f"⚠️ Error when grant permission: {e}")

def get_latest_model_including_today(trained_model_folder: str, default_model: str = PRETRAINED_MODEL):
    """Tìm model gần nhất (bao gồm cả ngày hôm nay), nếu không có thì dùng model mặc định."""
    if not os.path.exists(trained_model_folder):
        return default_model

    # Lấy danh sách các thư mục theo ngày
    subfolders = [
        f for f in os.listdir(trained_model_folder) 
        if os.path.isdir(os.path.join(trained_model_folder, f))
    ]
    subfolders = sorted(subfolders, reverse=True)  # Sắp xếp giảm dần (mới nhất trước)

    for folder in subfolders:
        model_path = os.path.join(trained_model_folder, folder, "weights", "best.pt")
        if os.path.exists(model_path):
            return model_path

    return default_model


def clean_temp_folder():
    for image_file in os.listdir(TEMP_FOLDER):
        image_path = os.path.join(TEMP_FOLDER, image_file)
        os.remove(image_path)