import QueryString from 'qs';
import { axiosGet } from './actions';
import { apiPages, apiUrl } from './constants';
import { addApiUrlToImage } from './projects';

export const getPageBySlug = async (locale = 'es', slug: string): Promise<any> => {
  if (!slug) return null;
  const fields = [
    'id',
    'name',
    'slug',
    'mainBannerPreTitle',
    'mainBannerTitle',
    'metaTitle',
    'metaDescription',
    'metaKeywords'
  ];
  const fieldsHero = ['id', 'title', 'preTitle', 'text'];
  const query = QueryString.stringify(
    {
      locale: locale,
      filters: {
        slug: {
          $eq: slug
        }
      },
      fields: fields,
      populate: {
        localizations: { fields: ['id', 'slug'], populate: { mainBannerVideo: '*', welcomeVideo: '*' } },
        mainBannerVideo: '*',
        welcomeImage: '*',
        welcomeVideo: '*',
        welcomeHero: { fields: fieldsHero },
        projectsHero: {
          fields: fieldsHero
        },
        citiesHero: {
          fields: fieldsHero
        },
        blogsHero: {
          fields: fieldsHero
        },
        reviewsHero: {
          fields: fieldsHero
        },
        newsletterHero: {
          fields: fieldsHero
        },
        numeraliaHero: {
          fields: fieldsHero
        },
        numeraliaFacts: {
          sort: 'order',
          fields: ['id', 'text', 'amount', 'sufix', 'prefix', 'order']
        }
      }
    },
    { encodeValuesOnly: true }
  );

  const dataResponse: any = await axiosGet(apiPages, query);

  let pageData = dataResponse?.[0];

  if (!pageData) {
    return null;
  }
  pageData = {
    ...pageData,
    mainBannerVideo:
      pageData?.mainBannerVideo && pageData?.mainBannerVideo?.url
        ? pageData?.mainBannerVideo
        : pageData?.localizations?.[0]?.mainBannerVideo && pageData?.localizations?.[0]?.mainBannerVideo?.url
        ? pageData?.localizations?.[0]?.mainBannerVideo
        : null,
    welcomeVideo:
      pageData?.welcomeVideo && pageData?.welcomeVideo?.url
        ? pageData?.welcomeVideo
        : pageData?.localizations?.[0]?.welcomeVideo && pageData?.localizations?.[0]?.welcomeVideo?.url
        ? pageData?.localizations?.[0]?.welcomeVideo
        : null
  };
  return {
    ...pageData,
    mainBannerVideo: addApiUrlToImage(pageData?.mainBannerVideo),
    welcomeImage: addApiUrlToImage(pageData?.welcomeImage),
    welcomeVideo: addApiUrlToImage(pageData?.welcomeVideo)
  };
};
