# Generated by Django 5.2.17 on 2026-09-02 17:07

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


class Migration(migrations.Migration):

    dependencies = [
        ('customers', '0003_dealer_customer_dealer_inquiry_feasibilityassessment_and_more'),
        ('tenancy', '0003_organization_address_organization_email_and_more'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='StaffProfile',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('staff_code', models.CharField(max_length=50)),
                ('phone', models.CharField(blank=True, max_length=30)),
                ('alternate_phone', models.CharField(blank=True, max_length=30)),
                ('cnic', models.CharField(blank=True, max_length=30)),
                ('department', models.CharField(blank=True, max_length=100)),
                ('designation', models.CharField(blank=True, max_length=100)),
                ('role', models.CharField(choices=[('OWNER', 'Owner'), ('ADMIN', 'Admin'), ('MANAGER', 'Manager'), ('ACCOUNTANT', 'Accountant'), ('OPERATOR', 'Operator'), ('RECOVERY_OFFICER', 'Recovery Officer'), ('TECHNICIAN', 'Technician'), ('SUPPORT_OFFICER', 'Support Officer'), ('FIELD_OFFICER', 'Field Officer'), ('STAFF', 'Staff')], default='STAFF', max_length=30)),
                ('joining_date', models.DateField(blank=True, null=True)),
                ('status', models.CharField(choices=[('ACTIVE', 'Active'), ('INACTIVE', 'Inactive'), ('SUSPENDED', 'Suspended'), ('TERMINATED', 'Terminated')], default='ACTIVE', max_length=30)),
                ('notes', models.TextField(blank=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('assigned_area', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='assigned_staff', to='customers.area')),
                ('membership', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to='tenancy.organizationmembership')),
                ('organization', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='staff_profiles', to='tenancy.organization')),
                ('supervisor', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='subordinates', to='tenancy.staffprofile')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='staff_profiles', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'db_table': 'tenancy_staff_profile',
                'ordering': ['-created_at'],
                'indexes': [models.Index(fields=['organization', 'status'], name='staff_org_status_idx'), models.Index(fields=['organization', 'role'], name='staff_org_role_idx'), models.Index(fields=['organization', 'department'], name='staff_org_dept_idx')],
                'constraints': [models.UniqueConstraint(fields=('organization', 'staff_code'), name='unique_staff_code_per_org')],
            },
        ),
    ]
