from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from .models import Person, Referral
from .forms import PersonForm, ReferralForm


def home_view(request):
    return render(request, 'referrals/home.html')


@login_required
def person_list_view(request):
    people = Person.objects.all()
    return render(request, 'referrals/person_list.html', {'people': people})

@login_required
def add_person_view(request):
    if request.method == 'POST':
        form = PersonForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('person_list')
    else:
        form = PersonForm()
    return render(request, 'referrals/add_person.html', {'form': form})

@login_required
def person_detail_view(request, pk):
    person = get_object_or_404(Person, pk=pk)
    referrals = person.referrals.all()  # Using related_name='referrals' from the Referral model
    return render(request, 'referrals/person_detail.html', {
        'person': person,
        'referrals': referrals
    })




@login_required
def referral_list_view(request):
    referrals = Referral.objects.select_related('person').all()
    return render(request, 'referrals/referral_list.html', {'referrals': referrals})

@login_required
def add_referral_view(request):
    if request.method == 'POST':
        form = ReferralForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('referral_list')
    else:
        form = ReferralForm()
    return render(request, 'referrals/add_referral.html', {'form': form})

@login_required
def referral_detail_view(request, pk):
    referral = get_object_or_404(Referral, pk=pk)
    return render(request, 'referrals/referral_detail.html', {
        'referral': referral
    })
