from django.shortcuts import get_object_or_404
from datetime import datetime, timedelta
from .models import User, Verification
from setting.models import SiteSetting
import requests
import random
import string


def send_otp(mobile_number):
    rand = random.SystemRandom()
    digits = rand.choices(string.digits, k=6)
    verification_code = ''.join(digits)
    setting = SiteSetting.objects.get()
    param = {
        'op': 'pattern',
        'user': setting.sms_panel_username,
        'pass': setting.sms_panel_password,
        'fromNum': '3000505',
        'toNum': mobile_number,
        'patternCode': 'lavw24i0hvgc9n6',
        'inputData': [
            {
                'verification_code': verification_code
            }
        ]
    }
    response = requests.post('https://ippanel.com/api/select', json=param)
    if response.status_code != 200:
        return 'failed'

    try:
        verification = Verification.objects.get(mobile=mobile_number)
        verification.code = verification_code
        verification.expired_time = str(datetime.now() + timedelta(seconds=600))
    except Verification.DoesNotExist:
        verification = Verification(mobile=mobile_number, code=verification_code,
                                    expired_time=str(datetime.now() + timedelta(seconds=600)))
    verification.save()
    return 'sent'


def verify_code(mobile_number, verification_code):
    obj = get_object_or_404(Verification, mobile=mobile_number)
    if obj:
        if verification_code == obj.code:
            if datetime.now() < datetime.fromisoformat(obj.expired_time):
                return 'ok'
            return 'expired'
        return 'wrong code'
    return 'wrong code2'
