import json

from app.api import api
from app.models import DigitalSignDetails
from app.util import datetime_util


class DigitalSignDetailsAccessor:
    @classmethod
    def update_digital_sign_details(cls, application_id, os, browser, full_version, major_version, app_name,
                                    user_agent, user_ip, load_time, click_time, language, is_agreement_signed, type,
                                    esign_vendor, is_stamped, stamp_qty, applicant):
        client_json = {}
        if os:
            client_json['os'] = os

        if browser:
            client_json['browser'] = browser

        if full_version:
            client_json['full_version'] = full_version

        if major_version:
            client_json['major_version'] = major_version

        if app_name:
            client_json['app_name'] = app_name

        if user_agent:
            client_json['user_agent'] = user_agent

        time_now = datetime_util.get_now_ist_string()

        DigitalSignDetails.objects.update_or_create(application_id=application_id, defaults={
            'load_time': load_time,
            'click_time': click_time,
            'language': language,
            'isagreementsigned': is_agreement_signed,
            'type': type,
            'isaddress': user_ip,
            # 'esign_vendor': esign_vendor,
            # 'is_stamped': is_stamped,
            # 'stamp_qty': stamp_qty,
            'applicant': applicant,
            'client': json.dumps(client_json),
            "created_at": time_now,
            "updated_at": time_now
        })

        return api.SUCCESS

    @classmethod
    def is_application_signed(cls, application_id):
        return DigitalSignDetails.objects.filter(application_id=application_id).exists()
