import { H3Event } from 'h3';
interface Base {
    createdBy?: string | number
    createdOn?: string
    updatedBy?: string | number
    updatedOn?: string
}
interface Article extends Base {
    id?: number; // ID của bài viết
    siteId?: number; // ID của trang web
    articleId?: number; // ID của bài viết
    originalId?: number; // ID còn bài viết gốc
    sub?: string; // Tiêu đề phụ
    title?: string; // Tiêu đề
    slug?: string; // Đường dẫn thân thiện cho SEO
    code?: string; // Mã bài viết
    intro?: string; // Phần giới thiệu
    brief?: string; // Tóm tắt
    detail?: string; // Nội dung chi tiết
    summary?: string; // Tóm tắt ngắn gọn
    thumbnail?: string; // Đường dẫn hình ảnh đại diện
    represent?: string; // Đại diện cho bài viết
    redirect?: string; // Đường dẫn chuyển hướng
    keywords?: string; // Từ khóa
    description?: string; // Mô tả
    type?: number; // Loại bài viết
    layoutType?: number; // Loại giao diện
    contentType?: number; // Loại nội dung
    priority?: number; // Ưu tiên
    features?: string; // Các tính năng
    taxonomy?: string; // Phân loại
    interaction?: string; // Tương tác
    language?: string; // Ngôn ngữ
    settings?: string; // Các tùy chọn
    categoryId?: number; // ID của danh mục
    categoryIds?: string; // Các ID danh mục liên quan
    topicIds?: string; // Các ID chủ đề liên quan
    eventIds?: string; // Các ID sự kiện liên quan
    collectionIds?: string; // Các ID bộ sưu tập liên quan
    urlIds?: string; // Các ID URL liên quan
    sourceIds?: string; // Các ID nguồn liên quan
    relatedArticleIds?: string; // Các ID liên quan
    advertisementIds?: string; // Các ID quảng cáo liên quan
    attachmentIds?: string; // Các ID tệp đính kèm liên quan
    authorIds?: string; // Các ID tác giả liên quan
    views?: number; // Số lượt xem
    likes?: number; // Số lượt thích
    rates?: number; // Đánh giá
    follows?: number; // Số lượt theo dõi
    shares?: number; // Số lượt chia sẻ
    reports?: number; // Số lượt báo cáo
    comments?: number; // Số lượt bình luận
    statistics?: string; // Thống kê khác
    isPublished?: boolean; // Đã xuất bản hay chưa
    publishedBy?: number; // ID người xuất bản
    publishedOn?: Date; // Ngày xuất bản
    expiresOn?: Date; // Ngày hết hạn
    order?: number; // Thứ tự
    status?: number; // Trạng thái
}

export const getArticleById = async (event : any) => {
    try {
        const { apiUrl } = useRuntimeConfig().public
        const id = event.context.params.id;
        const { item }: any = await $fetch(`${apiUrl}/cms/digital-article/${id}`, {
            headers: new Headers({
                site: '1' || 1,
            }),
        })

        return { item }
    } catch (error) {
        handleError(error);
    }
}

export const getArticleBySlug = async (event : any) => {
    try {
        const { apiUrl } = useRuntimeConfig().public
        const slug = event.context.params.slug;
        const { item }: any = await $fetch(`${apiUrl}/cms/digital-article/slug:${slug}`, {
            headers: new Headers({
                site: '1' || 1,
            }),
        })
        return { item }
    } catch (error) {
        handleError(error);
    }
}

export const listArticleCondition = async (event: H3Event) => {
    try {
        const payload = await readBody<any>(event)
        const { apiUrl } = useRuntimeConfig().public
        const { items }: any = await $fetch(`${apiUrl}/cms/article/condition`, {
            method: "POST",
            headers: new Headers({
                site: '1' || 1,
            }),
            body: {
                payload
            }
        })
        // log(event)

        return items
    } catch (error) {
        handleError(error);
    }
}