from django.db import models

# Create your models here.

class Course(models.Model):

    BADGE_TYPES = (
        ('New', 'New'),
        ('Popular', 'Popular'),
    )

    CATEGORY = (
        ('Basic Course', 'Basic Course'),
        ('Graphic & Multimedia', 'Graphic & Multimedia'),
        ('Web & Programming', 'Web & Programming'),
        ('Marketing', 'Marketing'),
        ('Language Course', 'Language Course'),
        ('Autocad & Architect', 'Autocad & Architect'),
    )

    # Main Information
    title = models.CharField(max_length=255)
    category = models.CharField(max_length=100, choices=CATEGORY)
    img = models.ImageField(upload_to="course", help_text="Upload image")
    badge = models.CharField(max_length=10, choices=BADGE_TYPES, default='Popular')
    rating = models.CharField(max_length=50)
    student_count = models.CharField(max_length=50, default="0 +")

    # Prices
    main_price = models.IntegerField()
    discount_percent = models.IntegerField(default=0)

    # Course Details
    weekly_class = models.CharField(max_length=100)
    duration = models.CharField(max_length=100)
    total_class = models.CharField(max_length=100)
    class_duration = models.CharField(max_length=100)
    short_description = models.TextField(blank=True, null=True, help_text="Course short Description")

    course_related_video = models.URLField(max_length=500, blank=True, null=True, help_text="Plz insert URL")
    student_success_video = models.URLField(max_length=500, blank=True, null=True, help_text="Plz insert URL")

    workshop_video = models.URLField(blank=True, null=True, help_text="Workshop Details")
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title
    

# Course Module
class CourseModule(models.Model):
    course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name='modules')
    no = models.IntegerField(help_text="Module Number")
    topic = models.CharField(max_length=255, help_text="Module Topic Title")

    class Meta:
        ordering = ['no']

    def __str__(self):
        return f"{self.course.title} - Module {self.no}"
    
# Class List
class ClassList(models.Model):
    course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name='classes')
    class_no = models.IntegerField(help_text="Class Number")
    topic = models.TextField(max_length=255, help_text="Class Topic Title")

    class Meta:
        ordering = ['class_no']

    def __str__(self):
        return f"{self.course.title} - Class {self.class_no}"
    
# Student Review
    
class CourseReview(models.Model):
    REVIEW_TYPES = (
        ('student', 'Student Review'),
        ('teacher', 'Teacher Review'),
    )
    course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name='reviews')
    reviewer_name = models.CharField(max_length=150)
    review_type = models.CharField(max_length=10, choices=REVIEW_TYPES, default='student')
    rating = models.FloatField(default=5.0)
    comment = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"{self.reviewer_name} ({self.get_review_type_display()}) - {self.course.title}"