# Generated by Django 6.0 on 2026-01-10 08:31

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


class Migration(migrations.Migration):

    dependencies = [
        ('cases', '0007_case_customer_assigned_to'),
        ('customers', '0002_customer_created_by_customer_portal_enabled_and_more'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='CaseMessage',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('author_side', models.CharField(choices=[('customer', 'Customer'), ('tenant', 'Tenant')], db_index=True, max_length=12)),
                ('body', models.TextField()),
                ('visibility', models.CharField(choices=[('shared', 'Shared (Client & Tenant)'), ('internal', 'Internal (Tenant only)')], db_index=True, default='shared', max_length=12)),
                ('action_required', models.BooleanField(db_index=True, default=False)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)),
                ('case', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='cases.case')),
                ('customer', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='case_messages', to='customers.customer')),
            ],
            options={
                'ordering': ['-id'],
            },
        ),
        migrations.CreateModel(
            name='CaseMessageAttachment',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('file', models.FileField(upload_to='cases/messages/')),
                ('filename', models.CharField(blank=True, max_length=255, null=True)),
                ('content_type', models.CharField(blank=True, max_length=120, null=True)),
                ('size', models.PositiveIntegerField(default=0)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('message', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attachments', to='cases.casemessage')),
            ],
            options={
                'ordering': ['-id'],
            },
        ),
        migrations.CreateModel(
            name='CaseMessageRead',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('read_at', models.DateTimeField(auto_now_add=True)),
                ('message', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reads', to='cases.casemessage')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
        ),
        migrations.AddIndex(
            model_name='casemessage',
            index=models.Index(fields=['customer', '-id'], name='cases_casem_custome_43ba85_idx'),
        ),
        migrations.AddIndex(
            model_name='casemessage',
            index=models.Index(fields=['case', '-id'], name='cases_casem_case_id_b4b7cf_idx'),
        ),
        migrations.AddIndex(
            model_name='casemessage',
            index=models.Index(fields=['visibility', '-id'], name='cases_casem_visibil_9cc10f_idx'),
        ),
        migrations.AddIndex(
            model_name='casemessageread',
            index=models.Index(fields=['user', '-read_at'], name='cases_casem_user_id_8b56db_idx'),
        ),
        migrations.AddIndex(
            model_name='casemessageread',
            index=models.Index(fields=['message', 'user'], name='cases_casem_message_dc7e17_idx'),
        ),
        migrations.AlterUniqueTogether(
            name='casemessageread',
            unique_together={('message', 'user')},
        ),
    ]
