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


def backfill_case_scores(apps, schema_editor):
    PortfolioItem = apps.get_model('portfolio', 'PortfolioItem')
    for item in PortfolioItem.objects.all():
        score = 0
        if item.title:              score += 1
        if item.thumbnail:          score += 1
        if item.category_id:        score += 1
        if item.short_description:  score += 1
        if item.full_description:   score += 1
        if item.client_problem:     score += 1
        if item.our_solution:       score += 1
        if item.project_outcome:    score += 1
        if item.client_url:         score += 1
        if item.technologies:       score += 1
        item.case_score = round(score / 10 * 100)
        item.save(update_fields=['case_score'])


class Migration(migrations.Migration):

    dependencies = [
        ('portfolio', '0001_initial'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.AddField(
            model_name='portfolioitem',
            name='client_problem',
            field=models.TextField(blank=True, help_text='What problem did the client have?'),
        ),
        migrations.AddField(
            model_name='portfolioitem',
            name='our_solution',
            field=models.TextField(blank=True, help_text='How did we solve it?'),
        ),
        migrations.AddField(
            model_name='portfolioitem',
            name='project_outcome',
            field=models.TextField(blank=True, help_text='Results, launch details, impact'),
        ),
        migrations.AddField(
            model_name='portfolioitem',
            name='added_by',
            field=models.ForeignKey(
                blank=True, null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name='portfolio_items',
                to=settings.AUTH_USER_MODEL,
            ),
        ),
        migrations.AddField(
            model_name='portfolioitem',
            name='view_count',
            field=models.PositiveIntegerField(default=0, editable=False),
        ),
        migrations.AddField(
            model_name='portfolioitem',
            name='case_score',
            field=models.PositiveSmallIntegerField(
                default=0, editable=False,
                help_text='Auto-computed case study completeness 0-100',
            ),
        ),
        migrations.RunPython(backfill_case_scores, migrations.RunPython.noop),
    ]
