# Generated by Django 6.1 on 2026-08-09 12:31

import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('courses', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='Category',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('slug', models.SlugField(blank=True, unique=True)),
                ('icon', models.CharField(default='bi-briefcase', help_text='Icon class name e.g. bi-graph-up-arrow', max_length=50)),
                ('description', models.TextField(blank=True)),
            ],
            options={
                'verbose_name': 'Category',
                'verbose_name_plural': 'Categories',
            },
        ),
        migrations.CreateModel(
            name='Instructor',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('title', models.CharField(help_text='e.g. Executive Business Coach & Forbes 30u30', max_length=200)),
                ('bio', models.TextField()),
                ('avatar_url', models.CharField(blank=True, max_length=500)),
                ('rating', models.DecimalField(decimal_places=1, default=4.9, max_digits=3)),
                ('students_count', models.IntegerField(default=12500)),
            ],
            options={
                'verbose_name': 'Instructor',
                'verbose_name_plural': 'Instructors',
            },
        ),
        migrations.AlterModelOptions(
            name='spotplayerlicense',
            options={'verbose_name': 'SpotPlayer License', 'verbose_name_plural': 'SpotPlayer Licenses'},
        ),
        migrations.RemoveField(
            model_name='course',
            name='default_price',
        ),
        migrations.AddField(
            model_name='course',
            name='badge_text',
            field=models.CharField(blank=True, help_text='e.g. BESTSELLER, EXECUTIVE MASTERCLASS', max_length=50),
        ),
        migrations.AddField(
            model_name='course',
            name='cover_url',
            field=models.CharField(blank=True, help_text='External cover image link', max_length=500),
        ),
        migrations.AddField(
            model_name='course',
            name='discount_price',
            field=models.IntegerField(default=0, verbose_name='Discounted Price (0 if no discount)'),
        ),
        migrations.AddField(
            model_name='course',
            name='duration',
            field=models.CharField(default='12.5 Hours', max_length=50, verbose_name='Total Video Duration'),
        ),
        migrations.AddField(
            model_name='course',
            name='enrolled_count',
            field=models.IntegerField(default=3400, verbose_name='Enrolled Students'),
        ),
        migrations.AddField(
            model_name='course',
            name='is_featured',
            field=models.BooleanField(default=True),
        ),
        migrations.AddField(
            model_name='course',
            name='level',
            field=models.CharField(choices=[('Executive', 'Executive Masterclass'), ('Mastery', 'Advanced Mastery'), ('Foundational', 'Foundational Leader')], default='Executive', max_length=30),
        ),
        migrations.AddField(
            model_name='course',
            name='rating',
            field=models.DecimalField(decimal_places=1, default=4.9, max_digits=3),
        ),
        migrations.AddField(
            model_name='course',
            name='slug',
            field=models.SlugField(blank=True, unique=True),
        ),
        migrations.AddField(
            model_name='course',
            name='tagline',
            field=models.CharField(blank=True, help_text='Catchy 1-line benefit for executives', max_length=255),
        ),
        migrations.AddField(
            model_name='coursefile',
            name='file_size',
            field=models.CharField(default='2.4 MB', max_length=50),
        ),
        migrations.AddField(
            model_name='coursefile',
            name='file_url',
            field=models.CharField(blank=True, help_text='Direct download link', max_length=500),
        ),
        migrations.AddField(
            model_name='headline',
            name='description',
            field=models.TextField(blank=True),
        ),
        migrations.AddField(
            model_name='user',
            name='avatar_url',
            field=models.CharField(blank=True, max_length=500, verbose_name='Avatar URL'),
        ),
        migrations.AddField(
            model_name='user',
            name='email',
            field=models.EmailField(blank=True, max_length=254, verbose_name='Email Address'),
        ),
        migrations.AddField(
            model_name='video',
            name='duration',
            field=models.CharField(default='15 min', max_length=20),
        ),
        migrations.AddField(
            model_name='video',
            name='is_preview_free',
            field=models.BooleanField(default=False, verbose_name='Free Preview Lesson'),
        ),
        migrations.AlterField(
            model_name='course',
            name='course_id',
            field=models.CharField(max_length=100, unique=True, verbose_name='SpotPlayer ID / Unique Code'),
        ),
        migrations.AlterField(
            model_name='course',
            name='demo_video_url',
            field=models.TextField(blank=True, help_text='Embed iframe or direct video URL', null=True),
        ),
        migrations.AlterField(
            model_name='course',
            name='description',
            field=models.TextField(blank=True, verbose_name='Full Description'),
        ),
        migrations.AlterField(
            model_name='course',
            name='name',
            field=models.CharField(max_length=150, verbose_name='Course Title'),
        ),
        migrations.AlterField(
            model_name='course',
            name='price',
            field=models.IntegerField(default=0, verbose_name='Price (USD/Toman)'),
        ),
        migrations.AlterField(
            model_name='coursefile',
            name='file',
            field=models.FileField(blank=True, null=True, upload_to='course_files/'),
        ),
        migrations.AlterField(
            model_name='coursefile',
            name='title',
            field=models.CharField(max_length=150, verbose_name='Attachment Name'),
        ),
        migrations.AlterField(
            model_name='headline',
            name='title',
            field=models.CharField(max_length=150, verbose_name='Chapter Title'),
        ),
        migrations.AlterField(
            model_name='spotplayerlicense',
            name='license_key',
            field=models.TextField(verbose_name='SpotPlayer License Key'),
        ),
        migrations.AlterField(
            model_name='user',
            name='name',
            field=models.CharField(blank=True, max_length=100, verbose_name='Full Name'),
        ),
        migrations.AlterField(
            model_name='video',
            name='player_url',
            field=models.TextField(blank=True, help_text='Video embed code or direct video file URL'),
        ),
        migrations.AlterField(
            model_name='video',
            name='title',
            field=models.CharField(max_length=150, verbose_name='Lesson Title'),
        ),
        migrations.AddField(
            model_name='course',
            name='category',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='courses', to='courses.category'),
        ),
        migrations.AddField(
            model_name='course',
            name='instructor',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='courses', to='courses.instructor'),
        ),
        migrations.CreateModel(
            name='Order',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('amount', models.IntegerField(default=0)),
                ('status', models.CharField(choices=[('Completed', 'Completed'), ('Pending', 'Pending'), ('Failed', 'Failed')], default='Completed', max_length=20)),
                ('transaction_id', models.CharField(blank=True, max_length=100, unique=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='orders', to='courses.course')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='orders', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='Review',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('student_name', models.CharField(max_length=100)),
                ('student_title', models.CharField(default='CEO & Founder', max_length=150)),
                ('avatar_url', models.CharField(blank=True, max_length=500)),
                ('rating', models.IntegerField(default=5)),
                ('comment', models.TextField()),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reviews', to='courses.course')),
                ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'ordering': ['-created_at'],
            },
        ),
    ]
