# Generated by Django 4.2.7 on 2026-04-26 07:44

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


class Migration(migrations.Migration):

    dependencies = [
        ('cases', '0011_casenote_updated_at_ordering'),
        ('tenancy', '0003_tenant_address_line1_tenant_address_line2_and_more'),
        ('accounts', '0011_platformsettings'),
    ]

    operations = [
        migrations.CreateModel(
            name='IncomingMail',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('message_id', models.CharField(max_length=500, unique=True)),
                ('from_email', models.EmailField(max_length=254)),
                ('from_name', models.CharField(blank=True, max_length=255)),
                ('subject', models.CharField(blank=True, max_length=998)),
                ('body_text', models.TextField(blank=True)),
                ('body_html', models.TextField(blank=True)),
                ('received_at', models.DateTimeField()),
                ('status', models.CharField(choices=[('pending', 'En attente'), ('dispatched', 'Dispatché'), ('processed', 'Traité'), ('rejected', 'Rejeté')], default='pending', max_length=20)),
                ('assigned_country', models.CharField(blank=True, max_length=2)),
                ('dispatched_at', models.DateTimeField(blank=True, null=True)),
                ('dispatch_note', models.TextField(blank=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('assigned_to', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='assigned_mails', to=settings.AUTH_USER_MODEL)),
                ('case', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='incoming_mails', to='cases.case')),
                ('dispatched_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='dispatched_mails', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'ordering': ['-received_at'],
            },
        ),
        migrations.AlterField(
            model_name='role',
            name='id',
            field=models.PositiveSmallIntegerField(choices=[(1, 'Personnel entreprise'), (2, 'Personnel ACREMAC'), (3, 'Administrateur entreprise'), (4, 'Administrateur'), (5, 'Responsable Pays')], primary_key=True, serialize=False),
        ),
        migrations.CreateModel(
            name='MailSource',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('client_name', models.CharField(blank=True, max_length=255)),
                ('email_or_domain', models.CharField(max_length=255)),
                ('notes', models.TextField(blank=True)),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('tenant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='mail_sources', to='tenancy.tenant')),
            ],
            options={
                'ordering': ['client_name', 'email_or_domain'],
                'unique_together': {('tenant', 'email_or_domain')},
            },
        ),
        migrations.CreateModel(
            name='MailInboxConfig',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('imap_host', models.CharField(max_length=255)),
                ('imap_port', models.PositiveSmallIntegerField(default=993)),
                ('imap_user', models.CharField(max_length=255)),
                ('imap_password', models.CharField(max_length=500)),
                ('use_ssl', models.BooleanField(default=True)),
                ('mailbox', models.CharField(default='INBOX', max_length=100)),
                ('is_active', models.BooleanField(default=True)),
                ('last_polled_at', models.DateTimeField(blank=True, null=True)),
                ('last_error', models.TextField(blank=True, default='')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('tenant', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='mail_inbox_config', to='tenancy.tenant')),
            ],
        ),
        migrations.CreateModel(
            name='MailAttachment',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('filename', models.CharField(max_length=255)),
                ('content_type', models.CharField(blank=True, max_length=120)),
                ('size', models.PositiveIntegerField(default=0)),
                ('file', models.FileField(upload_to='mail_attachments/')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('mail', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attachments', to='accounts.incomingmail')),
            ],
        ),
        migrations.AddField(
            model_name='incomingmail',
            name='mail_source',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mails', to='accounts.mailsource'),
        ),
        migrations.AddField(
            model_name='incomingmail',
            name='tenant',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='incoming_mails', to='tenancy.tenant'),
        ),
    ]
