import requests
from django.conf import settings

from app.util import util
from app.api.api_accessor import APIAccessor


class DecentroAccessor(APIAccessor):
    VALID_STATUS = 'VALID'

    @classmethod
    def validate_pan(cls, pan):

        # return 1, {'kycStatus': 'SUCCESS',
        #       'status': 'SUCCESS',
        #       'message': 'PAN details retrived successfully.',
        #       'kycResult': {'idNumber': 'CNNPS9982D',
        #        'idStatus': 'VALID',
        #        'name': 'KUNAL SANGWAN'},
        #       'responseKey': 'success_pan',
        #       'responseCode': 'S00000',
        #       'requestTimestamp': '2023-06-16 23:27:27.178087 IST (GMT +0530)',
        #       'responseTimestamp': '2023-06-16 23:27:27.289242 IST (GMT +0530)',
        #       'decentroTxnId': 'FBBC58A7908D4150AF039DD8CE46A7B8'}

        data = {
            "reference_id": cls.get_reference_id(),
            "document_type": "PAN_DETAILED",
            "id_number": pan,
            "consent": "Y",
            "consent_purpose": "For loan application validation"
        }

        return cls.request(requests.request, method="post", url=settings.DECENTRO_PAN_CHECK_URL, json=data,
                           headers=cls.get_kyc_onboarding_module_headers())

    @classmethod
    def get_headers(cls):
        return {
            "accept": "application/json",
            "content-type": "application/json",
            "client_id": settings.DECENTRO_CLIENT_ID,
            "client_secret": settings.DECENTRO_CLIENT_SECRET
        }

    @classmethod
    def get_kyc_onboarding_module_headers(cls):
        headers = cls.get_headers()
        headers["module_secret"] = settings.DECENTRO_ONBOARDING_MODULE_SECRET

        return headers
