import { getUser } from '../../lib/jwt';
import { getPercentage } from '../../helper/number';
import { ProjectProgressActions } from './ProjectProgressActions';
import { cn } from '../../lib/classname';
import type { ProjectStatusDocument } from '../Projects/ListProjectSolutions';
import { ProjectStatus } from './ProjectStatus';
import { ThumbsUp } from 'lucide-react';

type ProjectProgressType = {
  projectStatus: ProjectStatusDocument & {
    title: string;
  };
  showActions?: boolean;
  userId?: string;
};

export function ProjectProgress(props: ProjectProgressType) {
  const {
    projectStatus,
    showActions = true,
    userId: defaultUserId = getUser()?.id,
  } = props;

  const shouldShowActions =
    projectStatus.submittedAt &&
    projectStatus.submittedAt !== null &&
    showActions;

  return (
    <div className="relative">
      <a
        className={cn(
          'group relative flex w-full items-center justify-between overflow-hidden rounded-md border border-gray-300 bg-white px-3 py-2 pr-7 text-left text-sm transition-all hover:border-gray-400',
          shouldShowActions ? '' : 'pr-3',
        )}
        href={`/projects/${projectStatus.projectId}`}
        target="_blank"
      >
        <ProjectStatus projectStatus={projectStatus} />
        <span className="ml-2 flex-grow truncate">{projectStatus?.title}</span>
        <span className="inline-flex items-center gap-1 text-xs text-gray-400">
          {projectStatus.upvotes}
          <ThumbsUp className="size-2.5 stroke-[2.5px]" />
        </span>
      </a>

      {shouldShowActions && (
        <div className="absolute right-2 top-0 flex h-full items-center">
          <ProjectProgressActions
            userId={defaultUserId!}
            projectId={projectStatus.projectId}
          />
        </div>
      )}
    </div>
  );
}