from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from django.urls import reverse
from credit_scoring.models import CreditApplication
from .forms import CreditApplicationForm, SectorApplicationForm
from django.utils import timezone

@login_required
def submit_application(request):
    if request.method == 'POST':
        app_form = CreditApplicationForm(request.POST)
        sector_form = SectorApplicationForm(request.POST)
        
        if app_form.is_valid() and sector_form.is_valid():
            # Save credit application
            credit_app = app_form.save(commit=False)
            credit_app.applicant = request.user
            credit_app.status = 'SUBMITTED'
            credit_app.submitted_at = timezone.now()
            credit_app.save()
            
            # Save sector details
            sector_app = sector_form.save(commit=False)
            sector_app.credit_application = credit_app
            sector_app.applicant = request.user
            sector_app.save()
            
            messages.success(request, f'Application {credit_app.application_number} submitted successfully!')
            return redirect('application_status', app_id=credit_app.id)
    else:
        app_form = CreditApplicationForm()
        sector_form = SectorApplicationForm()
    
    return render(request, 'applications/submit.html', {
        'app_form': app_form,
        'sector_form': sector_form
    })
@login_required
def reapply(request, app_id):
    old_application = get_object_or_404(CreditApplication, id=app_id, applicant=request.user)
    
    if request.method == 'POST':
        app_form = CreditApplicationForm(request.POST)
        sector_form = SectorApplicationForm(request.POST)
        
        if app_form.is_valid() and sector_form.is_valid():
            # Create new application
            credit_app = app_form.save(commit=False)
            credit_app.applicant = request.user
            credit_app.status = 'SUBMITTED'
            credit_app.submitted_at = timezone.now()
            credit_app.save()
            
            # Copy sector details
            sector_app = sector_form.save(commit=False)
            sector_app.credit_application = credit_app
            sector_app.applicant = request.user
            sector_app.save()
            
            messages.success(request, f'New application {credit_app.application_number} submitted!')
            return redirect('application_status', app_id=credit_app.id)
    else:
        # Pre-populate with old application data
        app_data = {
            'business_name': old_application.business_name,
            'registration_number': old_application.registration_number,
            'amount_requested': old_application.amount_requested,
            'purpose_of_funding': old_application.purpose_of_funding,
        }
        app_form = CreditApplicationForm(initial=app_data)
        
        sector_data = {}
        if hasattr(old_application, 'sector_details'):
            sector_data = {
                'sector': old_application.sector_details.sector,
                'monthly_turnover': old_application.sector_details.monthly_turnover,
                'years_in_operation': old_application.sector_details.years_in_operation,
                'employees_count': old_application.sector_details.employees_count,
            }
        sector_form = SectorApplicationForm(initial=sector_data)
    
    return render(request, 'applications/reapply.html', {
        'app_form': app_form,
        'sector_form': sector_form,
        'old_application': old_application
    })