# Generated by Django 6.0.2 on 2026-02-16 11:07

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


class Migration(migrations.Migration):

    initial = True

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

    operations = [
        migrations.CreateModel(
            name='Project',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=100, verbose_name='عنوان پروژه')),
                ('description', models.TextField(blank=True, null=True, verbose_name='توضیحات')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
            options={
                'verbose_name': 'پروژه',
                'verbose_name_plural': 'پروژه\u200cها',
            },
        ),
        migrations.CreateModel(
            name='RequestType',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=100, verbose_name='عنوان درخواست')),
                ('has_date_range', models.BooleanField(default=True, verbose_name='نیاز به تاریخ (از/تا) دارد؟')),
                ('has_time_range', models.BooleanField(default=False, verbose_name='نیاز به ساعت (شروع/پایان) دارد؟')),
                ('has_amount', models.BooleanField(default=False, verbose_name='نیاز به مبلغ دارد؟')),
                ('has_description', models.BooleanField(default=True, verbose_name='نیاز به توضیحات دارد؟')),
                ('is_active', models.BooleanField(default=True, verbose_name='فعال')),
            ],
            options={
                'verbose_name': 'نوع درخواست',
                'verbose_name_plural': 'انواع درخواست\u200cها',
            },
        ),
        migrations.CreateModel(
            name='TaskType',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=100, verbose_name='عنوان فعالیت')),
                ('standard_duration', models.PositiveIntegerField(default=0, verbose_name='زمان استاندارد (دقیقه)')),
                ('is_active', models.BooleanField(default=True, verbose_name='فعال')),
            ],
            options={
                'verbose_name': 'نوع فعالیت (استاندارد)',
                'verbose_name_plural': 'انواع فعالیت\u200cها',
            },
        ),
        migrations.CreateModel(
            name='Request',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('from_date', models.DateTimeField(blank=True, null=True, verbose_name='از زمان')),
                ('to_date', models.DateTimeField(blank=True, null=True, verbose_name='تا زمان')),
                ('amount', models.DecimalField(blank=True, decimal_places=0, max_digits=12, null=True, verbose_name='مبلغ (تومان)')),
                ('description', models.TextField(blank=True, null=True, verbose_name='توضیحات')),
                ('status', models.CharField(choices=[('pending', 'در انتظار'), ('approved', 'تایید شده'), ('rejected', 'رد شده')], default='pending', max_length=20, verbose_name='وضعیت')),
                ('is_approved', models.BooleanField(default=False, verbose_name='تایید شده (قدیمی)')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='کاربر')),
                ('request_type', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='Work.requesttype', verbose_name='نوع درخواست')),
            ],
            options={
                'verbose_name': 'درخواست',
                'verbose_name_plural': 'درخواست\u200cها',
            },
        ),
        migrations.CreateModel(
            name='UserProfile',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('phone', models.CharField(blank=True, max_length=15, null=True, verbose_name='شماره تماس')),
                ('avatar', models.ImageField(blank=True, null=True, upload_to='avatars/', verbose_name='آواتار')),
                ('national_code', models.CharField(blank=True, max_length=10, null=True, verbose_name='کد ملی')),
                ('birth_date', models.DateField(blank=True, null=True, verbose_name='تاریخ تولد')),
                ('card_number', models.CharField(blank=True, max_length=16, null=True, verbose_name='شماره کارت')),
                ('sheba_number', models.CharField(blank=True, max_length=26, null=True, verbose_name='شماره شبا')),
                ('daily_status', models.CharField(blank=True, max_length=100, null=True, verbose_name='وضعیت روزانه')),
                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL, verbose_name='کاربر')),
            ],
            options={
                'verbose_name': 'پروفایل کاربر',
                'verbose_name_plural': 'پروفایل\u200cهای کاربران',
            },
        ),
        migrations.CreateModel(
            name='WorkLog',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=200, verbose_name='عنوان کار')),
                ('description', models.TextField(blank=True, null=True, verbose_name='توضیحات تکمیلی')),
                ('estimated_minutes', models.PositiveIntegerField(default=0, verbose_name='زمان برآوردی (دقیقه)')),
                ('start_time', models.DateTimeField(default=django.utils.timezone.now, verbose_name='زمان شروع')),
                ('end_time', models.DateTimeField(blank=True, null=True, verbose_name='زمان پایان')),
                ('status', models.CharField(choices=[('pending', 'در حال انتظار'), ('doing', 'در حال انجام'), ('done', 'انجام شده'), ('suspended', 'تعویق')], default='pending', max_length=20, verbose_name='وضعیت')),
                ('created_date', models.DateField(auto_now_add=True, verbose_name='تاریخ ثبت')),
                ('project', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='Work.project', verbose_name='پروژه')),
                ('task_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='Work.tasktype', verbose_name='نوع فعالیت')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='کاربر')),
            ],
            options={
                'verbose_name': 'گزارش کار',
                'verbose_name_plural': 'گزارش\u200cهای کار',
            },
        ),
        migrations.CreateModel(
            name='Attendance',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('date', models.DateField(default=django.utils.timezone.now, verbose_name='تاریخ')),
                ('first_clock_in', models.DateTimeField(blank=True, null=True, verbose_name='اولین ورود')),
                ('last_clock_out', models.DateTimeField(blank=True, null=True, verbose_name='آخرین خروج')),
                ('current_session_start', models.DateTimeField(blank=True, null=True, verbose_name='شروع نوبت جاری')),
                ('total_seconds', models.IntegerField(default=0, verbose_name='مجموع کارکرد (ثانیه)')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='کاربر')),
            ],
            options={
                'verbose_name': 'سوابق روزانه',
                'verbose_name_plural': 'سوابق روزانه',
                'unique_together': {('user', 'date')},
            },
        ),
    ]
