# Generated by Django 6.0.6 on 2026-06-26 04:32

import apps.candidates.validators
import django.db.models.deletion
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='Language',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100, unique=True)),
            ],
            options={
                'db_table': 'candidate_languages',
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='Skill',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100, unique=True)),
            ],
            options={
                'db_table': 'candidate_skills',
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='Candidate',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('first_name', models.CharField(db_index=True, max_length=100)),
                ('last_name', models.CharField(db_index=True, max_length=100)),
                ('phone_number', models.CharField(max_length=20, validators=[apps.candidates.validators.validate_phone_number])),
                ('alternate_phone_number', models.CharField(blank=True, max_length=20, null=True, validators=[apps.candidates.validators.validate_phone_number])),
                ('date_of_birth', models.DateField(blank=True, null=True)),
                ('gender', models.CharField(blank=True, max_length=20, null=True)),
                ('city', models.CharField(blank=True, db_index=True, max_length=100, null=True)),
                ('state', models.CharField(blank=True, max_length=100, null=True)),
                ('country', models.CharField(blank=True, max_length=100, null=True)),
                ('current_address', models.TextField(blank=True, null=True)),
                ('permanent_address', models.TextField(blank=True, null=True)),
                ('fresher', models.BooleanField(db_index=True, default=True)),
                ('total_experience', models.DecimalField(blank=True, decimal_places=1, max_digits=4, null=True, validators=[apps.candidates.validators.validate_non_negative])),
                ('current_company', models.CharField(blank=True, db_index=True, max_length=255, null=True)),
                ('previous_company', models.CharField(blank=True, max_length=255, null=True)),
                ('current_role', models.CharField(blank=True, max_length=255, null=True)),
                ('current_ctc', models.DecimalField(blank=True, decimal_places=2, max_digits=12, null=True, validators=[apps.candidates.validators.validate_non_negative])),
                ('expected_ctc', models.DecimalField(blank=True, decimal_places=2, max_digits=12, null=True, validators=[apps.candidates.validators.validate_non_negative])),
                ('notice_period', models.IntegerField(blank=True, null=True, validators=[apps.candidates.validators.validate_non_negative])),
                ('current_location', models.CharField(blank=True, max_length=100, null=True)),
                ('preferred_location', models.CharField(blank=True, max_length=100, null=True)),
                ('highest_qualification', models.CharField(blank=True, max_length=255, null=True)),
                ('university', models.CharField(blank=True, max_length=255, null=True)),
                ('college', models.CharField(blank=True, max_length=255, null=True)),
                ('passing_year', models.IntegerField(blank=True, null=True, validators=[apps.candidates.validators.validate_passing_year])),
                ('percentage_cgpa', models.CharField(blank=True, max_length=50, null=True)),
                ('professional_summary', models.TextField(blank=True, null=True)),
                ('resume', models.FileField(blank=True, null=True, upload_to='resume/', validators=[apps.candidates.validators.validate_resume_file])),
                ('availability', models.CharField(choices=[('Immediate', 'Immediate'), ('15 Days', '15 Days'), ('30 Days', '30 Days'), ('60 Days', '60 Days'), ('90 Days', '90 Days')], default='Immediate', max_length=20)),
                ('linkedin', models.URLField(blank=True, null=True)),
                ('github', models.URLField(blank=True, null=True)),
                ('portfolio', models.URLField(blank=True, null=True)),
                ('personal_website', models.URLField(blank=True, null=True)),
                ('status', models.CharField(choices=[('Draft', 'Draft'), ('Profile Completed', 'Profile Completed'), ('Verified', 'Verified'), ('Blocked', 'Blocked')], db_index=True, default='Draft', max_length=20)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('is_active', models.BooleanField(db_index=True, default=True)),
                ('is_deleted', models.BooleanField(db_index=True, default=False)),
                ('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='candidates_created', to=settings.AUTH_USER_MODEL)),
                ('updated_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='candidates_updated', to=settings.AUTH_USER_MODEL)),
                ('user', models.OneToOneField(help_text='Associated User account', on_delete=django.db.models.deletion.CASCADE, related_name='candidate_profile', to=settings.AUTH_USER_MODEL)),
                ('languages', models.ManyToManyField(blank=True, related_name='candidates', to='candidates.language')),
                ('skills', models.ManyToManyField(blank=True, related_name='candidates', to='candidates.skill')),
            ],
            options={
                'db_table': 'candidates',
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='CandidateDocument',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('document_type', models.CharField(choices=[('Aadhar Card', 'Aadhar Card'), ('PAN Card', 'PAN Card'), ('Passport', 'Passport'), ('Driving License', 'Driving License'), ('Degree Certificate', 'Degree Certificate'), ('Experience Letter', 'Experience Letter'), ('Offer Letter', 'Offer Letter')], max_length=50)),
                ('file', models.FileField(upload_to='verification_documents/', validators=[apps.candidates.validators.validate_document_file])),
                ('verification_status', models.CharField(choices=[('Pending', 'Pending'), ('Verified', 'Verified'), ('Rejected', 'Rejected')], db_index=True, default='Pending', max_length=20)),
                ('candidate', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='candidates.candidate')),
            ],
            options={
                'db_table': 'candidate_documents',
                'ordering': ['id'],
            },
        ),
        migrations.CreateModel(
            name='CandidateProject',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('project_name', models.CharField(max_length=255)),
                ('description', models.TextField(blank=True, null=True)),
                ('technologies_used', models.TextField(blank=True, help_text='Comma separated technologies list', null=True)),
                ('duration', models.CharField(blank=True, max_length=100, null=True)),
                ('role', models.CharField(blank=True, max_length=100, null=True)),
                ('candidate', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='projects', to='candidates.candidate')),
            ],
            options={
                'db_table': 'candidate_projects',
                'ordering': ['id'],
            },
        ),
        migrations.CreateModel(
            name='CandidateReference',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=255)),
                ('company', models.CharField(blank=True, max_length=255, null=True)),
                ('designation', models.CharField(blank=True, max_length=255, null=True)),
                ('email', models.EmailField(blank=True, max_length=254, null=True)),
                ('phone', models.CharField(blank=True, max_length=20, null=True)),
                ('relationship', models.CharField(blank=True, max_length=100, null=True)),
                ('candidate', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='references', to='candidates.candidate')),
            ],
            options={
                'db_table': 'candidate_references',
                'ordering': ['id'],
            },
        ),
    ]
