import { LEAD, PROPERTY_STATUS } from "@/constants/constants";

const {
  NEW_LEAD,
  CONTACTED,
  QUALIFIED,
  PROPOSAL,
  NEGOTIATION,
  CLOSED_WON,
  CLOSED_LOST,
} = LEAD;

export function getLeadStageBadgeVariant(stage: string) {
  switch (stage) {
    case NEW_LEAD:
      return "bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-400";
    case CONTACTED:
      return "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400";
    case QUALIFIED:
      return "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400";
    case PROPOSAL:
      return "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-400";
    case NEGOTIATION:
      return "bg-pink-100 text-pink-800 dark:bg-pink-900/30 dark:text-pink-400";
    case CLOSED_WON:
      return "bg-emerald-100 text-emerald-800 dark:bg-emerald-900/30 dark:text-emerald-400";
    case CLOSED_LOST:
      return "bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-400";
    default:
      return "bg-primary/10 text-primary";
  }
}

export const getPropertyTypeBadgeStyle = (type: string) => {
  switch (type) {
    case "residential":
      return "bg-blue-100 text-blue-800 hover:bg-blue-200";
    case "commercial":
      return "bg-purple-100 text-purple-800 hover:bg-purple-200";
    case "industrial":
      return "bg-amber-100 text-amber-800 hover:bg-amber-200";
    case "land":
      return "bg-green-100 text-green-800 hover:bg-green-200";
    default:
      return "bg-gray-100 text-gray-800 hover:bg-gray-200";
  }
};

export const getAvailableForBadgeStyle = (availableFor: string) => {
  switch (availableFor) {
    case "sell":
      return "bg-emerald-100 text-emerald-800 hover:bg-emerald-200";
    case "rent":
      return "bg-blue-100 text-blue-800 hover:bg-blue-200";
    case "lease":
      return "bg-violet-100 text-violet-800 hover:bg-violet-200";
    default:
      return "bg-gray-100 text-gray-800 hover:bg-gray-200";
  }
};

export const getPropertyStatusBadgeStyle = (status: string) => {
  switch (status) {
    case PROPERTY_STATUS.DRAFT.toUpperCase():
      return "bg-gray-100 text-gray-800 hover:bg-gray-200";
    case PROPERTY_STATUS.ACTIVE.toUpperCase():
      return "bg-green-100 text-green-800 hover:bg-green-200";
    case PROPERTY_STATUS.INACTIVE.toUpperCase():
      return "bg-red-100 text-red-800 hover:bg-red-200";
    default:
      return "bg-gray-100 text-gray-800 hover:bg-gray-200";
  }
};
export const getAvailabilityBadgeVariant = (availability: string) => {
  switch (availability) {
    case "Available":
      return "success";
    case "Booked":
    case "Sold":
      return "secondary";
    default:
      return "outline";
  }
};

export const getProspectStatusBadgeStyle = (status: string): string => {
  switch (status) {
    case "Hot":
      return "bg-red-100 text-red-800 hover:bg-red-200";
    case "Warm":
      return "bg-orange-100 text-orange-800 hover:bg-orange-200";
    case "Cold":
      return "bg-blue-100 text-blue-800 hover:bg-blue-200";
    default:
      return "bg-gray-100 text-gray-800 hover:bg-gray-200";
  }
};
