import { gql } from 'graphql-request'
import fetchAPI from '@/lib/api/fetchAPI'
/*import { nodesFromEdges } from '@/lib/utilities'*/
import { CASE_STUDY_FRAGMENT } from './fragments'

/**
 * Query a single case study by slug
 */
export async function getCaseStudyBySlug(slug: string) {
  const data = await fetchAPI(
    gql`
      ${CASE_STUDY_FRAGMENT}
      query CaseStudyBySlug($id: ID!) {
        page: caseStudy(id: $id, idType: SLUG) {
          ...CaseStudyFields
        }
      }
    `,
    {
      variables: {
        id: slug,
      },
    }
  )

  return data
}

/**
 * Query the case studies page
 */
export async function getCaseStudiesPage() {
  const data = await fetchAPI(
    gql`
      query CaseStudiesPage {
        page(id: "case-studies", idType: URI) {
          id
          title
          seo {
            fullHead
          }
          featuredCaseStudyHeroSection {
            featuredCaseStudy {
              ... on CaseStudy {
                uri
                title
                featuredImage {
                  node {
                    alt: altText
                    imageUrl: sourceUrl
                    placeholder: sourceUrl(size: THUMBNAIL)
                  }
                }
                caseStudyProjectContent {
                  heroSection {
                    customerName
                    projectType
                  }
                }
                terms(where: { orderby: TERM_ORDER }) {
                  edges {
                    node {
                      slug
                      name
                    }
                  }
                }
              }
            }
          }
        }

        caseStudies(first: 10000) {
          edges {
            node {
              slug
              title
              featuredImage {
                node {
                  alt: altText
                  imageUrl: sourceUrl
                  placeholder: sourceUrl(size: THUMBNAIL)
                }
              }
              caseStudyProjectContent {
                heroSection {
                  customerName
                  projectType
                }
              }
              terms(where: { orderby: TERM_ORDER }) {
                edges {
                  node {
                    slug
                    name
                  }
                }
              }
            }
          }
        }
      }
    `
  )

  return data
}

/**
 * Query all case studies
 */
export async function getAllCaseStudies() {
  const data = await fetchAPI(
    gql`
      query AllCaseStudies {
        caseStudies(first: 10000) {
          edges {
            node {
              slug
              title
              featuredImage {
                node {
                  alt: altText
                  imageUrl: sourceUrl
                  placeholder: sourceUrl(size: THUMBNAIL)
                }
              }
              terms(where: { orderby: TERM_ORDER }) {
                edges {
                  node {
                    slug
                    name
                  }
                }
              }
            }
          }
        }
      }
    `
  )

 /*return nodesFromEdges(data?.caseStudies?.edges || [])*/
 return data
}

/**
 * Query all case study slugs
 */
export async function getAllCaseStudySlugs() {
  const data = await fetchAPI(
    gql`
      query AllCaseStudySlugs {
        caseStudies(first: 10000) {
          edges {
            node {
              slug
            }
          }
        }
      }
    `
  )

  /*return nodesFromEdges(data?.caseStudies?.edges || [])*/
  return data
}
