export default cachedEventHandler(async (event) => {
    const { apiUrl } = useRuntimeConfig()
    const { lang, slug } = getQuery(event)

    const postType: any = await $fetch(`${apiUrl}/negresco/api/custom-type?slug=${slug}`)

    if (postType && postType.post_type) {
        const data: any = await $fetch(`${apiUrl}/negresco/wp/v2/${postType.post_type}?_fields=slug,translations,status,title,acf,yoast_head_json&lang=${lang}&slug=${slug}`)

        if (data && data.length) {
            if (data?.[0]?.status !== 'publish') {
                return false
            }

            let translatedUrl = ''

            if (data?.[0]?.translations[lang === 'fr' ? 'en' : 'fr']) {
                const dataTranslatedUrl: any = await $fetch(`${apiUrl}/negresco/wp/v2/${postType.post_type}/${data?.[0]?.translations[lang === 'fr' ? 'en' : 'fr']}?_fields=link`)

                if (dataTranslatedUrl.link) {
                    translatedUrl = dataTranslatedUrl.link
                }
            }

            const dataCustomType = ['chambres', 'suites', 'exception', 'restaurants', 'bars', 'celebrations', 'salons']

            const findCustomType = (data: any, name: String) => {
                const res = data.find((el: String) => el === name)
                return !!res
            }

            if (findCustomType(dataCustomType, postType.post_type)) {
                const headerPageDatas = {
                    top_title: data?.[0]?.acf?.sur_titre_header_page_fiche,
                    title_one: data?.[0]?.acf?.titre_1_header_page_fiche,
                    title_two: data?.[0]?.acf?.titre_2_header_page_fiche,
                    images: data?.[0]?.acf?.images_galerie_header_page
                }

                const miseEnAvant = {
                    title_one: data?.[0]?.acf?.titre_lettres_manuscrites_mise_avant,
                    title_two: data?.[0]?.acf?.titre_lettres_normales_mise_avant,
                    pages: data?.[0]?.acf?.choix_fiche_mise_avant
                }

                return {
                    title: data?.[0]?.title?.rendered,
                    header_mosaique: headerPageDatas,
                    blocs: data?.[0]?.acf?.blocs_liste,
                    seo: data?.[0]?.yoast_head_json,
                    translation: translatedUrl,
                    afficher_mise_avant: data?.[0]?.afficher_bloc_mise_en_avant,
                    mise_avant: miseEnAvant
                }
            } else {
                const headerPageDatas = {
                    title_one: data?.[0]?.acf?.titre_1_header_page,
                    title_two: data?.[0]?.acf?.titre_2_header_page,
                    image: data?.[0]?.acf?.image_header_page,
                    description: data?.[0]?.acf?.description_header_page
                }

                return {
                    title: data?.[0]?.title?.rendered,
                    header: headerPageDatas,
                    blocs: data?.[0]?.acf?.blocs_liste,
                    seo: data?.[0]?.yoast_head_json,
                    translation: translatedUrl
                }
            }
        }
    }
}, {
    swr: true,
    maxAge: 3600,
    name: 'getSingleCustomPage',
    getKey: (event: any) => `${event.req.url}`
})
