import { redirect } from 'next/navigation';
import { getTranslations } from 'next-intl/server';
import { SiteHeader } from '@/components/SiteHeader';
import { AdminOverview } from '@/components/AdminOverview';
import { PostList } from '@/components/PostList';
import { getCurrentUser } from '@/lib/auth';
import { db } from '@/db';
import { blogPosts } from '@/db/schema';
import { desc, eq } from 'drizzle-orm';

interface Props {
  searchParams: Promise<{ tab?: string }>;
}

export default async function AdminPage({ searchParams }: Props) {
  const user = await getCurrentUser();
  if (!user || user.role !== 'admin') redirect('/?login=1');

  const t = await getTranslations('admin');
  const sp = await searchParams;
  const tab = sp.tab || 'overview';

  const posts = db.select({
    id: blogPosts.id,
    slug: blogPosts.slug,
    title: blogPosts.title,
    titleEn: blogPosts.titleEn,
    coverImage: blogPosts.coverImage,
    status: blogPosts.status,
    publishDate: blogPosts.publishDate,
    likeCount: blogPosts.likeCount,
    dislikeCount: blogPosts.dislikeCount,
  })
    .from(blogPosts)
    .orderBy(desc(blogPosts.createdAt))
    .all();

  return (
    <>
      <SiteHeader />
      <main className="container">
        <div className="admin-layout">
          <aside className="admin-sidebar">
            <h3 style={{ marginBottom: '1rem', fontFamily: 'var(--font)' }}>{t('title')}</h3>
            <a href="/admin" className={`admin-nav-item ${tab === 'overview' ? 'active' : ''}`}>{t('overview')}</a>
            <a href="/admin?tab=posts" className={`admin-nav-item ${tab === 'posts' ? 'active' : ''}`}>{t('posts')}</a>
            <a href="/admin/editor/new" className="admin-nav-item">{t('newPost')}</a>
          </aside>
          <section className="admin-content">
            {tab === 'overview' ? <AdminOverview /> : <PostList posts={posts} />}
          </section>
        </div>
      </main>
    </>
  );
}
