from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from rest_framework.decorators import api_view
from datetime import datetime
from apps.services.external_api_service import call_external_api
from apps.settings import *
from apps.utils import *

@api_view(['GET'])
def GetDLdetails_apizone(request):
    dl_number = request.GET.get("dl_number")
    dob = request.GET.get("dob")
    dobFormatted = datetime.strptime(dob, "%Y-%m-%d").strftime("%d-%m-%Y")
    
    base_url = get_base_url("apizone")
    url = f"{base_url}/api/dl_pdf/dlprint.php"
    
    API_KEY = "c9984de181558314ef5451d9c2bba0"
    payload = {
        "dlno": dl_number,
        "dob":dobFormatted,
        "api_key": API_KEY,
        "cardtype":1
    }

    result = call_external_api(url, payload=payload)
    
    if result["status"]:
            return Response({
                "status": True,
                 "result": result,
                "data": result["data"]
            })
    else:
            return Response({
                "status": False,
                "error": result["error"]
            }, status=400) 


@api_view(['GET'])
def GetDLdetails_goodapi(request):
    dl_number = request.GET.get("dl_number")
    dob = request.GET.get("dob")
    dobFormatted = datetime.strptime(dob, "%Y-%m-%d").strftime("%d-%m-%Y")
    
    url = "https://goodapi.in/api_services/V1/vahanServices/dl_pdf.php"
    API_KEY = GoodAPI_Key
    payload = {
        "dlno": dl_number,
        "dob":dobFormatted,
        "apiKey": API_KEY,
        "card_type":1
    }

    result = call_external_api(url, payload=payload)
    
    if result["status"]:
            return Response({
                "status": True,
                 "result": result,
                "data": result["data"]
            })
    else:
            return Response({
                "status": False,
                "error": result["error"]
            }, status=400) 




# curl --location --request GET 'https://darkxen.in/api/v3/DL/dl_pdf_verification.php?apiKey=7949f8fa53115c49d3c5bcd60b202c273ad217ce029c78861a1daba60f61f787&dlNumber=YOUR_VALUE&dob=YOUR_VALUE&dltype=YOUR_VALUE' \
# --header 'Accept: application/json'




@api_view(['GET'])
def GetDLdetails_darkxenapi(request):
    #dl_number = request.GET.get("dl_number")
    #dob = request.GET.get("dob")
    #dobFormatted = datetime.strptime(dob, "%Y-%m-%d").strftime("%d-%m-%Y")
    
    url = "https://darkxen.in/api/v3/DL/dl_pdf_verification.php"
    API_KEY = DarkXen_Key
    # payload = {
    #     "dlno": dl_number,
    #     "dob":dobFormatted,
    #     "apiKey": API_KEY,
    #     "dltype":1
    # }
    payload = {
        "dlNumber": "mh1220190004779",
        "dob":"13-03-1973",
        "apiKey": API_KEY,
        "dltype":1
    }
    print(payload);

    result = call_external_api(url, payload=payload)
    
    if result["status"]:
            return Response({
                "status": True,
                 "result": result,
                "data": result["data"]
            })
    else:
            return Response({
                "status": False,
                "error": result["error"]
            }, status=400) 





@api_view(['GET'])
def GetDLdetails_p4pointapi(request):
    #dl_number = request.GET.get("dl_number")
    #dob = request.GET.get("dob")
    #dobFormatted = datetime.strptime(dob, "%Y-%m-%d").strftime("%d-%m-%Y")
    
    url = "https://authorized.p4points.co.in/serviceApi/TargetApiV1/DL/dl_link.php"
    API_KEY = P4point_Key
    # payload = {
    #     "dlno": dl_number,
    #     "dob":dobFormatted,
    #     "apiKey": API_KEY,
    #     "dltype":1
    # }
    payload = {
        "dlNo": "mh1220190004779",
        "dob":"13-03-1973",
        "apiKey": API_KEY,
        "dltype":1
    }
  

    result = call_external_api(url, payload=payload)
    
    if result["status"]:
            return Response({
                "status": True,
                 "result": result,
                "data": result["data"]
            })
    else:
            return Response({
                "status": False,
                "error": result["error"]
            }, status=400) 


