import { ActiveTab } from '@/schema/websiteBuilderSchema'
import {
  MakanifySiteResponse,
  TransformBodyReturnType,
} from '@/types/website-builder'

export const getDefaultValuesForTab = (
  tab: ActiveTab,
  data: Partial<MakanifySiteResponse> | undefined
) => {
  if (!data) return {}
  switch (tab) {
    case 'domain':
      return {
        template: data.template,
        company: data.company?.id || '',
        companyName: data.companyName || '',
        subdomainName: data.subdomainName  && data.subdomainName.toLowerCase()?.replace(/\s+/g, "-") || '',
      }
    case 'leads':
      return {
        template: data.template,
        teamId: data.teamId?.id,
        userId: data.userId?.id,
        leadRoutingType: data.leadRoutingType,
        leadRoutingUserId: data.leadRoutingUserId,
        leadNotifyAdmin: data.leadNotifyAdmin,
      }
    case 'websiteInfo':
      return {
        template: data.template,
        contactNumber: data.contactNumber?.number?.toString(),
        whatsappNumber: data.whatsappNumber?.number?.toString(),
        heroBannerTitle: data.heroBannerTitle,
        heroBannerDesc: data.heroBannerDesc,
        bannerImg: data.bannerImg,
        aboutTitle: data.aboutTitle,
        aboutDesc: data.aboutDesc,
        aboutImg: data.aboutImg,
        isPublished: data.isPublished,
        serviceTitle: data.serviceTitle,
        serviceDesc: data.serviceDesc,
        companyLogo: data.companyLogo,
        findPropertyTitle: data.findPropertyTitle,
        findPropertyDesc: data.findPropertyDesc,
        sellPropertyTitle: data.sellPropertyTitle,
        sellPropertyDesc: data.sellPropertyDesc,
        rentPropertyTitle: data.rentPropertyTitle,
        rentPropertyDesc: data.rentPropertyDesc,
      };
    default:
      return {
        template: data.template,
        company: data.company?.id || '',
        draftTemplateId: '',
      }
  }
}

export const transformDefaultData = (
  data: MakanifySiteResponse | undefined
) => {
  if (data === undefined) return {}
  return {
    id: data.id,
    template: data.template,
    companyName: data?.companyName,
    company: data.company?.id || '',
    subdomainName: data.subdomainName || '',
    teamId: data.teamId?.id,
    leadRoutingType: data.leadRoutingType,
    leadRoutingUserId: data.leadRoutingUserId,
    leadNotifyAdmin: data.leadNotifyAdmin,
    contactNumber: data.contactNumber?.number?.toString(),
    whatsappNumber: data.whatsappNumber?.number?.toString(),
    heroBannerTitle: data.heroBannerTitle,
    heroBannerDesc: data.heroBannerDesc,
    bannerImg: data.bannerImg,
    aboutTitle: data.aboutTitle,
    aboutDesc: data.aboutDesc,
    aboutImg: data.aboutImg,
    isPublished: data.isPublished,
    serviceTitle: data.serviceTitle,
    serviceDesc: data.serviceDesc,
    companyLogo: data.companyLogo,
  }
}

type PartialPhoneFields = {
  contactNumber?: string | number
  whatsappNumber?: string | number
}
export const transformBody = (
  tab: ActiveTab,
  data: Partial<MakanifySiteResponse> | undefined
) => {
  if (!data) return {}
  switch (tab) {
    case 'domain':
      return {
        template: data.template,
        id: data.id,
        company: data.company || '',
        companyName: data.companyName || '',
        subdomainName:  data.subdomainName && data.subdomainName.toLowerCase()?.replace(/\s+/g, "-") || '',
      }
    case 'leads':
      return {
        template: data.template,
        id: data.id,
        ...(data.leadRoutingType === 'team' && { teamId: data.teamId }), // if leadRoutingType is team, include teamId: data.teamId,
        ...(data.leadRoutingType === 'user' && { userId: data.userId }), // if leadRoutingType is user, include userId: data.userId,
        leadRoutingType: data.leadRoutingType,
        leadRoutingUserId: data.leadRoutingUserId,
        leadNotifyAdmin: data.leadNotifyAdmin,
      }
    case 'websiteInfo':
      return {
        template: data.template,
        id: data.id,
        contactNumber: {
          dialCode: 91,
          number: data?.contactNumber,
        },
        whatsappNumber: {
          dialCode: 91,
          number: data?.whatsappNumber,
        },
        heroBannerTitle: data.heroBannerTitle,
        heroBannerDesc: data.heroBannerDesc,
        bannerImg: data.bannerImg,
        aboutTitle: data.aboutTitle,
        aboutDesc: data.aboutDesc,
        aboutImg: data.aboutImg,
        isPublished: data.isPublished,
        serviceTitle: data.serviceTitle,
        serviceDesc: data.serviceDesc,
        companyLogo: data.companyLogo,
        findPropertyTitle: data.findPropertyTitle,
        findPropertyDesc: data.findPropertyDesc,
        sellPropertyTitle: data.sellPropertyTitle,
        sellPropertyDesc: data.sellPropertyDesc,
        rentPropertyTitle: data.rentPropertyTitle,
        rentPropertyDesc: data.rentPropertyDesc,
      };
    default:
      return { template: data.template, company: data.company || '' }
  }
}
