# Generated by Django 5.2 on 2025-04-21 14:19

import django.core.validators
import django.db.models.deletion
import django.db.models.expressions
from django.conf import settings
from django.db import migrations, models

import core.fields


class Migration(migrations.Migration):
    initial = True

    dependencies = [
        ("club", "0014_alter_club_options_rename_unix_name_club_slug_name_and_more"),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name="Room",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("name", models.CharField(max_length=100, verbose_name="room name")),
                (
                    "description",
                    models.TextField(
                        blank=True, default="", verbose_name="description"
                    ),
                ),
                (
                    "logo",
                    core.fields.ResizedImageField(
                        blank=True,
                        force_format="WEBP",
                        height=100,
                        upload_to="rooms",
                        verbose_name="logo",
                        width=100,
                    ),
                ),
                ("address", models.CharField(max_length=255, verbose_name="address")),
                (
                    "club",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="reservable_rooms",
                        to="club.club",
                        verbose_name="room owner",
                    ),
                ),
                (
                    "occupancy",
                    models.PositiveSmallIntegerField(
                        default=1,
                        help_text="The maximum number of people this room can host at once",
                        validators=[django.core.validators.MinValueValidator(1)],
                        verbose_name="maximum occupancy",
                    ),
                ),
            ],
            options={
                "verbose_name": "reservable room",
                "verbose_name_plural": "reservable rooms",
            },
        ),
        migrations.CreateModel(
            name="ReservationSlot",
            fields=[
                (
                    "id",
                    models.BigAutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                (
                    "nb_people",
                    models.PositiveSmallIntegerField(
                        default=1,
                        help_text="How many people will attend this reservation slot",
                        validators=[django.core.validators.MinValueValidator(1)],
                        verbose_name="number of people",
                    ),
                ),
                (
                    "comment",
                    models.TextField(blank=True, default="", verbose_name="comment"),
                ),
                (
                    "start_at",
                    models.DateTimeField(db_index=True, verbose_name="slot start"),
                ),
                ("duration", models.DurationField(verbose_name="duration")),
                (
                    "end_at",
                    models.GeneratedField(
                        db_persist=False,
                        expression=django.db.models.expressions.CombinedExpression(
                            models.F("start_at"), "+", models.F("duration")
                        ),
                        output_field=models.DateTimeField(),
                        verbose_name="slot end",
                    ),
                ),
                ("created_at", models.DateTimeField(auto_now_add=True)),
                (
                    "author",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        to=settings.AUTH_USER_MODEL,
                        verbose_name="author",
                    ),
                ),
                (
                    "room",
                    models.ForeignKey(
                        on_delete=django.db.models.deletion.CASCADE,
                        related_name="slots",
                        to="reservation.room",
                        verbose_name="reserved room",
                    ),
                ),
            ],
            options={
                "verbose_name": "reservation slot",
                "verbose_name_plural": "reservation slots",
            },
        ),
    ]