import React from 'react'
import Dashboard from './dashboard'
import { prisma } from '@/lib/prisma'
import { getPageSession } from '@/auth/lucia'
import { redirect } from 'next/navigation'
import { fetchUserAvailability } from '@/app/availability/fetchUserAvailabilities' // Adjust the path as necessary
import axios from 'axios'
import { Prisma } from '@/prisma/generated/client'

const page = async ({}) => {
  const session = await getPageSession()
  let expertIdd = ''
  let expertInfo = ''
  let reviews = []

  if (!session) redirect('/signin')

  const userId = session?.user?.userId

  //  fetch user and expert
  const userInfo = await prisma.user.findUnique({
    where: {
      id: userId,
    },
    include: {
      languagesSpoken: true,
      experiences: true,
      educations: true,
      expertises: true,
      Questions: true,
    },
  })


  if (userInfo.isExpert) {
    const userWithExpert = await prisma.user.findUnique({
      where: {
        id: userId,
      },
      include: {
        languagesSpoken: true,
        experiences: true,
        Expert: {
          include: {
            StripeAccount: true, // Includes the StripeAccount related to the Expert
          },
        },
      },
    })

    reviews = await prisma.clientReview.findMany({
      where: {
        expertId: expertInfo.id,
      },
      include: {
        client: true,
      },
    })

    expertIdd = userWithExpert?.Expert?.id
    expertInfo = userWithExpert.Expert
  }

  //  fetch appointments
  const appointments = await prisma.appointment.findMany({
    where: {
      OR: [{ clientId: userId }, { expertId: expertIdd }],
    },
    include: {
      writtenExpertReviews: true,
      receivedClientReviews: true,
    },
  })

  console.log({ appointments })
  //  fetch availabilities
  const { availabilities, expert, user, timezone } =
    await fetchUserAvailability(session)

  return (
    <div>
      <Dashboard
        userInfo={userInfo}
        appointments={appointments}
        availabilitiess={availabilities || {}}
        expert={expert}
        user={user}
        timezonee={timezone}
        session={session}
        expertInfo={expertInfo}
        reviews={reviews}
      />
    </div>
  )
}

export default page
