
/* eslint-disable -- temporary disable for development/testing purposes */

import { NextRequest, NextResponse } from 'next/server';

export async function POST(req: NextRequest) {
  try {
    const {
      origins,
      destinations,
      providerEmail,
      patientName,
      patientAddress,
      gender
    } = await req.json();

    if (!origins || !destinations || !providerEmail || !patientName || !patientAddress || !gender) {
      return NextResponse.json({ error: 'Missing parameters' }, { status: 400 });
    }

    // 1️⃣ Calculate distance
    const apiKey = process.env.NEXT_PUBLIC_GOOGLE_MAPS_API_KEY;
    const apiUrl = `https://maps.googleapis.com/maps/api/distancematrix/json?origins=${origins}&destinations=${destinations}&units=imperial&key=${apiKey}`;

    const response = await fetch(apiUrl);
    const data = await response.json();

    const distanceText = data.rows[0]?.elements[0]?.distance?.text || 'Unknown distance';

    // 2️⃣ Send email
    const formData = new URLSearchParams();
    formData.append('receiver_email', providerEmail);
    formData.append('miles', distanceText);
    formData.append('patient_name', patientName);
    formData.append('patient_address', patientAddress);
    formData.append('gender', gender);
    formData.append('action', 'new_case');

    const emailResponse = await fetch('https://gohelloprovider.com/api/emailproject/send_email.php', {
      method: 'POST',
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
      body: formData.toString(),
    });

    const emailData = await emailResponse.json();

    return NextResponse.json({
      message: 'Distance calculated and email sent successfully.',
      distance: distanceText,
      emailResponse: emailData
    });
  } catch (error) {
    // console.error('Error in calculate-and-email:', error);
    return NextResponse.json({ error: 'Internal server error' }, { status: 500 });
  }
}
