from django.shortcuts import render, redirect
from django.contrib.auth import login, authenticate, logout
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from .forms import ApplicantRegistrationForm, ApplicantLoginForm
from credit_scoring.models import CreditApplication
from django.contrib.auth import get_user_model

User = get_user_model()

def applicant_register(request):
    if request.user.is_authenticated:
        return redirect('applicant_dashboard')
    
    if request.method == 'POST':
        form = ApplicantRegistrationForm(request.POST)
        if form.is_valid():
            user = form.save()
            login(request, user)
            messages.success(request, f'Welcome {user.username}! Your account has been created.')
            return redirect('applicant_dashboard')
    else:
        form = ApplicantRegistrationForm()
    
    return render(request, 'accounts/register.html', {'form': form})

def applicant_login(request):
    if request.user.is_authenticated:
        return redirect('applicant_dashboard')
    
    if request.method == 'POST':
        form = ApplicantLoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user = authenticate(request, username=username, password=password)
            if user and user.role == 'APPLICANT':
                login(request, user)
                messages.success(request, f'Welcome back {user.username}!')
                return redirect('applicant_dashboard')
            else:
                messages.error(request, 'Invalid username or password')
    else:
        form = ApplicantLoginForm()
    
    return render(request, 'accounts/login.html', {'form': form})

def applicant_logout(request):
    logout(request)
    messages.info(request, 'You have been logged out.')
    return redirect('applicant_login')