import type { StepValidation, StepValidationStatus, TripMember } from "@/types";

export interface TravelerStepDecision {
  travelerId: string;
  name: string;
  email: string;
  status: StepValidationStatus;
}

export function getTravelerStepDecisions(
  validations: StepValidation[] | undefined,
  members: TripMember[] | undefined,
): TravelerStepDecision[] {
  const decisions = new Map((validations || []).map((validation) => [validation.travelerId, validation.status]));
  return (members || []).map((member) => ({
    travelerId: member.userId,
    name: member.name,
    email: member.email,
    status: decisions.get(member.userId) || "pending",
  }));
}

export function countTravelerStepDecisions(decisions: TravelerStepDecision[]) {
  return {
    approved: decisions.filter((decision) => decision.status === "approved").length,
    rejected: decisions.filter((decision) => decision.status === "rejected").length,
    pending: decisions.filter((decision) => decision.status === "pending").length,
  };
}
