import GameItem from "@/components/game-item"
import { AspectRatio } from "@/components/ui/aspect-ratio"
import { Card } from "@/components/ui/card"
import { Skeleton } from "@/components/ui/skeleton"
import { UserAvatar } from "@/components/user-avatar"
import { db } from "@/lib/db"
import { getFavoriteGames } from "@/lib/igdb"
import { IGame } from "@/types/igdb-types"
import { redirect } from "next/navigation"


export default async function User({ params }: { params: { userid: string } }) {
  
  const user = await db.user.findFirst({
    where: {
      username: params.userid
    }
  })

  if(!user){
    redirect('/')
  }

  const fullUser = await db.user.findFirst({
    where: {
      id: user.id
    }
  })

  let favoritegames = undefined
  let playingGames = undefined
  let finishedGames = undefined
  let planningGames = undefined

  if (fullUser?.favGameList?.length !== 0 && fullUser?.favGameList?.length != undefined) {
    favoritegames = await getFavoriteGames(fullUser?.favGameList!)
  }
  if (fullUser?.playingGameList?.length !== 0) {
    playingGames = await getFavoriteGames(fullUser?.playingGameList!)
  }
  if (fullUser?.finishedGameList?.length !== 0) {
    finishedGames = await getFavoriteGames(fullUser?.finishedGameList!)
  }
  if (fullUser?.planningGameList?.length !== 0) {
    planningGames = await getFavoriteGames(fullUser?.planningGameList!)
  }
  return (
    <>
      <div className="main-content h-full">
        <Card className="w-full h-full overflow-hidden">
          <div className="h-64 overflow-hidden">
            <AspectRatio ratio={889 / 500} className="bg-slate-600  dark:bg-slate-400">
              {/* profile banner */}
              {/* <Image
              src={ }
              alt={ }
              fill
              priority
              className="object-center" /> */}
            </AspectRatio>
          </div>
          <div className="p-6 md:p-12 ss:flex">
            <UserAvatar
              user={{ username: user.username, image: user.image || null }}
              className="h-52 w-52 -mt-36"
            />
            <div className="ml-6 md:ml-12 space-y-3">
              <h1 className="text-2xl font-bold">{user.name}</h1>
              <h1 className="text-md text-sky-500">@{user.username}</h1>
              {/* <h1 className="pt-3">{user.bio}</h1> */}
            </div>
          </div>
          <div className="px-6 md:px-12">
            {/* <div className="border-b border-gray-400 dark:border-gray-200" /> */}
            {/* gweets */}
          </div>
        </Card >
        <div className="side-content">
          <Card className="p-6 grid items-start gap-2 bg-secondary">
            <h1>Media</h1>
            <div className="grid grid-cols-1 gap-4">
              {Array.from({ length: 2 }, (_, i) => i + 1).map((i) => {
                return (
                  <Skeleton key={i} className="aspect-[264/374] bg-gray-300" />
                )
              })}
            </div>
          </Card>
        </div>


      </div >
      <div className="main-content">
        <Card className="w-full h-full overflow-hidden p-6 md:p-12" >
          <h1 className="text-2xl font-bold pb-3">Your Favorite Games</h1>
          <div className="grid grid-cols-1 ss:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 gap-4 lg:gap-8 items-center">
            {favoritegames ? favoritegames.map((game: IGame) => (
              <GameItem id={game.id} name={game.name} cover={game.cover} key={game.id} />
            ))
              :
              <p>You have no favorites currently</p>}
          </div>
        </Card>

        <Card className="w-full h-full overflow-hidden p-6 md:p-12" >
          <h1 className="text-2xl font-bold pb-3">Currently Playing</h1>
          <div className="grid grid-cols-1 ss:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 gap-4 lg:gap-8 items-center">
            {playingGames ? playingGames.map((game: IGame) => (
              <GameItem id={game.id} name={game.name} cover={game.cover} key={game.id} />
            ))
              :
              <p>You are currently not playing any games</p>}
          </div>
        </Card>

        <Card className="w-full h-full overflow-hidden p-6 md:p-12" >
          <h1 className="text-2xl font-bold pb-3">Planning on Playing</h1>
          <div className="grid grid-cols-1 ss:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 gap-4 lg:gap-8 items-center">
            {planningGames ? planningGames.map((game: IGame) => (
              <GameItem id={game.id} name={game.name} cover={game.cover} key={game.id} />
            ))
              :
              <p>You are currently not planning on playing any games</p>}
          </div>
        </Card>

        <Card className="w-full h-full overflow-hidden p-6 md:p-12" >
          <h1 className="text-2xl font-bold pb-3">Finished Games</h1>
          <div className="grid grid-cols-1 ss:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 gap-4 lg:gap-8 items-center">
            {finishedGames ? finishedGames.map((game: IGame) => (
              <GameItem id={game.id} name={game.name} cover={game.cover} key={game.id} />
            ))
              :
              <p>You have no Games in your finished-Games-List </p>}
          </div>
        </Card>
      </div>
    </>
  )
}