
# Create your views here.
from django.contrib import messages
from django.shortcuts import redirect, render
from .models import subcriber
from .forms  import suscriberForm
from ekila.settings import GOOGLE_RECAPTCHA_SECRET_KEY
from ekila.settings import GOOGLE_RECAPTCHA_SITE_KEY 
from django.conf import settings
from django.db.utils import IntegrityError
import requests
import random
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
from django.views.decorators.cache import never_cache


def random_digits():
    return "%0.12d" % random.randint(0, 99999999999999)

def checkMailExistence(value):
    if subcriber.objects.filter(email = value).exists():
        return True
    else:
        return False
        
def check_mail(email):
    subs = subcriber.objects.all()
    for value in subs:
        if value.email == email:
            bool = True
            break
        else:
            bool = False
    return bool

@never_cache
def suscribe(request):
    if request.method == 'POST':
        sub = subcriber(nom = request.POST['nom'] , email=request.POST['email'], conf_num=random_digits())
        _bool = check_mail(request.POST['email'])
        if _bool:
            messages.error(request, "email déja  utilisé")
        else:
            recaptcha_response = request.POST.get('g-recaptcha-response')
            data = {
                'secret': GOOGLE_RECAPTCHA_SECRET_KEY,
                'response': recaptcha_response
            }
            r = requests.post('https://www.google.com/recaptcha/api/siteverify', data=data)
            result = r.json()
                
            if result['success']:
                sub.save()
                message = Mail(
                    from_email=settings.FROM_EMAIL,
                    to_emails=sub.email,
                    subject='Ekila radio newsletter confirmation',
                    html_content='Thank you for signing up for our email newsletter! \
                        Please complete the process by \
                        <a href="{}/?email={}&conf_num={}"> clicking here to \
                        confirm your registration</a>.'.format(request.build_absolute_uri('/confirm/'), sub.email, sub.conf_num))
                            
                sg = SendGridAPIClient("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")
                response = sg.send(message)
                messages.success(request , sub.email  + "  a reçu un mail de confirmation")
               
            return redirect('/newsletter')
    else:
        return render(request, 'newsletter.html', {'form': suscriberForm(), 'recaptcha_site_key':GOOGLE_RECAPTCHA_SITE_KEY })
        

def confirm(request):
    sub = subcriber.objects.get(email=request.GET['email'])
    if sub.conf_num == request.GET['conf_num']:
        sub.confirmed = True
        sub.save()
        return render(request, 'newsletter.html', {'form': suscriberForm(), 'email': sub.email, 'action': 'abonnement reussi'})
    else:
        return render(request, 'newsletter.html', {'form': suscriberForm(), 'email': sub.email, 'action': " n'est pas abonné "})

def delete(request):
    sub = subcriber.objects.get(email=request.GET['email'])
    if sub.conf_num == request.GET['conf_num']:
        sub.delete()
        return render(request, 'newsletter.html', {'form': suscriberForm(), 'email': sub.email, 'action': 'desabonnement reussi'})
    else:
        return render(request, 'newsletter.html', {'form': suscriberForm(), 'email': sub.email, 'action': "n'est pas désabonné"})



        
