# Generated by Django 4.2.30 on 2026-07-25 18:19

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


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name="AppointmentType",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("name", models.CharField(max_length=100)),
                ("slug", models.SlugField()),
                ("description", models.TextField(blank=True)),
                ("duration_minutes", models.IntegerField(default=30)),
                ("slot_capacity", models.IntegerField(default=1)),
                ("is_active", models.BooleanField(default=True)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("deleted_at", models.DateTimeField(blank=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name="Resource",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("name", models.CharField(max_length=100)),
                ("email", models.EmailField(blank=True, max_length=254, null=True)),
                (
                    "photo",
                    models.ImageField(blank=True, null=True, upload_to="resources/"),
                ),
                ("is_active", models.BooleanField(default=True)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                ("deleted_at", models.DateTimeField(blank=True, null=True)),
                (
                    "user",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="ExceptionDay",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("date", models.DateField()),
                ("is_available", models.BooleanField(default=True)),
                ("start_time", models.TimeField(blank=True, null=True)),
                ("end_time", models.TimeField(blank=True, null=True)),
                ("reason", models.CharField(blank=True, max_length=120)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                (
                    "resource",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="scheduler.resource",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="CustomField",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("label", models.CharField(max_length=100)),
                ("slug", models.SlugField()),
                (
                    "field_type",
                    models.CharField(
                        choices=[
                            ("text", "Texto"),
                            ("select", "Selección"),
                            ("checkbox", "Checkbox"),
                        ],
                        max_length=20,
                    ),
                ),
                ("options", models.JSONField(blank=True, null=True)),
                ("is_required", models.BooleanField(default=True)),
                (
                    "appointment_type",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to="scheduler.appointmenttype",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="Business",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("name", models.CharField(max_length=120)),
                ("phone", models.CharField(blank=True, max_length=32, null=True)),
                (
                    "phone_secondary",
                    models.CharField(blank=True, max_length=32, null=True),
                ),
                (
                    "email_contact",
                    models.EmailField(blank=True, max_length=254, null=True),
                ),
                ("website", models.URLField(blank=True, null=True)),
                ("address", models.CharField(blank=True, max_length=255, null=True)),
                ("city", models.CharField(blank=True, max_length=100, null=True)),
                ("country", models.CharField(blank=True, max_length=100, null=True)),
                (
                    "logo",
                    models.ImageField(
                        blank=True, null=True, upload_to="business_logos/"
                    ),
                ),
                (
                    "timezone",
                    models.CharField(default="America/Santiago", max_length=100),
                ),
                (
                    "banner_message",
                    models.CharField(blank=True, max_length=255, null=True),
                ),
                (
                    "banner_type",
                    models.CharField(
                        choices=[
                            ("info", "Info"),
                            ("warning", "Warning"),
                            ("success", "Success"),
                        ],
                        default="info",
                        max_length=20,
                    ),
                ),
                ("banner_active", models.BooleanField(default=False)),
                (
                    "business_status",
                    models.CharField(
                        choices=[
                            ("available", "Disponible"),
                            ("high_demand", "Alta Demanda"),
                            ("closed", "Cerrado Temporalmente"),
                        ],
                        default="available",
                        max_length=20,
                    ),
                ),
                (
                    "status_message",
                    models.CharField(blank=True, max_length=255, null=True),
                ),
                ("status_auto", models.BooleanField(default=False)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                (
                    "user",
                    models.OneToOneField(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="business",
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="BlockedPeriod",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("start_date", models.DateField()),
                ("end_date", models.DateField()),
                ("reason", models.CharField(blank=True, max_length=120)),
                ("is_active", models.BooleanField(default=True)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                (
                    "resource",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="scheduler.resource",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
            ],
        ),
        migrations.CreateModel(
            name="AvailabilityRule",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "weekday",
                    models.IntegerField(
                        choices=[
                            (0, "0"),
                            (1, "1"),
                            (2, "2"),
                            (3, "3"),
                            (4, "4"),
                            (5, "5"),
                            (6, "6"),
                        ]
                    ),
                ),
                ("start_time", models.TimeField()),
                ("end_time", models.TimeField()),
                ("break_start", models.TimeField(blank=True, null=True)),
                ("break_end", models.TimeField(blank=True, null=True)),
                ("is_active", models.BooleanField(default=True)),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                (
                    "resource",
                    models.ForeignKey(
                        blank=True,
                        null=True,
                        on_delete=django.db.models.deletion.CASCADE,
                        to="scheduler.resource",
                    ),
                ),
                (
                    "user",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to=settings.AUTH_USER_MODEL,
                    ),
                ),
            ],
        ),
        migrations.AddField(
            model_name="appointmenttype",
            name="resources",
            field=models.ManyToManyField(
                blank=True, related_name="services", to="scheduler.resource"
            ),
        ),
        migrations.AddField(
            model_name="appointmenttype",
            name="user",
            field=models.ForeignKey(
                on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL
            ),
        ),
        migrations.AddIndex(
            model_name="resource",
            index=models.Index(
                fields=["user", "is_active", "deleted_at"],
                name="scheduler_r_user_id_d0924d_idx",
            ),
        ),
        migrations.AddIndex(
            model_name="resource",
            index=models.Index(
                fields=["user", "deleted_at"], name="scheduler_r_user_id_652157_idx"
            ),
        ),
        migrations.AddIndex(
            model_name="appointmenttype",
            index=models.Index(
                fields=["user", "is_active", "deleted_at"],
                name="scheduler_a_user_id_bc159f_idx",
            ),
        ),
        migrations.AddIndex(
            model_name="appointmenttype",
            index=models.Index(
                fields=["user", "slug", "deleted_at"],
                name="scheduler_a_user_id_120d20_idx",
            ),
        ),
    ]
