# Generated by Django 4.2.11 on 2025-01-19 22:13

import base.models
from django.conf import settings
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
import simple_history.models


class Migration(migrations.Migration):

    initial = True

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

    operations = [
        migrations.CreateModel(
            name='Announcement',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('title', models.CharField(max_length=100)),
                ('description', models.TextField(null=True)),
                ('expire_date', models.DateField(blank=True, null=True)),
                ('disable_comments', models.BooleanField(default=False)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='AnnouncementComment',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('comment', models.TextField(max_length=255, null=True, verbose_name='Comment')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='AnnouncementExpire',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('days', models.IntegerField(blank=True, default=30, null=True)),
            ],
        ),
        migrations.CreateModel(
            name='AnnouncementView',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('viewed', models.BooleanField(default=False)),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True)),
            ],
        ),
        migrations.CreateModel(
            name='Attachment',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('file', models.FileField(upload_to='attachments/')),
            ],
        ),
        migrations.CreateModel(
            name='AttendanceAllowedIP',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('is_enabled', models.BooleanField(default=False)),
                ('additional_data', models.JSONField(blank=True, default=base.models.default_additional_data, null=True)),
            ],
        ),
        migrations.CreateModel(
            name='BaserequestFile',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('file', models.FileField(upload_to='base/request_files')),
            ],
        ),
        migrations.CreateModel(
            name='BiometricAttendance',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('is_installed', models.BooleanField(default=False)),
            ],
        ),
        migrations.CreateModel(
            name='Company',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('company', models.CharField(max_length=50)),
                ('hq', models.BooleanField(default=False)),
                ('address', models.TextField(max_length=255)),
                ('country', models.CharField(max_length=50)),
                ('state', models.CharField(max_length=50)),
                ('city', models.CharField(max_length=50)),
                ('zip', models.CharField(max_length=20)),
                ('icon', models.FileField(null=True, upload_to='base/icon')),
                ('date_format', models.CharField(blank=True, max_length=30, null=True)),
                ('time_format', models.CharField(blank=True, max_length=20, null=True)),
            ],
            options={
                'verbose_name': 'Company',
                'verbose_name_plural': 'Companies',
            },
        ),
        migrations.CreateModel(
            name='CompanyLeaves',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('based_on_week', models.CharField(blank=True, choices=[('0', 'First Week'), ('1', 'Second Week'), ('2', 'Third Week'), ('3', 'Fourth Week'), ('4', 'Fifth Week')], max_length=100, null=True)),
                ('based_on_week_day', models.CharField(choices=[('0', 'Monday'), ('1', 'Tuesday'), ('2', 'Wednesday'), ('3', 'Thursday'), ('4', 'Friday'), ('5', 'Saturday'), ('6', 'Sunday')], max_length=100)),
            ],
        ),
        migrations.CreateModel(
            name='DashboardEmployeeCharts',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('charts', models.JSONField(blank=True, default=list, null=True, verbose_name='Excluded Charts')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='Department',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('department', models.CharField(max_length=50)),
            ],
            options={
                'verbose_name': 'Department',
                'verbose_name_plural': 'Departments',
            },
        ),
        migrations.CreateModel(
            name='DriverViewed',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('viewed', models.CharField(choices=[('dashboard', 'dashboard'), ('pipeline', 'pipeline'), ('settings', 'settings')], max_length=10)),
            ],
        ),
        migrations.CreateModel(
            name='DynamicEmailConfiguration',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('host', models.CharField(max_length=256, null=True, verbose_name='Email Host')),
                ('port', models.SmallIntegerField(null=True, verbose_name='Email Port')),
                ('from_email', models.EmailField(max_length=256, null=True, verbose_name='Default From Email')),
                ('username', models.CharField(max_length=256, null=True, verbose_name='Email Host Username')),
                ('display_name', models.CharField(max_length=256, null=True, verbose_name='Display Name')),
                ('password', models.CharField(max_length=256, null=True, verbose_name='Email Authentication Password')),
                ('use_tls', models.BooleanField(default=True, verbose_name='Use TLS')),
                ('use_ssl', models.BooleanField(default=False, verbose_name='Use SSL')),
                ('fail_silently', models.BooleanField(default=False, verbose_name='Fail Silently')),
                ('is_primary', models.BooleanField(default=False, verbose_name='Primary Mail Server')),
                ('timeout', models.SmallIntegerField(null=True, verbose_name='Email Send Timeout (seconds)')),
            ],
            options={
                'verbose_name': 'Email Configuration',
            },
        ),
        migrations.CreateModel(
            name='DynamicPagination',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('pagination', models.IntegerField(default=50, validators=[django.core.validators.MinValueValidator(1)])),
            ],
        ),
        migrations.CreateModel(
            name='EmailLog',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('subject', models.CharField(max_length=255)),
                ('body', models.TextField(max_length=255)),
                ('from_email', models.EmailField(max_length=254)),
                ('to', models.EmailField(max_length=254)),
                ('status', models.CharField(choices=[('sent', 'Sent'), ('failed', 'Failed')], max_length=6)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
        ),
        migrations.CreateModel(
            name='EmployeeShift',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('employee_shift', models.CharField(max_length=50)),
                ('weekly_full_time', models.CharField(blank=True, default='40:00', max_length=6, null=True, validators=[base.models.validate_time_format])),
                ('full_time', models.CharField(default='200:00', max_length=6, validators=[base.models.validate_time_format])),
            ],
            options={
                'verbose_name': 'Employee Shift',
                'verbose_name_plural': 'Employee Shifts',
            },
        ),
        migrations.CreateModel(
            name='EmployeeShiftDay',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('day', models.CharField(choices=[('monday', 'Monday'), ('tuesday', 'Tuesday'), ('wednesday', 'Wednesday'), ('thursday', 'Thursday'), ('friday', 'Friday'), ('saturday', 'Saturday'), ('sunday', 'Sunday')], max_length=20)),
            ],
            options={
                'verbose_name': 'Employee Shift Day',
                'verbose_name_plural': 'Employee Shift Days',
            },
        ),
        migrations.CreateModel(
            name='EmployeeShiftSchedule',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('minimum_working_hour', models.CharField(default='08:15', max_length=5, validators=[base.models.validate_time_format], verbose_name='Minimum Working Hours')),
                ('start_time', models.TimeField(null=True, verbose_name='Start Time')),
                ('end_time', models.TimeField(null=True, verbose_name='End Time')),
                ('is_night_shift', models.BooleanField(default=False, verbose_name='Night Shift')),
                ('is_auto_punch_out_enabled', models.BooleanField(default=False, help_text='Enable this to trigger automatic check out.', verbose_name='Enable Automatic Check Out')),
                ('auto_punch_out_time', models.TimeField(blank=True, help_text='Time at which the horilla will automatically check out the employee attendance if they forget.', null=True, verbose_name='Automatic Check Out Time')),
            ],
            options={
                'verbose_name': 'Employee Shift Schedule',
                'verbose_name_plural': 'Employee Shift Schedules',
                'ordering': [models.Case(models.When(day__day='monday', then=0), models.When(day__day='tuesday', then=1), models.When(day__day='wednesday', then=2), models.When(day__day='thursday', then=3), models.When(day__day='friday', then=4), models.When(day__day='saturday', then=5), models.When(day__day='sunday', then=6), default=7)],
            },
        ),
        migrations.CreateModel(
            name='EmployeeType',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('employee_type', models.CharField(max_length=50)),
            ],
            options={
                'verbose_name': 'Employee Type',
                'verbose_name_plural': 'Employee Types',
            },
        ),
        migrations.CreateModel(
            name='HistoricalRotatingShiftAssign',
            fields=[
                ('id', models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')),
                ('created_at', models.DateTimeField(blank=True, editable=False, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('history_title', models.CharField(blank=True, max_length=20, null=True)),
                ('history_description', models.TextField(null=True)),
                ('history_highlight', models.BooleanField(default=False, null=True)),
                ('start_date', models.DateField(default=django.utils.timezone.now, verbose_name='Start Date')),
                ('next_change_date', models.DateField(null=True, verbose_name='Next Switch')),
                ('based_on', models.CharField(choices=[('after', 'After'), ('weekly', 'Weekend'), ('monthly', 'Monthly')], max_length=10, verbose_name='Based On')),
                ('rotate_after_day', models.IntegerField(blank=True, default=7, null=True, verbose_name='Rotate After Day')),
                ('rotate_every_weekend', models.CharField(blank=True, choices=[('monday', 'Monday'), ('tuesday', 'Tuesday'), ('wednesday', 'Wednesday'), ('thursday', 'Thursday'), ('friday', 'Friday'), ('saturday', 'Saturday'), ('sunday', 'Sunday')], default='monday', max_length=10, null=True, verbose_name='Rotate Every Weekend')),
                ('rotate_every', models.CharField(blank=True, choices=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10'), ('11', '11'), ('12', '12'), ('13', '13'), ('14', '14'), ('15', '15'), ('16', '16'), ('17', '17'), ('18', '18'), ('19', '19'), ('20', '20'), ('21', '21'), ('22', '22'), ('23', '23'), ('24', '24'), ('25', '25'), ('26', '26'), ('27', '27'), ('28', '28'), ('29', '29'), ('30', '30'), ('31', '31'), ('last', 'Last Day')], default='1', max_length=10, null=True, verbose_name='Rotate Every Month')),
                ('additional_data', models.JSONField(blank=True, default=dict, null=True)),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
            ],
            options={
                'verbose_name': 'historical Rotating Shift Assign',
                'verbose_name_plural': 'historical Rotating Shift Assigns',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='HistoricalRotatingWorkTypeAssign',
            fields=[
                ('id', models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')),
                ('created_at', models.DateTimeField(blank=True, editable=False, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('history_title', models.CharField(blank=True, max_length=20, null=True)),
                ('history_description', models.TextField(null=True)),
                ('history_highlight', models.BooleanField(default=False, null=True)),
                ('start_date', models.DateField(default=django.utils.timezone.now, verbose_name='Start Date')),
                ('next_change_date', models.DateField(null=True, verbose_name='Next Switch')),
                ('based_on', models.CharField(choices=[('after', 'After'), ('weekly', 'Weekend'), ('monthly', 'Monthly')], max_length=10, verbose_name='Based On')),
                ('rotate_after_day', models.IntegerField(default=7, verbose_name='Rotate After Day')),
                ('rotate_every_weekend', models.CharField(blank=True, choices=[('monday', 'Monday'), ('tuesday', 'Tuesday'), ('wednesday', 'Wednesday'), ('thursday', 'Thursday'), ('friday', 'Friday'), ('saturday', 'Saturday'), ('sunday', 'Sunday')], default='monday', max_length=10, null=True, verbose_name='Rotate Every Weekend')),
                ('rotate_every', models.CharField(choices=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10'), ('11', '11'), ('12', '12'), ('13', '13'), ('14', '14'), ('15', '15'), ('16', '16'), ('17', '17'), ('18', '18'), ('19', '19'), ('20', '20'), ('21', '21'), ('22', '22'), ('23', '23'), ('24', '24'), ('25', '25'), ('26', '26'), ('27', '27'), ('28', '28'), ('29', '29'), ('30', '30'), ('31', '31'), ('last', 'Last Day')], default='1', max_length=10, verbose_name='Rotate Every Month')),
                ('additional_data', models.JSONField(blank=True, default=dict, null=True)),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
            ],
            options={
                'verbose_name': 'historical Rotating Work Type Assign',
                'verbose_name_plural': 'historical Rotating Work Type Assigns',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='HistoricalShiftRequest',
            fields=[
                ('id', models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')),
                ('created_at', models.DateTimeField(blank=True, editable=False, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('history_title', models.CharField(blank=True, max_length=20, null=True)),
                ('history_description', models.TextField(null=True)),
                ('history_highlight', models.BooleanField(default=False, null=True)),
                ('requested_date', models.DateField(default=django.utils.timezone.now, null=True, verbose_name='Requested Date')),
                ('reallocate_approved', models.BooleanField(default=False, verbose_name='Approved')),
                ('reallocate_canceled', models.BooleanField(default=False, verbose_name='Canceled')),
                ('requested_till', models.DateField(blank=True, null=True, verbose_name='Requested Till')),
                ('description', models.TextField(null=True, verbose_name='Description')),
                ('is_permanent_shift', models.BooleanField(default=False, verbose_name='Permanent Request')),
                ('approved', models.BooleanField(default=False, verbose_name='Approved')),
                ('canceled', models.BooleanField(default=False, verbose_name='Canceled')),
                ('shift_changed', models.BooleanField(default=False)),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
            ],
            options={
                'verbose_name': 'historical Shift Request',
                'verbose_name_plural': 'historical Shift Requests',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='HistoricalWorkTypeRequest',
            fields=[
                ('id', models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')),
                ('created_at', models.DateTimeField(blank=True, editable=False, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('history_title', models.CharField(blank=True, max_length=20, null=True)),
                ('history_description', models.TextField(null=True)),
                ('history_highlight', models.BooleanField(default=False, null=True)),
                ('requested_date', models.DateField(default=django.utils.timezone.now, null=True, verbose_name='Requested Date')),
                ('requested_till', models.DateField(blank=True, null=True, verbose_name='Requested Till')),
                ('description', models.TextField(null=True, verbose_name='Description')),
                ('is_permanent_work_type', models.BooleanField(default=False, verbose_name='Permanent Request')),
                ('approved', models.BooleanField(default=False, verbose_name='Approved')),
                ('canceled', models.BooleanField(default=False, verbose_name='Canceled')),
                ('work_type_changed', models.BooleanField(default=False)),
                ('history_id', models.AutoField(primary_key=True, serialize=False)),
                ('history_date', models.DateTimeField(db_index=True)),
                ('history_change_reason', models.CharField(max_length=100, null=True)),
                ('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
            ],
            options={
                'verbose_name': 'historical Work Type Request',
                'verbose_name_plural': 'historical Work Type Requests',
                'ordering': ('-history_date', '-history_id'),
                'get_latest_by': ('history_date', 'history_id'),
            },
            bases=(simple_history.models.HistoricalChanges, models.Model),
        ),
        migrations.CreateModel(
            name='Holidays',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('name', models.CharField(max_length=30, verbose_name='Name')),
                ('start_date', models.DateField(verbose_name='Start Date')),
                ('end_date', models.DateField(blank=True, null=True, verbose_name='End Date')),
                ('recurring', models.BooleanField(default=False, verbose_name='Recurring')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='HorillaMailTemplate',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('title', models.CharField(max_length=25, unique=True)),
                ('body', models.TextField()),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='JobPosition',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('job_position', models.CharField(max_length=50)),
            ],
            options={
                'verbose_name': 'Job Position',
                'verbose_name_plural': 'Job Positions',
            },
        ),
        migrations.CreateModel(
            name='JobRole',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('job_role', models.CharField(max_length=50, null=True)),
            ],
            options={
                'verbose_name': 'Job Role',
                'verbose_name_plural': 'Job Roles',
            },
        ),
        migrations.CreateModel(
            name='MultipleApprovalCondition',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('condition_field', models.CharField(choices=[('', '---------'), ('requested_days', 'Leave Requested Days')], max_length=255)),
                ('condition_operator', models.CharField(blank=True, choices=[('equal', 'Equal (==)'), ('notequal', 'Not Equal (!=)'), ('range', 'Range'), ('lt', 'Less Than (<)'), ('gt', 'Greater Than (>)'), ('le', 'Less Than or Equal To (<=)'), ('ge', 'Greater Than or Equal To (>=)'), ('icontains', 'Contains')], max_length=255, null=True)),
                ('condition_value', models.CharField(blank=True, max_length=100, null=True, verbose_name='Condition Value')),
                ('condition_start_value', models.CharField(blank=True, max_length=100, null=True, verbose_name='Starting Value')),
                ('condition_end_value', models.CharField(blank=True, max_length=100, null=True, verbose_name='Ending Value')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='MultipleApprovalManagers',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sequence', models.IntegerField()),
                ('employee_id', models.IntegerField(blank=True, null=True)),
                ('reporting_manager', models.CharField(blank=True, max_length=100, null=True)),
            ],
        ),
        migrations.CreateModel(
            name='NotificationSound',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('sound_enabled', models.BooleanField(default=False)),
            ],
        ),
        migrations.CreateModel(
            name='PenaltyAccounts',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('minus_leaves', models.FloatField(default=0.0, null=True)),
                ('deduct_from_carry_forward', models.BooleanField(default=False)),
                ('penalty_amount', models.FloatField(default=0.0, null=True)),
            ],
            options={
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='RotatingShift',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('name', models.CharField(max_length=50)),
                ('additional_data', models.JSONField(blank=True, default=dict, null=True)),
            ],
            options={
                'verbose_name': 'Rotating Shift',
                'verbose_name_plural': 'Rotating Shifts',
            },
        ),
        migrations.CreateModel(
            name='RotatingShiftAssign',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('start_date', models.DateField(default=django.utils.timezone.now, verbose_name='Start Date')),
                ('next_change_date', models.DateField(null=True, verbose_name='Next Switch')),
                ('based_on', models.CharField(choices=[('after', 'After'), ('weekly', 'Weekend'), ('monthly', 'Monthly')], max_length=10, verbose_name='Based On')),
                ('rotate_after_day', models.IntegerField(blank=True, default=7, null=True, verbose_name='Rotate After Day')),
                ('rotate_every_weekend', models.CharField(blank=True, choices=[('monday', 'Monday'), ('tuesday', 'Tuesday'), ('wednesday', 'Wednesday'), ('thursday', 'Thursday'), ('friday', 'Friday'), ('saturday', 'Saturday'), ('sunday', 'Sunday')], default='monday', max_length=10, null=True, verbose_name='Rotate Every Weekend')),
                ('rotate_every', models.CharField(blank=True, choices=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10'), ('11', '11'), ('12', '12'), ('13', '13'), ('14', '14'), ('15', '15'), ('16', '16'), ('17', '17'), ('18', '18'), ('19', '19'), ('20', '20'), ('21', '21'), ('22', '22'), ('23', '23'), ('24', '24'), ('25', '25'), ('26', '26'), ('27', '27'), ('28', '28'), ('29', '29'), ('30', '30'), ('31', '31'), ('last', 'Last Day')], default='1', max_length=10, null=True, verbose_name='Rotate Every Month')),
                ('additional_data', models.JSONField(blank=True, default=dict, null=True)),
            ],
            options={
                'verbose_name': 'Rotating Shift Assign',
                'verbose_name_plural': 'Rotating Shift Assigns',
                'ordering': ['-next_change_date', '-employee_id__employee_first_name'],
            },
        ),
        migrations.CreateModel(
            name='RotatingWorkType',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('name', models.CharField(max_length=50)),
                ('additional_data', models.JSONField(blank=True, default=dict, null=True)),
            ],
            options={
                'verbose_name': 'Rotating Work Type',
                'verbose_name_plural': 'Rotating Work Types',
            },
        ),
        migrations.CreateModel(
            name='RotatingWorkTypeAssign',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('start_date', models.DateField(default=django.utils.timezone.now, verbose_name='Start Date')),
                ('next_change_date', models.DateField(null=True, verbose_name='Next Switch')),
                ('based_on', models.CharField(choices=[('after', 'After'), ('weekly', 'Weekend'), ('monthly', 'Monthly')], max_length=10, verbose_name='Based On')),
                ('rotate_after_day', models.IntegerField(default=7, verbose_name='Rotate After Day')),
                ('rotate_every_weekend', models.CharField(blank=True, choices=[('monday', 'Monday'), ('tuesday', 'Tuesday'), ('wednesday', 'Wednesday'), ('thursday', 'Thursday'), ('friday', 'Friday'), ('saturday', 'Saturday'), ('sunday', 'Sunday')], default='monday', max_length=10, null=True, verbose_name='Rotate Every Weekend')),
                ('rotate_every', models.CharField(choices=[('1', '1'), ('2', '2'), ('3', '3'), ('4', '4'), ('5', '5'), ('6', '6'), ('7', '7'), ('8', '8'), ('9', '9'), ('10', '10'), ('11', '11'), ('12', '12'), ('13', '13'), ('14', '14'), ('15', '15'), ('16', '16'), ('17', '17'), ('18', '18'), ('19', '19'), ('20', '20'), ('21', '21'), ('22', '22'), ('23', '23'), ('24', '24'), ('25', '25'), ('26', '26'), ('27', '27'), ('28', '28'), ('29', '29'), ('30', '30'), ('31', '31'), ('last', 'Last Day')], default='1', max_length=10, verbose_name='Rotate Every Month')),
                ('additional_data', models.JSONField(blank=True, default=dict, null=True)),
            ],
            options={
                'verbose_name': 'Rotating Work Type Assign',
                'verbose_name_plural': 'Rotating Work Type Assigns',
                'ordering': ['-next_change_date', '-employee_id__employee_first_name'],
            },
        ),
        migrations.CreateModel(
            name='ShiftRequest',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('requested_date', models.DateField(default=django.utils.timezone.now, null=True, verbose_name='Requested Date')),
                ('reallocate_approved', models.BooleanField(default=False, verbose_name='Approved')),
                ('reallocate_canceled', models.BooleanField(default=False, verbose_name='Canceled')),
                ('requested_till', models.DateField(blank=True, null=True, verbose_name='Requested Till')),
                ('description', models.TextField(null=True, verbose_name='Description')),
                ('is_permanent_shift', models.BooleanField(default=False, verbose_name='Permanent Request')),
                ('approved', models.BooleanField(default=False, verbose_name='Approved')),
                ('canceled', models.BooleanField(default=False, verbose_name='Canceled')),
                ('shift_changed', models.BooleanField(default=False)),
            ],
            options={
                'verbose_name': 'Shift Request',
                'verbose_name_plural': 'Shift Requests',
                'ordering': ['-id'],
                'permissions': (('approve_shiftrequest', 'Approve Shift Request'), ('cancel_shiftrequest', 'Cancel Shift Request')),
            },
        ),
        migrations.CreateModel(
            name='ShiftRequestComment',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('comment', models.TextField(null=True, verbose_name='Comment')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='Tags',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('title', models.CharField(max_length=30)),
                ('color', models.CharField(max_length=30)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='TrackLateComeEarlyOut',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('is_enable', models.BooleanField(default=True, help_text='By enabling this, you track the late comes and early outs of employees in their attendance.', verbose_name='Enable')),
            ],
            options={
                'verbose_name': 'Track Late Come Early Out',
                'verbose_name_plural': 'Track Late Come Early Outs',
            },
        ),
        migrations.CreateModel(
            name='WorkType',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('work_type', models.CharField(max_length=50)),
            ],
            options={
                'verbose_name': 'Work Type',
                'verbose_name_plural': 'Work Types',
            },
        ),
        migrations.CreateModel(
            name='WorkTypeRequest',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('requested_date', models.DateField(default=django.utils.timezone.now, null=True, verbose_name='Requested Date')),
                ('requested_till', models.DateField(blank=True, null=True, verbose_name='Requested Till')),
                ('description', models.TextField(null=True, verbose_name='Description')),
                ('is_permanent_work_type', models.BooleanField(default=False, verbose_name='Permanent Request')),
                ('approved', models.BooleanField(default=False, verbose_name='Approved')),
                ('canceled', models.BooleanField(default=False, verbose_name='Canceled')),
                ('work_type_changed', models.BooleanField(default=False)),
            ],
            options={
                'verbose_name': 'Work Type Request',
                'verbose_name_plural': 'Work Type Requests',
                'ordering': ['-id'],
                'permissions': (('approve_worktyperequest', 'Approve Work Type Request'), ('cancel_worktyperequest', 'Cancel Work Type Request')),
            },
        ),
        migrations.CreateModel(
            name='WorkTypeRequestComment',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Created At')),
                ('is_active', models.BooleanField(default=True, verbose_name='Is Active')),
                ('comment', models.TextField(null=True, verbose_name='Comment')),
                ('created_by', models.ForeignKey(blank=True, editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Created By')),
            ],
            options={
                'abstract': False,
            },
        ),
    ]
