export default cachedEventHandler(async (event) => {
    const { apiUrl } = useRuntimeConfig()
    const { lang } = getQuery(event)
    const data: any = await $fetch(`${apiUrl}/negresco/wp/v2/pages?_fields=slug,translations,status,title,acf,yoast_head_json&slug=${event.context.params?.slug}&lang=${lang}`)
    const offreGestion: any = await $fetch(`${apiUrl}/negresco/acf/v3/options/gestion-${lang}`)
    let offrePopup = {}

    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/pages/${data?.[0]?.translations[lang === 'fr' ? 'en' : 'fr']}?_fields=slug`)

            if (dataTranslatedUrl.slug) {
                if (dataTranslatedUrl.slug === 'home' || dataTranslatedUrl.slug === 'accueil') {
                    translatedUrl = `/${lang === 'fr' ? 'en' : 'fr'}`
                } else {
                    translatedUrl = `/${lang === 'fr' ? 'en' : 'fr'}/${dataTranslatedUrl.slug}`
                }
            }
        }

        const headerHomeDatas = {
            video_resume: data?.[0]?.acf?.video_extrait,
            video_resume_mobile: data?.[0]?.acf?.video_extrait_mobile,
            title: data?.[0]?.acf?.titre_entete_home,
            video_full: data?.[0]?.acf?.video_complete
        }

        const actusHomeDatas = {
            title: data?.[0]?.acf?.titre_section_actu,
            subtitle: data?.[0]?.acf?.sous_titre_section_actu,
            actus: data?.[0]?.acf?.choix_deux_actualites
        }

        if (event.context.params?.slug === 'accueil' || event.context.params?.slug === 'home') {
            if (offreGestion && offreGestion.acf.offre_page_accueil) {
                const offreEnAvant: any = await $fetch(`${apiUrl}/negresco/wp/v2/popup_offres/${offreGestion.acf.offre_page_accueil.ID}?_fields=slug,status,acf`)

                if (offreEnAvant.status === 'publish') {
                    offreEnAvant.slug += '-accueil'
                    offrePopup = offreEnAvant
                }
            }

            return {
                title: data?.[0]?.title?.rendered.replace('&#038;', '&').replace('&rsquo;', '\''),
                blocs: data?.[0]?.acf?.blocs_liste,
                seo: data?.[0]?.yoast_head_json,
                translation: translatedUrl,
                header_home: headerHomeDatas,
                actus: actusHomeDatas,
                popup_offer: offrePopup
            }
        }

        if (offreGestion) {
            if (offreGestion.acf.offre_page_chambres && data?.[0]?.acf?.type_listing && data?.[0]?.acf?.choix_type_listing === 'chambres') {
                const offreEnAvant: any = await $fetch(`${apiUrl}/negresco/wp/v2/popup_offres/${offreGestion.acf.offre_page_chambres.ID}?_fields=slug,status,acf`)

                if (offreEnAvant.status === 'publish') {
                    offreEnAvant.slug += '-chambres'
                    offrePopup = offreEnAvant
                }
            } else if (offreGestion.acf.offre_page_restaurants && data?.[0]?.acf?.type_listing && data?.[0]?.acf?.choix_type_listing === 'restaurants') {
                const offreEnAvant: any = await $fetch(`${apiUrl}/negresco/wp/v2/popup_offres/${offreGestion.acf.offre_page_restaurants.ID}?_fields=slug,status,acf`)

                if (offreEnAvant.status === 'publish') {
                    offreEnAvant.slug += '-restaurants'
                    offrePopup = offreEnAvant
                }
            } else if (offreGestion.acf.offre_page_celebrations && data?.[0]?.acf?.type_listing && data?.[0]?.acf?.choix_type_listing === 'celebrations') {
                const offreEnAvant: any = await $fetch(`${apiUrl}/negresco/wp/v2/popup_offres/${offreGestion.acf.offre_page_celebrations.ID}?_fields=slug,status,acf`)

                if (offreEnAvant.status === 'publish') {
                    offreEnAvant.slug += '-celebrations'
                    offrePopup = offreEnAvant
                }
            }
        }

        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.replace('&#038;', '&').replace('&rsquo;', '\''),
            blocs: data?.[0]?.acf?.blocs_liste,
            seo: data?.[0]?.yoast_head_json,
            translation: translatedUrl,
            header: headerPageDatas,
            popup_offer: offrePopup
        }
    } else {
        return false
    }
}, {
    swr: true,
    maxAge: 3600,
    name: 'getSinglePage',
    getKey: (event: any) => `${event.req.url}`
})
