# Generated by Django 5.2.1 on 2025-05-20 18:01

import django.db.models.deletion
import uuid
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='Company',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('name', models.CharField(max_length=255)),
                ('cnpj', models.CharField(max_length=18, unique=True, verbose_name='CNPJ')),
                ('address', models.TextField()),
                ('is_active', models.BooleanField(default=True)),
            ],
            options={
                'verbose_name_plural': 'Companies',
            },
        ),
        migrations.CreateModel(
            name='CostCenter',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('code', models.CharField(max_length=50)),
                ('name', models.CharField(max_length=255)),
                ('is_active', models.BooleanField(default=True)),
                ('company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cost_centers', to='vacations.company')),
            ],
            options={
                'unique_together': {('company', 'code')},
            },
        ),
        migrations.CreateModel(
            name='EmployeeProfile',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('role', models.CharField(choices=[('employee', 'Colaborador'), ('manager', 'Gestor'), ('admin', 'Administrador (RH)')], default='employee', max_length=20)),
                ('employee_id', models.CharField(max_length=50, unique=True, verbose_name='Matrícula')),
                ('hire_date', models.DateField()),
                ('is_active', models.BooleanField(default=True)),
                ('company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='employees', to='vacations.company')),
                ('cost_center', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='employees', to='vacations.costcenter')),
                ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='VacationRequest',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('start_date', models.DateField()),
                ('end_date', models.DateField()),
                ('status', models.CharField(choices=[('pending', 'Pendente'), ('approved', 'Aprovado'), ('rejected', 'Rejeitado'), ('cancelled', 'Cancelado')], default='pending', max_length=20)),
                ('selling_days', models.IntegerField(default=0, help_text='Number of days being sold (max 1/3 of total)')),
                ('approval_date', models.DateTimeField(blank=True, null=True)),
                ('rejection_reason', models.TextField(blank=True, null=True)),
                ('approved_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='approved_vacations', to='vacations.employeeprofile')),
                ('employee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='vacation_requests', to='vacations.employeeprofile')),
            ],
            options={
                'ordering': ['-start_date'],
            },
        ),
        migrations.CreateModel(
            name='VacationLog',
            fields=[
                ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('action', models.CharField(choices=[('request', 'Solicitação'), ('approve', 'Aprovação'), ('reject', 'Rejeição'), ('cancel', 'Cancelamento'), ('edit', 'Edição')], max_length=20)),
                ('details', models.TextField(blank=True, null=True)),
                ('performed_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vacation_logs', to=settings.AUTH_USER_MODEL)),
                ('vacation_request', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='logs', to='vacations.vacationrequest')),
            ],
            options={
                'ordering': ['-created_at'],
            },
        ),
    ]
