# Generated by Django 3.2.19 on 2025-02-26 14:35

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


def crear_audios_asterisk_conf_default(apps, schema_editor):
    # Crea las AudiosAsteriskConf ES y EN (ya instaladas por defecto en omlacd)
    AudiosAsteriskConf = apps.get_model("configuracion_telefonia_app", "AudiosAsteriskConf")

    # Quiero que la configuración en ingles tenga id=1
    primero = AudiosAsteriskConf.objects.filter(id=1).exclude(paquete_idioma='en').first()
    if primero:
        # Si hay otra configuracion con id = 1, lo borro y creo otro con ese id
        paquete_primero = primero.paquete_idioma
        instalado_primero = primero.esta_instalado
        primero.delete()
        AudiosAsteriskConf.objects.create(paquete_idioma=paquete_primero,
                                          esta_instalado=instalado_primero)

    en_conf, created = AudiosAsteriskConf.objects.get_or_create(
        paquete_idioma='en', defaults={'esta_instalado': True})
    if en_conf.id != 1:
        en_conf.delete()
        en_conf, created = AudiosAsteriskConf.objects.get_or_create(
            paquete_idioma='en', defaults={'esta_instalado': True, 'id': 1})
    else:
        if en_conf.esta_instalado:
            en_conf.esta_instalado = True
            en_conf.save()

    AudiosAsteriskConf.objects.get_or_create(paquete_idioma='es',
                                             defaults={'esta_instalado': True})


def reverse_creacion(apps, schema_editor):
    # No puedo asegurar que no existían antes y que debo borrarlos
    pass


def asociar_audio_asterisk_conf(apps, schema_editor):
    AudiosAsteriskConf = apps.get_model("configuracion_telefonia_app", "AudiosAsteriskConf")
    conf_en = AudiosAsteriskConf.objects.get(paquete_idioma='en')
    conf_es = AudiosAsteriskConf.objects.get(paquete_idioma='es')

    # Asocio el AudioAsteriskConf correspondiente a cada Ruta Entrante
    RutaEntrante = apps.get_model("configuracion_telefonia_app", "RutaEntrante")
    for ruta in RutaEntrante.objects.all():
        if ruta.idioma == 1:
            ruta.el_idioma = conf_en
        elif ruta.idioma == 2:
            ruta.el_idioma = conf_es
        ruta.save()


def reverse_asociacion(apps, schema_editor):
    # Asocio el AudioAsteriskConf correspondiente a cada Ruta Entrante
    RutaEntrante = apps.get_model("configuracion_telefonia_app", "RutaEntrante")
    for ruta in RutaEntrante.objects.all():
        if ruta.el_idioma.paquete_idioma == 'es':
            ruta.idioma = 2
        else:
            ruta.idioma = 1
        ruta.save()


class Migration(migrations.Migration):

    dependencies = [
        ('configuracion_telefonia_app', '0021_alter_destinoentrante_tipo'),
    ]

    operations = [
        migrations.AlterField(
            model_name='troncalsip',
            name='tecnologia',
            field=models.PositiveIntegerField(choices=[(0, 'chansip'), (1, 'pjsip')], default=1),
        ),
        migrations.AlterField(
            model_name='audiosasteriskconf',
            name='paquete_idioma',
            field=models.CharField(
                choices=[('es', 'Español'), ('en', 'Inglés'), ('fr', 'Francés'), ('it', 'Italiano'),
                         ('ja', 'Japonés'), ('ru', 'Ruso'), ('sv', 'Sueco')],
                help_text='Paquete de idioma', max_length=2, unique=True),
        ),
        migrations.RunPython(crear_audios_asterisk_conf_default, reverse_creacion),
        migrations.AddField(
            model_name='rutaentrante',
            name='el_idioma',
            field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.PROTECT,
                                    related_name='rutas_entrantes',
                                    to='configuracion_telefonia_app.audiosasteriskconf'),
            preserve_default=False,
        ),
        migrations.RunPython(asociar_audio_asterisk_conf, reverse_asociacion),
        migrations.AlterField(
            model_name='rutaentrante',
            name='idioma',
            field=models.PositiveIntegerField(choices=[(1, 'Inglés'), (2, 'Español')], default=1),
        ),
        migrations.RemoveField(
            model_name='rutaentrante',
            name='idioma',
        ),
        migrations.RenameField(
            model_name='rutaentrante',
            old_name='el_idioma',
            new_name='idioma',
        ),
    ]
