from django.shortcuts import render , redirect
from django.http import HttpResponse, JsonResponse
from .forms import SignupForm, UserForm
from django.contrib.auth import login , authenticate,logout
from django.contrib.auth import get_user_model

# Create your views here.

def dologin(request):
    if request.user.is_authenticated:
        return redirect("interface:index")
    if request.method == "POST":
        username = request.POST.get("username")
        password = request.POST.get("password")
        user = authenticate(request, username=username, password=password)
        if user == None:
            message = "Invalid User or Password"
            print(message)
            return render(request, "accounts/login.html", {"message": message})

        login(request, user)

        request.session["user"] = username
        print(username + " is logged in")
        return redirect("interface:upload")
    return render(request, "accounts/login.html")


User = get_user_model()


def signup(request):
    if request.user.is_authenticated:
        return redirect("interface:index")
    if request.method == "POST":
        fname = request.POST.get("first_name")
        lname = request.POST.get("last_name")
        username = request.POST.get('username')
        email = request.POST.get("email")
        password = request.POST.get("password")
        
        try:
            user = User.objects.create_user(
                first_name=fname,
                last_name=lname,
                username=username,
                email=email,
                password=password,
                is_staff = True
            )
        except:
            user = None
        
        if user != None:
            login(request, user, backend="django.contrib.auth.backends.ModelBackend")
            request.session["username_email"] = email
            print(fname + " Are logged in with registeration")
            return redirect("interface:index")
        
        else:
            print("error happen when signup")
            return render(request, "accounts/signup.html")
    return render(request, "accounts/signup.html")


def logout_user(request):
    try:
        del request.session["username"]
    except:
        pass
    logout(request)
    return redirect("accounts:login")


# funciton that accept ajax request to check if email is unique before logged in the user
def check_email(request):
    pass
    data = {}
    if request.method == "POST":
        ajax_email = request.POST.get("email")
        data["is_taken"] = User.objects.filter(email__iexact=ajax_email).exists()
        return JsonResponse(data)
