import { parseCurrencyConversionSearchParams } from "./_components/constants"
import { CurrencyConversionPageClient } from "./_components/currency-conversion-page-client"
import { fetchBackendCurrencyConversion } from "./_lib/currency-conversion-server-api"

type PageProps = {
  searchParams: Promise<{
    tab?: string
    srNo?: string
    isin?: string
    name?: string
    fromCurrency?: string
    toCurrency?: string
    conversionRate?: string
    conversionRateCurrency?: string
    dataUpdateDate?: string
    conversionRateDate2?: string
    page?: string
    page_size?: string
  }>
}

export default async function CurrencyConversionPage({ searchParams }: PageProps) {
  const query = parseCurrencyConversionSearchParams(await searchParams)
  const result = await fetchBackendCurrencyConversion(query)

  return (
    <CurrencyConversionPageClient
      key={`${result.activeTab}-${result.page}-${result.pageSize}`}
      activeTab={result.activeTab}
      filters={{
        srNo: query.srNo,
        isin: query.isin,
        name: query.name,
        fromCurrency: query.fromCurrency,
        toCurrency: query.toCurrency,
        conversionRate: query.conversionRate,
        conversionRateCurrency: query.conversionRateCurrency,
        dataUpdateDate: query.dataUpdateDate,
        conversionRateDate2: query.conversionRateDate2,
      }}
      data={result.rows}
      tabs={result.tabs}
      totalCount={result.totalCount}
      page={result.page}
      pageSize={result.pageSize}
      pageCount={result.pageCount}
      errorMessage={result.errorMessage}
    />
  )
}
