import { AssigneeAvatarStack } from '@/components/AssigneeAvatarStack';
import { TaskPriorityBadge } from '@/components/TaskPriorityBadge';
import { TaskStatusBadge } from '@/components/TaskStatusBadge';
import { TableCell, TableRow } from '@/components/ui/table';
import { formatDate, formatTaskCode } from '@/lib/utils';
import type { DivisionTask } from '@/types/task';

interface TasksTableRowProps {
    task: DivisionTask;
    visibleColumns: {
        code: boolean;
        name: boolean;
        priority: boolean;
        assignee: boolean;
        start_date: boolean;
        due_date: boolean;
        status: boolean;
    };
    onClick: () => void;
}

export function TasksTableRow({
    task,
    visibleColumns,
    onClick,
}: TasksTableRowProps) {
    return (
        <TableRow className="group h-16 cursor-pointer" onClick={onClick}>
            {visibleColumns.code && (
                <TableCell className="h-16 px-6 font-mono font-medium text-muted-foreground">
                    <p className="truncate font-normal text-muted-foreground">
                        {formatTaskCode(task.code)}
                    </p>
                </TableCell>
            )}
            {visibleColumns.name && (
                <TableCell className="h-16 px-6">
                    <p className="truncate font-medium">{task.name}</p>
                </TableCell>
            )}
            {visibleColumns.status && (
                <TableCell className="h-16 px-6">
                    <div className="flex justify-center">
                        <TaskStatusBadge
                            status={task.status}
                            className="text-[10px]"
                        />
                    </div>
                </TableCell>
            )}
            {visibleColumns.priority && (
                <TableCell className="h-16 px-6 text-center">
                    <div className="flex justify-center">
                        <TaskPriorityBadge level={task.priority_level} />
                    </div>
                </TableCell>
            )}
            {visibleColumns.assignee && (
                <TableCell className="h-16 px-6">
                    <div className="flex h-8 items-center justify-center">
                        <AssigneeAvatarStack
                            assignees={task.assignees}
                            withTooltip
                            emptyClassName="block w-20 truncate text-center text-[.7em]"
                        />
                    </div>
                </TableCell>
            )}
            {visibleColumns.start_date && (
                <TableCell className="h-16 px-6 text-muted-foreground">
                    <div className="grid place-items-center">
                        {task.start_date ? formatDate(task.start_date) : '-'}
                    </div>
                </TableCell>
            )}
            {visibleColumns.due_date && (
                <TableCell className="h-16 px-6 text-muted-foreground">
                    <div className="grid place-items-center">
                        {task.due_date ? formatDate(task.due_date) : '-'}
                    </div>
                </TableCell>
            )}
        </TableRow>
    );
}
