"use client";

import { trpc } from "@/app/_trpc/client";
import ModifyTaskSidebar from "@/components/tasks/ModifyTask";
import WorkingTaskTimer from "@/components/tasks/WorkingTaskTimer";
import { Badge } from "@/components/ui/badge";
import { cn, getPriorityColor } from "@/lib/utils";
import {
  SquareUserRound,
} from "lucide-react";
import { useMemo, useState } from "react";
import useKanvanTask from "../hooks/useKanvanTask";
import {
  EmplyPlaceHolder,
  EmptyIcon,
  EmptyTitle,
} from "@/components/EmplyPlaceHolder";
import { SelectedTask } from "@/types";
import { Task } from "@/server/task/domain/models";

const getStatusColorBg = (status: string) => {
  switch (status) {
    case "no iniciada":
      return "bg-yellow-500";
    case "en proceso":
      return "bg-blue-500";
    case "completada":
      return "bg-green-300";
    case "revisada":
      return "bg-green-700";
    case "cancelada":
      return "bg-red-600";
    case "reabierta":
      return "bg-blue-800";
    case "no completada":
      return "bg-purple-500";
    default:
      return "bg-yellow-700";
  }
};

const TaskListCanvas = ({
  searchParams,
}: {
  searchParams: Record<string, any>;
}) => {
  const [selectedTask, setselectedTask] = useState<Task | null>(null);
  const [tasks] = trpc.tasks.getProjectTasks.useSuspenseQuery(searchParams, {
    refetchOnMount: false,
  });

  const { kanvanTasks } = useKanvanTask(tasks);

  // // Si no hay tareas, pero no hubo errores
  if (!kanvanTasks?.length) {
    return (
      <div className="min-h-[55vh] grid place-content-center">
        <EmplyPlaceHolder>
          <EmptyIcon iconName="notFoundCat"  className="text-primary/80" />
          <EmptyTitle className="mt-1" >No tienes tareas asignadas!</EmptyTitle>
        </EmplyPlaceHolder>
      </div>
    ); 
  }

 
  return (
    <div>
      <div className=" flex pb-5 gap-1  overflow-x-scroll min-h-[70vh]">
        {kanvanTasks?.map(
          ({ status, items }: { status: string; items: any }) => {
            return (
              <div
                key={status}
                className=" min-h-[200px] min-w-[290px] h-fit rounded-sm  px-2 "
              >
                <div className="flex items-center gap-2  text-black  border-b-2 border-dashed border-gray-500  py-1 font-semibold">
                  <h3 className=" font-light capitalize text-base ">
                    {status}
                  </h3>
                  <div
                    className={cn(
                      "w-4 h-2 bg-red-500  rounded-2xl",
                      getStatusColorBg(status)
                    )}
                  ></div>
                </div>
                <div className=" bg-transparent space-y-4">
                  {items?.map((task: any) => {
                    return (
                      <article
                        key={task.id}
                        className={cn(
                          "relative flex gap-1  space-y-1 bg-white/50 rounded-sm py-1",
                        )}
                      >
                        <div className={cn("w-1.5  border",getStatusColorBg(status))}/>
                       <div className="flex-1">
                       <Badge
                          className={cn(
                            "absolute top-1 text-white rounded-2xl text-xs capitalize right-1",
                            getPriorityColor(task.priority)
                          )}
                        >
                          {task.priority}
                        </Badge>

                        <div className=" flex items-center gap-1">
                          <p className="text-xs text-gray-500">
                            {task?.projectName}
                          </p>
                        </div>

                        <div className="flex items-center gap-1 ">
                          <p className="text-sm font-bold space-x-2 capitalize">
                            <span>{task?.floorName}</span>
                            <span>{task?.areaName}</span>
                          </p>
                        </div>

                        <div className="flex justify-between gap-4">
                          <div className="flex gap-5">
                            <div className="flex items-center gap-1">
                              <SquareUserRound
                                size={20}
                                className="text-gray-600"
                              />
                              <p className="text-sm ">
                                {task?.user?.firstName}
                              </p>
                            </div>
                            <div className="flex items-center gap-1">
                              <p className="text-sm text-gray-600">
                                {
                                  <WorkingTaskTimer
                                    status={task?.status}
                                    startedTime={task?.startedTime}
                                    endedTime={task?.endedTime}
                                  />
                                }
                              </p>
                            </div>
                          </div>
                          <div>
                            <button onClick={() => setselectedTask(task)}>
                              <ModifyTaskSidebar
                                selectedTask={selectedTask!}
                                isEmployeeEdit={false}
                              />
                            </button>
                          </div>
                        </div>
                       </div>
                      </article>
                    );
                  })}
                </div>
              </div>
            );
          }
        )}
      </div>
    </div>
  );
};

export default TaskListCanvas;
