# Generated by Django 5.2.6 on 2025-10-02 14:14

import django.core.validators
import django.db.models.deletion
import recruitment.validators
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('recruitment', '0005_zoommeeting'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='JobPosting',
            fields=[
                ('title', models.CharField(max_length=200)),
                ('department', models.CharField(blank=True, max_length=100)),
                ('job_type', models.CharField(choices=[('FULL_TIME', 'Full-time'), ('PART_TIME', 'Part-time'), ('CONTRACT', 'Contract'), ('INTERNSHIP', 'Internship'), ('FACULTY', 'Faculty'), ('TEMPORARY', 'Temporary')], default='FULL_TIME', max_length=20)),
                ('workplace_type', models.CharField(choices=[('ON_SITE', 'On-site'), ('REMOTE', 'Remote'), ('HYBRID', 'Hybrid')], default='ON_SITE', max_length=20)),
                ('location_city', models.CharField(blank=True, max_length=100)),
                ('location_state', models.CharField(blank=True, max_length=100)),
                ('location_country', models.CharField(default='United States', max_length=100)),
                ('description', models.TextField(help_text='Full job description including responsibilities and requirements')),
                ('qualifications', models.TextField(blank=True, help_text='Required qualifications and skills')),
                ('salary_range', models.CharField(blank=True, help_text='e.g., $60,000 - $80,000', max_length=200)),
                ('benefits', models.TextField(blank=True, help_text='Benefits offered')),
                ('application_url', models.URLField(help_text='URL where candidates apply', validators=[django.core.validators.URLValidator()])),
                ('application_deadline', models.DateField(blank=True, null=True)),
                ('application_instructions', models.TextField(blank=True, help_text='Special instructions for applicants')),
                ('internal_job_id', models.CharField(editable=False, max_length=50, primary_key=True, serialize=False)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('created_by', models.CharField(blank=True, help_text='Name of person who created this job', max_length=100)),
                ('status', models.CharField(choices=[('DRAFT', 'Draft'), ('ACTIVE', 'Active'), ('CLOSED', 'Closed'), ('ARCHIVED', 'Archived')], default='DRAFT', max_length=20)),
                ('hash_tags', models.CharField(blank=True, help_text='Comma-separated hashtags for linkedin post like #hiring,#jobopening', max_length=200, validators=[recruitment.validators.validate_hash_tags])),
                ('linkedin_post_id', models.CharField(blank=True, help_text='LinkedIn post ID after posting', max_length=200)),
                ('linkedin_post_url', models.URLField(blank=True, help_text='Direct URL to LinkedIn post')),
                ('posted_to_linkedin', models.BooleanField(default=False)),
                ('linkedin_post_status', models.CharField(blank=True, help_text='Status of LinkedIn posting', max_length=50)),
                ('linkedin_posted_at', models.DateTimeField(blank=True, null=True)),
                ('position_number', models.CharField(blank=True, help_text='University position number', max_length=50)),
                ('reporting_to', models.CharField(blank=True, help_text='Who this position reports to', max_length=100)),
                ('start_date', models.DateField(blank=True, help_text='Desired start date', null=True)),
                ('open_positions', models.PositiveIntegerField(default=1, help_text='Number of open positions for this job')),
            ],
            options={
                'verbose_name': 'Job Posting',
                'verbose_name_plural': 'Job Postings',
                'ordering': ['-created_at'],
            },
        ),
        migrations.AlterModelOptions(
            name='candidate',
            options={'verbose_name': 'Candidate', 'verbose_name_plural': 'Candidates'},
        ),
        migrations.AlterModelOptions(
            name='job',
            options={'verbose_name': 'Job', 'verbose_name_plural': 'Jobs'},
        ),
        migrations.AlterModelOptions(
            name='trainingmaterial',
            options={'verbose_name': 'Training Material', 'verbose_name_plural': 'Training Materials'},
        ),
        migrations.RemoveField(
            model_name='zoommeeting',
            name='host_email',
        ),
        migrations.RemoveField(
            model_name='zoommeeting',
            name='host_video',
        ),
        migrations.RemoveField(
            model_name='zoommeeting',
            name='password',
        ),
        migrations.RemoveField(
            model_name='zoommeeting',
            name='status',
        ),
        migrations.AddField(
            model_name='candidate',
            name='exam_date',
            field=models.DateField(blank=True, null=True, verbose_name='Exam Date'),
        ),
        migrations.AddField(
            model_name='candidate',
            name='exam_status',
            field=models.CharField(blank=True, choices=[('Passed', 'Passed'), ('Failed', 'Failed')], max_length=100, null=True, verbose_name='Exam Status'),
        ),
        migrations.AddField(
            model_name='candidate',
            name='first_name',
            field=models.CharField(default='user', max_length=255, verbose_name='First Name'),
            preserve_default=False,
        ),
        migrations.AddField(
            model_name='candidate',
            name='interview_date',
            field=models.DateField(blank=True, null=True, verbose_name='Interview Date'),
        ),
        migrations.AddField(
            model_name='candidate',
            name='interview_status',
            field=models.CharField(blank=True, choices=[('Accepted', 'Accepted'), ('Rejected', 'Rejected')], max_length=100, null=True, verbose_name='Interview Status'),
        ),
        migrations.AddField(
            model_name='candidate',
            name='join_date',
            field=models.DateField(blank=True, null=True, verbose_name='Join Date'),
        ),
        migrations.AddField(
            model_name='candidate',
            name='last_name',
            field=models.CharField(default='user', max_length=255, verbose_name='Last Name'),
            preserve_default=False,
        ),
        migrations.AddField(
            model_name='candidate',
            name='offer_date',
            field=models.DateField(blank=True, null=True, verbose_name='Offer Date'),
        ),
        migrations.AddField(
            model_name='candidate',
            name='offer_status',
            field=models.CharField(blank=True, choices=[('Accepted', 'Accepted'), ('Rejected', 'Rejected')], max_length=100, null=True, verbose_name='Offer Status'),
        ),
        migrations.AddField(
            model_name='candidate',
            name='phone',
            field=models.CharField(default='0569874562', max_length=20, verbose_name='Phone'),
            preserve_default=False,
        ),
        migrations.AddField(
            model_name='candidate',
            name='stage',
            field=models.CharField(default='Applied', max_length=100, verbose_name='Stage'),
        ),
        migrations.AlterField(
            model_name='candidate',
            name='applied',
            field=models.BooleanField(default=False, verbose_name='Applied'),
        ),
        migrations.AlterField(
            model_name='candidate',
            name='created_at',
            field=models.DateTimeField(auto_now_add=True, verbose_name='Created at'),
        ),
        migrations.AlterField(
            model_name='candidate',
            name='email',
            field=models.EmailField(max_length=254, verbose_name='Email'),
        ),
        migrations.AlterField(
            model_name='candidate',
            name='name',
            field=models.CharField(max_length=255, verbose_name='Name'),
        ),
        migrations.AlterField(
            model_name='candidate',
            name='parsed_summary',
            field=models.TextField(blank=True, verbose_name='Parsed Summary'),
        ),
        migrations.AlterField(
            model_name='candidate',
            name='resume',
            field=models.FileField(upload_to='resumes/', verbose_name='Resume'),
        ),
        migrations.AlterField(
            model_name='candidate',
            name='updated_at',
            field=models.DateTimeField(auto_now=True, verbose_name='Updated at'),
        ),
        migrations.AlterField(
            model_name='job',
            name='created_at',
            field=models.DateTimeField(auto_now_add=True, verbose_name='Created at'),
        ),
        migrations.AlterField(
            model_name='job',
            name='description_ar',
            field=models.TextField(verbose_name='Description Arabic'),
        ),
        migrations.AlterField(
            model_name='job',
            name='description_en',
            field=models.TextField(verbose_name='Description English'),
        ),
        migrations.AlterField(
            model_name='job',
            name='is_published',
            field=models.BooleanField(default=False, verbose_name='Published'),
        ),
        migrations.AlterField(
            model_name='job',
            name='posted_to_linkedin',
            field=models.BooleanField(default=False, verbose_name='Posted to LinkedIn'),
        ),
        migrations.AlterField(
            model_name='job',
            name='title',
            field=models.CharField(max_length=255, verbose_name='Title'),
        ),
        migrations.AlterField(
            model_name='job',
            name='updated_at',
            field=models.DateTimeField(auto_now=True, verbose_name='Updated at'),
        ),
        migrations.AlterField(
            model_name='trainingmaterial',
            name='content',
            field=models.TextField(blank=True, verbose_name='Content'),
        ),
        migrations.AlterField(
            model_name='trainingmaterial',
            name='created_at',
            field=models.DateTimeField(auto_now_add=True, verbose_name='Created at'),
        ),
        migrations.AlterField(
            model_name='trainingmaterial',
            name='created_by',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Created by'),
        ),
        migrations.AlterField(
            model_name='trainingmaterial',
            name='file',
            field=models.FileField(blank=True, upload_to='training_materials/', verbose_name='File'),
        ),
        migrations.AlterField(
            model_name='trainingmaterial',
            name='title',
            field=models.CharField(max_length=255, verbose_name='Title'),
        ),
        migrations.AlterField(
            model_name='trainingmaterial',
            name='updated_at',
            field=models.DateTimeField(auto_now=True, verbose_name='Updated at'),
        ),
        migrations.AlterField(
            model_name='trainingmaterial',
            name='video_link',
            field=models.URLField(blank=True, verbose_name='Video Link'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='created_at',
            field=models.DateTimeField(auto_now_add=True, verbose_name='Created at'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='duration',
            field=models.PositiveIntegerField(verbose_name='Duration'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='join_before_host',
            field=models.BooleanField(default=False, verbose_name='Join Before Host'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='join_url',
            field=models.URLField(verbose_name='Join URL'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='meeting_id',
            field=models.CharField(max_length=20, unique=True, verbose_name='Meeting ID'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='mute_upon_entry',
            field=models.BooleanField(default=False, verbose_name='Mute Upon Entry'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='participant_video',
            field=models.BooleanField(default=True, verbose_name='Participant Video'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='start_time',
            field=models.DateTimeField(verbose_name='Start Time'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='timezone',
            field=models.CharField(max_length=50, verbose_name='Timezone'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='topic',
            field=models.CharField(max_length=255, verbose_name='Topic'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='updated_at',
            field=models.DateTimeField(auto_now=True, verbose_name='Updated at'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='waiting_room',
            field=models.BooleanField(default=False, verbose_name='Waiting Room'),
        ),
        migrations.AlterField(
            model_name='zoommeeting',
            name='zoom_gateway_response',
            field=models.JSONField(blank=True, null=True, verbose_name='Zoom Gateway Response'),
        ),
        migrations.AlterField(
            model_name='candidate',
            name='job',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='candidates', to='recruitment.jobposting', verbose_name='Job'),
        ),
    ]
