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


class Migration(migrations.Migration):
    dependencies = [
        ("rims_projects", "0002_link_rims_ecosystem"),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.AddField(
            model_name="milestone",
            name="review_comment",
            field=models.TextField(blank=True),
        ),
        migrations.AddField(
            model_name="milestone",
            name="reviewed_at",
            field=models.DateTimeField(blank=True, null=True),
        ),
        migrations.AddField(
            model_name="milestone",
            name="report_summary",
            field=models.TextField(blank=True),
        ),
        migrations.AddField(
            model_name="milestone",
            name="reviewed_by",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name="reviewed_milestones",
                to=settings.AUTH_USER_MODEL,
            ),
        ),
        migrations.AddField(
            model_name="milestone",
            name="status",
            field=models.CharField(
                choices=[
                    ("planned", "Planned"),
                    ("submitted", "Submitted"),
                    ("under_review", "Under review"),
                    ("revision_required", "Revision required"),
                    ("accepted", "Accepted"),
                    ("overdue", "Overdue"),
                ],
                db_index=True,
                default="planned",
                max_length=24,
            ),
        ),
        migrations.AddField(
            model_name="milestone",
            name="submitted_by",
            field=models.ForeignKey(
                blank=True,
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                related_name="submitted_milestones",
                to=settings.AUTH_USER_MODEL,
            ),
        ),
        migrations.CreateModel(
            name="MilestoneAudit",
            fields=[
                ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
                ("event", models.CharField(max_length=64)),
                ("payload", models.JSONField(blank=True, default=dict)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                (
                    "actor",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.SET_NULL,
                        related_name="milestone_audit_events",
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
                (
                    "milestone",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="audit_events",
                        to="rims_projects.milestone",
                    ),
                ),
            ],
            options={"ordering": ["-created_at"]},
        ),
    ]
