import { leave_requests } from '@prisma/client';
import { toDateOnly } from '../domain/leave/dateUtils';

export function mapLeaveRequest(
  row: leave_requests & {
    leave_request_approvals?: Array<{
      approver_employee_id: string;
      approval_reason: string | null;
      created_at: Date;
    }>;
  },
) {
  const approvals = (row.leave_request_approvals ?? []).filter((a) => a.approval_reason);
  return {
    id: row.id,
    employeeId: row.employee_id,
    leaveType: row.leave_type,
    duration: row.duration,
    halfDaySlot: row.half_day_slot,
    startDate: toDateOnly(row.start_date),
    endDate: toDateOnly(row.end_date),
    leaveDays: Number(row.leave_days),
    status: row.status,
    reason: row.reason,
    isBackdated: row.is_backdated,
    sandwichApplied: row.sandwich_applied,
    backdateApprovalCount: approvals.length,
    approvals: approvals.map((a) => ({
      approverEmployeeId: a.approver_employee_id,
      approvalReason: a.approval_reason,
      approvedAt: a.created_at.toISOString(),
    })),
  };
}
