# from django.shortcuts import render
# from .zoho_service import fetch_zoho_data
# from .models import Lead, CallLog

# # def home(request):
# #     # Fetch both leads and calls from Zoho CRM
# #     leads_data = fetch_zoho_data("Leads")
# #     calls_data = fetch_zoho_data("Calls")

# #     leads = leads_data.get("data", [])
# #     calls = calls_data.get("data", [])

# #     # Render everything to the frontend
# #     return render(request, "frontend/home.html", {
# #         "leads": leads,
# #         "calls": calls,
# #         "total_leads": len(leads),
# #         "total_calls": len(calls)
# #     })

# def home(request):
#     leads_data = fetch_zoho_data("Leads")
#     calls_data = fetch_zoho_data("Calls")

#     leads = leads_data.get("data", [])
#     calls = calls_data.get("data", [])

#     return render(request, "frontend/home.html", {
#         "leads": leads,
#         "calls": calls,
#         "total_leads": len(leads),
#         "total_calls": len(calls)
#     })

# def lead_detail(request, lead_id):
#     lead_details = fetch_zoho_data(f"Leads/{lead_id}")
#     calls_data = fetch_zoho_data("Calls")

#     related_calls = [
#         c for c in calls_data.get("data", [])
#         if c.get("Who_Id", {}).get("id") == lead_id
#     ]

#     return render(request, "frontend/lead_detail.html", {
#         "lead": lead_details.get("data", [{}])[0],
#         "calls": related_calls,
#         "total_calls": len(related_calls)
#     })

# def call_logs(request):
#     call_logs = CallLog.objects.select_related('lead').all().order_by('-date')
#     return render(request, 'frontend/call_logs.html', {'call_logs': call_logs})

import requests
from django.http import JsonResponse
from django.conf import settings
from django.shortcuts import render
from .zoho_service import fetch_zoho_data
from .zoho_service import get_access_token
from django.core.paginator import Paginator


def home(request):
    calls_data = fetch_zoho_data("Calls")
    calls = calls_data.get("data", [])[:10]
    # print("------calls----",calls) 
    return render(request, "frontend/home.html", {"calls": calls})

def leads_page(request):
    leads_data = fetch_zoho_data("Leads")
    leads = leads_data.get("data", [])
    page_number = request.GET.get('page', 1)  
    paginator = Paginator(leads, 10)  
    print("paginator",paginator)
    page_obj = paginator.get_page(page_number)
    # print("---------",leads)
    return render(request, "frontend/leads.html", {"leads": page_obj})

def call_logs_page(request):
    calls_data = fetch_zoho_data("Calls")
    calls = calls_data.get("data", [])
    paginator = Paginator(calls, 10) 
    page_number = request.GET.get('page', 1)
    page_obj = paginator.get_page(page_number)
    # print("Page object:--------------", page_obj.object_list)
    return render(request, "frontend/call_logs.html", {"calls": page_obj})



def get_call_insights(request, call_id):
    """
    Fetch a single call's details from Zoho CRM including Description, Status, Start Time, Transcript.
    """
    access_token = get_access_token()
    if not access_token:
        return JsonResponse({"error": "Failed to generate Zoho access token"}, status=400)

    url = f"https://www.zohoapis.in/crm/v2/Calls/{call_id}"
    headers = {"Authorization": f"Zoho-oauthtoken {access_token}"}

    try:
        response = requests.get(url, headers=headers)
        if response.status_code != 200:
            print(" Error fetching call insights:", response.text)
            return JsonResponse({"error": "Failed to fetch call data"}, status=response.status_code)

        data_list = response.json().get("data", [])
        if not data_list:
            return JsonResponse({"error": "No data found"}, status=404)

        call = data_list[0]

      
        description = (
            call.get("Description")
            or call.get("Call_Description")
            or call.get("Notes")
            or call.get("Call_Result")
            or call.get("Outcome")
            or call.get("Custom_Description") 
            or "No description available"
        )

      
        transcript = (
            call.get("Transcript")
            or call.get("AI_Transcript")
            or call.get("Call_Transcript")
            or "No transcript available"
        )

        return JsonResponse({
            "Call_Status": call.get("Call_Status", "Unknown"),
            "Call_Start_Time": call.get("Call_Start_Time", "Unknown"),
            "Description": description,
            "Transcript": transcript
        })

    except Exception as e:
        print(" Exception fetching call insights:", str(e))
        return JsonResponse({"error": str(e)}, status=500)

