from py_compile import main
from django.shortcuts import redirect, render
from core.models import HomeBanner, RealTimeInquiry, Service, MainCategory, Category, SubCategory, Project
from django.shortcuts import render, get_object_or_404
from django.http import JsonResponse
from core.forms import *
from django.contrib import messages



def about(request):
    return render(request, 'about.html')

from django.shortcuts import render
from django.http import JsonResponse
from django.template.loader import render_to_string
from .models import Project, Category

def portfolio(request):
    categories = Category.objects.all()
    projects = Project.objects.all().order_by("-created_date")
    return render(request, "portfolio.html", {
        "categories": categories,
        "projects": projects
    })

from django.http import JsonResponse
from django.template.loader import render_to_string
from .models import Project

def filter_portfolios(request):
    category_id = request.GET.get("category_id")
    print("Category ID:", category_id)  # Debug

    try:
        if category_id == "all" or not category_id:
            projects = Project.objects.all().order_by("-created_date")
        else:
            # Use the correct field name
            projects = Project.objects.filter(sub_category_id=category_id).order_by("-created_date")

        html = render_to_string("project_grid.html", {"projects": projects}, request=request)
        return JsonResponse({"html": html})
    except Exception as e:
        print("Error in filter_portfolios:", e)
        return JsonResponse({"error": str(e)}, status=500)





def filter_projects(request, category_id):
    projects = Project.objects.filter(sub_category__category_id=category_id).order_by("-created_date")
    
    html = render_to_string("partials/project_list.html", {"projects": projects})
    return JsonResponse({"html": html})


# from .models import HomeBanner, Service, Project, MainCategory

# def home(request):
#     banner = HomeBanner.objects.first()
#     services = Service.objects.all()
#     projects = Project.objects.order_by("-created_date")[:12]

#     # Undergraduate (UG)
#     ug_main_categories = (
#         MainCategory.objects
#         .filter(level="UG", is_active=True)
#         .prefetch_related("categories")
#     )

#     # Postgraduate (PG)
#     pg_main_categories = (
#         MainCategory.objects
#         .filter(level="PG", is_active=True)
#         .prefetch_related("categories")
#     )

#     print("UG MAIN COUNT:", ug_main_categories.count())
#     print("PG MAIN COUNT:", pg_main_categories.count())

#     return render(request, "index.html", {
#         "banner": banner,
#         "services": services,
#         "projects": projects,
#         "ug_main_categories": ug_main_categories,
#         "pg_main_categories": pg_main_categories,
#         "page_title": "Home",
#     })


from django.db.models import Q

def home(request):
    banner = HomeBanner.objects.first()
    services = Service.objects.all()
    projects = Project.objects.order_by("-created_date")[:12]

    ug_main_categories = (
        MainCategory.objects
        .filter(
            Q(level="UG") | Q(level__isnull=True) | Q(level=""),
            is_active=True,
            categories__isnull=False
        )
        .distinct()
        .prefetch_related("categories")
    )

    pg_main_categories = (
        MainCategory.objects
        .filter(level="PG", is_active=True, categories__isnull=False)
        .distinct()
        .prefetch_related("categories")
    )

    print("UG MAIN COUNT:", ug_main_categories.count())
    print("PG MAIN COUNT:", pg_main_categories.count())

    return render(request, "index.html", {
        "banner": banner,
        "services": services,
        "projects": projects,
        "ug_main_categories": ug_main_categories,
        "pg_main_categories": pg_main_categories,
        "page_title": "Home",
    })



def subcategory_list(request, category_id):
    category = get_object_or_404(Category, id=category_id)

    subcategories = SubCategory.objects.filter(category=category).order_by("name")

    return render(request, "subcategory.html", {
        "category": category,
        "subcategories": subcategories,
        "page_title": category.name,
    })



def project_list(request, sub_id):
    subcategory = get_object_or_404(SubCategory, id=sub_id)

    projects = Project.objects.filter(sub_category=subcategory).order_by("-created_date")

    return render(request, "projects.html", {
        "subcategory": subcategory,
        "category": subcategory.category,  # added for breadcrumb
        "projects": projects,
        "page_title": f"{subcategory.category.name} - {subcategory.name}",
    })


from django.shortcuts import render, get_object_or_404
from .models import Project

def project_detail(request, project_id):
    project = get_object_or_404(Project, id=project_id)

    return render(request, "project_detail.html", {
        "project": project,
        "subcategory": project.sub_category,
        "category": project.sub_category.category,
    })




def web_development(request):
   
    return render(request, "web_development.html")

def app_development(request):
   
    return render(request, "app_development.html")


def iot_development(request):

    return render(request, "iot_development.html")

def ai_ml_development(request):

    return render(request, "ai_ml_development.html")



# views.py
from django.shortcuts import render
from django.contrib.auth.decorators import login_required

def contact(request):
    if request.method == "POST":
        form = RealTimeInquiryForm(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, "Your message has been sent successfully!")
            return redirect('contact')
    else:
        form = RealTimeInquiryForm()

    return render(request, 'contact.html', {'form': form})

@login_required(login_url='/login/')
def contact_list(request):
    contacts = RealTimeInquiry.objects.all()
    return render(request, "contact_list.html", {'contacts': contacts})

def delete_contact(request, id):
    contact = get_object_or_404(RealTimeInquiry, id=id)
    contact.delete()
    messages.success(request, "Message deleted successfully.")
    return redirect("contact_list")

from django.contrib.auth import logout
from django.shortcuts import redirect
from django.contrib import messages

def logout_view(request):
    logout(request)
    messages.success(request, "Logged out successfully!")
    return redirect('login')

def publication(request):
    return render(request, 'publication.html')

from django.shortcuts import render, get_object_or_404
from .models import Category, ProjectTitle
from django.shortcuts import render, get_object_or_404
from .models import Category, ProjectTitle

def project_titles(request):
    category_id = request.GET.get("category")

    categories = Category.objects.all()  # <--- Required for dropdown to show
    projects = ProjectTitle.objects.all()
    category = None

    if category_id:
        category = get_object_or_404(Category, id=category_id)
        projects = projects.filter(category=category)

    context = {
        "categories": categories,              # <--- FIXED
        "projects": projects,
        "category": category,
        "selected_category": category_id,
    }

    return render(request, "project_titles.html", context)
