<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class LeadEmailController extends Controller
{
    /**
     * Get emails linked to a specific lead
     *
     * @param Request $request
     * @param int $lead_id
     * @return \Illuminate\Http\JsonResponse
     */
    public function getLeadEmails(Request $request, $lead_id)
    {
        try {
            $database = 'mysql_3'; // Can be made dynamic if needed

            // Get emails linked to this lead
            $emails = DB::connection($database)
                ->table('email_lead_links')
                ->join('emails', 'email_lead_links.email_id', '=', 'emails.id')
                ->where('email_lead_links.lead_id', $lead_id)
                ->select(
                    'emails.id',
                    'emails.message_id',
                    'emails.from_email',
                    'emails.from_name',
                    'emails.to_email',
                    'emails.subject',
                    'emails.body_text',
                    'emails.received_date',
                    'emails.has_attachments',
                    'emails.created_at',
                    'email_lead_links.company_name',
                    'email_lead_links.lender_id',
                    'email_lead_links.processed_at'
                )
                ->orderBy('emails.received_date', 'desc')
                ->get();

            return response()->json([
                'success' => true,
                'lead_id' => (int)$lead_id,
                'emails_count' => $emails->count(),
                'emails' => $emails
            ], 200);
        } catch (\Exception $e) {
            return response()->json([
                'success' => false,
                'message' => 'Error fetching emails',
                'error' => $e->getMessage()
            ], 500);
        }
    }

    /**
     * Get email details by email ID
     *
     * @param Request $request
     * @param int $email_id
     * @return \Illuminate\Http\JsonResponse
     */
    public function getEmailDetails(Request $request, $email_id)
    {
        try {
            $database = 'mysql_3';

            $email = DB::connection($database)
                ->table('emails')
                ->where('id', $email_id)
                ->first();

            if (!$email) {
                return response()->json([
                    'success' => false,
                    'message' => 'Email not found'
                ], 404);
            }

            // Get linked leads
            $linkedLeads = DB::connection($database)
                ->table('email_lead_links')
                ->where('email_id', $email_id)
                ->pluck('lead_id')
                ->toArray();

            return response()->json([
                'success' => true,
                'email' => $email,
                'linked_leads' => $linkedLeads
            ], 200);
        } catch (\Exception $e) {
            return response()->json([
                'success' => false,
                'message' => 'Error fetching email details',
                'error' => $e->getMessage()
            ], 500);
        }
    }
}
