namespace JobsMedical.Web.Models;

public enum UserRole
{
    Doctor = 0,
    FacilityAdmin = 1,
    Admin = 2
}

public enum FacilityType
{
    Hospital = 0,      // بیمارستان
    Clinic = 1,        // کلینیک
    Polyclinic = 2     // درمانگاه
}

public enum ShiftType
{
    Day = 0,           // روز
    Evening = 1,       // عصر
    Night = 2,         // شب
    OnCall = 3         // آنکال
}

public enum ShiftStatus
{
    Open = 0,          // باز
    Filled = 1,        // پر شده
    Expired = 2,       // منقضی
    Cancelled = 3,     // لغو شده
    Archived = 4       // بایگانی‌شده (پنهان از سایت، نگه‌داری برای تحلیل)
}

public enum ShiftSource
{
    Direct = 0,        // ثبت مستقیم مرکز درمانی
    Admin = 1,         // ثبت توسط ادمین
    Aggregated = 2     // جمع‌آوری شده از کانال‌ها
}

public enum PayType
{
    PerShift = 0,      // مقطوع برای هر شیفت
    PerHour = 1,       // ساعتی
    Negotiable = 2,    // توافقی
    Percentage = 3     // درصدی / سهم درآمد
}

public enum ApplicationStatus
{
    Interested = 0,    // اعلام تمایل
    Accepted = 1,      // پذیرفته شده
    Rejected = 2,      // رد شده
    Withdrawn = 3      // انصراف
}

public enum RawListingStatus
{
    New = 0,           // جدید (آماده بررسی)
    Normalized = 1,    // تبدیل شده به شیفت/استخدام
    Discarded = 2,     // کنار گذاشته شده (یا اسپم)
    Flagged = 3        // ناقص/مشکوک — نیازمند بررسی دستی بیشتر
}

public enum EmploymentType
{
    FullTime = 0,      // تمام‌وقت
    PartTime = 1,      // پاره‌وقت
    Contract = 2,      // قراردادی
    Plan = 3           // طرح
}

/// <summary>What an aggregated/raw listing turned out to be — a shift, a hiring opening, or a
/// worker advertising themselves as available («آماده به کار»).</summary>
public enum ListingKind
{
    Shift = 0,
    Job = 1,
    Talent = 2
}

/// <summary>Which listing types a job alert watches.</summary>
public enum AlertScope
{
    Any = 0,      // هر دو (شیفت و استخدام)
    Shifts = 1,   // فقط شیفت
    Jobs = 2      // فقط استخدام
}

/// <summary>
/// Gender. On a listing it's the requirement (Any = فرقی نمی‌کند); on a person it's their gender
/// (Any = unspecified).
/// </summary>
public enum Gender
{
    Any = 0,     // فرقی نمی‌کند / نامشخص
    Male = 1,    // آقا
    Female = 2   // خانم
}

/// <summary>How ingested listings get onto the site.</summary>
public enum IngestionMode
{
    Manual = 0,      // همه‌چیز به صف بررسی می‌رود؛ ادمین تأیید می‌کند
    Automatic = 1    // موارد تأییدشده (طبق آستانه/هوش مصنوعی) خودکار منتشر می‌شوند
}

/// <summary>A way to reach an applicant («آماده به کار»). One listing can have several.</summary>
public enum ContactType
{
    Mobile = 0,     // موبایل
    Phone = 1,      // تلفن ثابت
    Email = 2,      // ایمیل
    Telegram = 3,   // تلگرام
    Bale = 4,       // بله
    WhatsApp = 5,   // واتساپ
    Instagram = 6,  // اینستاگرام
    Website = 7,    // وب‌سایت / لینک
    Other = 8       // سایر
}

/// <summary>What a <see cref="Like"/> points at.</summary>
public enum LikeTargetType { Shift = 0, Job = 1, Talent = 2 }

public enum ReportTargetType { Shift = 0, Job = 1, Facility = 2, User = 3 }
public enum ReportStatus { Open = 0, Resolved = 1, Dismissed = 2 }

/// <summary>Facility verification lifecycle. Facility.IsVerified stays in sync (true only when Verified).</summary>
public enum VerificationStatus { Unverified = 0, Pending = 1, Verified = 2, Rejected = 3 }
