export type TaskStatus =
  | "PENDING"
  | "IN_PROGRESS"
  | "EMPLOYEE_DONE"
  | "MANAGER_APPROVAL"
  | "CLIENT_APPROVAL"
  | "FILING_PENDING"
  | "COMPLETED"
  | "REJECTED";

export type Priority = "LOW" | "MEDIUM" | "HIGH" | "URGENT";

export interface TaskDocument {
  id: string;
  fileName: string;
  fileUrl: string;
  fileType: string | null;
  fileSizeKb: number | null;
  status: string;
  createdAt: string;
  serviceDocument?: { id: string; name: string } | null;
}

export interface AdminTask {
  id: string;
  title: string;
  description: string | null;
  status: TaskStatus;
  priority: Priority;
  dueDate: string | null;
  completedAt: string | null;
  createdAt: string;
  updatedAt: string;
  client: { id: string; name: string; email: string; companyName: string | null };
  service: { id: string; name: string; category: string };
  department: { id: string; name: string } | null;
  assignedEmployee: { id: string; name: string; email: string; role: string } | null;
  documents: TaskDocument[];
  approvals: TaskApproval[];
  assignedEmployeeId: string;
  invoice?: { id: string; status: string; totalAmount: string } | null;
}

export interface TaskApproval {
  id: string;
  stage: string;
  status: string;
  remarks: string | null;
  actedAt: string | null;
}

export interface ActiveEmployee {
  id: string;
  name: string;
  email: string;
  role: string;
  departmentId: string | null;
  department: { id: string; name: string } | null;
}

export interface AdminUpdateTaskPayload {
  status?: TaskStatus;
  assignedEmployeeId?: string;
  departmentId?: string;
  priority?: Priority;
  dueDate?: string;
  title?: string;
  description?: string;
}

export interface AdminTaskFilters {
  status?: TaskStatus | "ALL";
  search?: string;
  clientId?: string;
  departmentId?: string;
  assignedEmployeeId?: string;
  priority?: Priority | "ALL";
}
