from __future__ import annotations

from django.db import models
from django.utils.translation import gettext_lazy as _


class Gender(models.TextChoices):
    MALE = "male", _("Male")
    FEMALE = "female", _("Female")
    OTHER = "other", _("Other")
    PREFER_NOT = "prefer_not", _("Prefer not to say")


class EmploymentType(models.TextChoices):
    FULL_TIME = "full_time", _("Full-time")
    PART_TIME = "part_time", _("Part-time")
    CONTRACT = "contract", _("Contract")
    INTERN = "intern", _("Intern")


class EmployeeStatus(models.TextChoices):
    ACTIVE = "active", _("Active")
    ON_LEAVE = "on_leave", _("On Leave")
    TERMINATED = "terminated", _("Terminated")
    RESIGNED = "resigned", _("Resigned")


class DocumentType(models.TextChoices):
    ID_CARD = "id_card", _("ID Card")
    PASSPORT = "passport", _("Passport")
    CONTRACT = "contract", _("Contract")
    CERTIFICATE = "certificate", _("Certificate")
    OTHER = "other", _("Other")


class OrganizationNodeType(models.TextChoices):
    ORGANIZATION = "organization", _("Organization")
    HOLDING = "holding", _("Holding")
    COMPANY = "company", _("Company")
    BRANCH = "branch", _("Branch")
    DEPARTMENT = "department", _("Department")
    WAREHOUSE = "warehouse", _("Warehouse")


class AccrualMethod(models.TextChoices):
    UPFRONT = "upfront", _("Upfront")
    MONTHLY = "monthly", _("Monthly")
    NONE = "none", _("None")


class CalendarType(models.TextChoices):
    GREGORIAN = "gregorian", _("Gregorian")
    JALALI = "jalali", _("Jalali (Solar Hijri)")
    HIJRI = "hijri", _("Hijri (Lunar)")


class LeaveRequestStatus(models.TextChoices):
    DRAFT = "draft", _("Draft")
    PENDING = "pending", _("Pending Approval")
    APPROVED = "approved", _("Approved")
    REJECTED = "rejected", _("Rejected")
    CANCELLED = "cancelled", _("Cancelled")


class AttendanceSource(models.TextChoices):
    MANUAL = "manual", _("Manual Entry")
    BIOMETRIC = "biometric", _("Biometric Device")
    MOBILE = "mobile", _("Mobile App")
    SYSTEM = "system", _("System")


class PositionStatus(models.TextChoices):
    ACTIVE = "active", _("Active")
    FROZEN = "frozen", _("Frozen")
    CLOSED = "closed", _("Closed")
    PLANNED = "planned", _("Planned")


class AssignmentType(models.TextChoices):
    PERMANENT = "permanent", _("Permanent")
    TEMPORARY = "temporary", _("Temporary")
    SECONDMENT = "secondment", _("Secondment")


class EmploymentStatus(models.TextChoices):
    ACTIVE = "active", _("Active")
    ON_LEAVE = "on_leave", _("On Leave")
    SUSPENDED = "suspended", _("Suspended")
    TERMINATED = "terminated", _("Terminated")
    RESIGNED = "resigned", _("Resigned")
    RETIRED = "retired", _("Retired")
