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


class Migration(migrations.Migration):

    dependencies = [
        ('attendance', '0002_remove_registeredmember_event_and_more'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        # 1. Add scan_type field (default CHECK_IN so existing rows stay valid)
        migrations.AddField(
            model_name='attendancerecord',
            name='scan_type',
            field=models.CharField(
                choices=[
                    ('CHECK_IN', 'Check-In'),
                    ('SESSION', 'Session Verification'),
                    ('CHECK_OUT', 'Check-Out'),
                ],
                default='CHECK_IN',
                max_length=20,
            ),
        ),
        # 2. Add scan_time field (copy of existing check_in_time)
        migrations.AddField(
            model_name='attendancerecord',
            name='scan_time',
            field=models.DateTimeField(default=django.utils.timezone.now),
        ),
        # 3. Remove the old unique_together constraint before altering fields
        migrations.AlterUniqueTogether(
            name='attendancerecord',
            unique_together=set(),
        ),
        # 4. Remove old check_in_time field
        migrations.RemoveField(
            model_name='attendancerecord',
            name='check_in_time',
        ),
        # 5. Apply new unique_together that includes scan_type
        migrations.AlterUniqueTogether(
            name='attendancerecord',
            unique_together={('member', 'event', 'scan_type')},
        ),
        # 6. Update ordering via AlterModelOptions
        migrations.AlterModelOptions(
            name='attendancerecord',
            options={
                'ordering': ['-scan_time'],
                'verbose_name': 'Attendance Record',
                'verbose_name_plural': 'Attendance Records',
            },
        ),
    ]
