from django.shortcuts import render


# Create your views here.
from django.http import JsonResponse
from .models import Course

def course_list_api(request):
    courses = Course.objects.all().prefetch_related('modules', 'classes', 'reviews')
    course_data = []

    for course in courses:
        # মডিউল লিস্ট সাজানো
        modules_list = [{"no": m.no, "topic": m.topic} for m in course.modules.all()]
        
        # ক্লাস লিস্ট সাজানো
        class_list = [{"class_no": c.class_no, "topic": c.topic} for c in course.classes.all()]
        
        # রিভিউ ফিল্টার করা
        student_reviews = []
        teacher_reviews = []
        for r in course.reviews.all():
            review_obj = {
                "reviewer_name": r.reviewer_name,
                "rating": r.rating,
                "comment": r.comment
            }
            if r.review_type == 'student':
                student_reviews.append(review_obj)
            else:
                teacher_reviews.append(review_obj)

        # ফাইনাল অবজেক্ট স্ট্রাকচার
        course_data.append({
            "id": str(course.id),
            "title": course.title,
            "category": course.category,
            "img": request.build_absolute_uri(course.img.url),
            "badge": course.badge if course.badge else "",
            "rating": course.rating,
            "studentCount": course.student_count,
            "main_price": course.main_price,
            "discount_percent": course.discount_percent,
            "weeklyClass": course.weekly_class,
            "duration": course.duration,
            "totalClass": course.total_class,
            "classDuration": course.class_duration,
            "short_description": course.short_description if course.short_description else "",
            "course_related_video": course.course_related_video if course.course_related_video else "",
            "student_success_video": course.student_success_video if course.student_success_video else "",
            "workshop_video": course.workshop_video if course.workshop_video else "",
            
            # আপনার নতুন নেস্টেড ডাটা স্ট্রাকচার
            "module": modules_list,
            "allClassList": class_list,
            "studentReviews": student_reviews,
            "teacherReviews": teacher_reviews,
        })

    return JsonResponse(course_data, safe=False)



def course_detail_api(request, pk):
    try:
        # নির্দিষ্ট আইডি দিয়ে সিঙ্গেল কোর্স অবজেক্ট তুলে আনা
        course = Course.objects.prefetch_related('modules', 'classes', 'reviews').get(pk=pk)
        
        # মডিউল লিস্ট সাজানো
        modules_list = [{"no": m.no, "topic": m.topic} for m in course.modules.all()]
        
        # ক্লাস লিস্ট সাজানো
        class_list = [{"class_no": c.class_no, "topic": c.topic} for c in course.classes.all()]
        
        # রিভিউ ফিল্টার করা
        student_reviews = []
        teacher_reviews = []
        for r in course.reviews.all():
            review_obj = {
                "reviewer_name": r.reviewer_name,
                "rating": r.rating,
                "comment": r.comment
            }
            if r.review_type == 'student':
                student_reviews.append(review_obj)
            else:
                teacher_reviews.append(review_obj)

        # ফাইনাল সিঙ্গেল অবজেক্ট স্ট্রাকচার (অ্যারে ছাড়া, সরাসরি ডিকশনারি)
        single_course_data = {
            "id": str(course.id),
            "title": course.title,
            "category": course.category,
            "img": request.build_absolute_uri(course.img.url),
            "badge": course.badge if course.badge else "",
            "rating": course.rating,
            "studentCount": course.student_count,
            "main_price": course.main_price,
            "discount_percent": course.discount_percent,
            "weeklyClass": course.weekly_class,
            "duration": course.duration,
            "totalClass": course.total_class,
            "classDuration": course.class_duration,
            "short_description": course.short_description if course.short_description else "",
            "course_related_video": course.course_related_video if course.course_related_video else "",
            "student_success_video": course.student_success_video if course.student_success_video else "",
            "workshop_video": course.workshop_video if course.workshop_video else "",
            
            "module": modules_list,
            "allClassList": class_list,
            "studentReviews": student_reviews,
            "teacherReviews": teacher_reviews,
        }

        # এটি যেহেতু সিঙ্গেল অবজেক্ট (ডিকশনারি), তাই safe=False দেওয়া লাগবে না
        return JsonResponse(single_course_data)

    except Course.DoesNotExist:
        return JsonResponse({"error": "Course not found"}, status=404)