using System.ComponentModel.DataAnnotations;

namespace JobsMedical.Web.Models;

/// <summary>
/// A saved job alert ("هشدار شغلی") — the user describes what they're after (kind, role, city,
/// shift type, employment type, minimum pay). When an employer publishes a matching shift/job,
/// the matching engine notifies the owner. A user can keep several alerts; each can be paused.
/// </summary>
public class JobAlert
{
    public int Id { get; set; }

    public int UserId { get; set; }
    public User User { get; set; } = null!;

    [MaxLength(120)] public string? Label { get; set; }      // optional friendly name

    public AlertScope Scope { get; set; } = AlertScope.Any;

    public int? RoleId { get; set; }                         // null = any role
    public Role? Role { get; set; }

    public int? CityId { get; set; }                         // null = any city
    public City? City { get; set; }

    public int? DistrictId { get; set; }                     // null = any district

    public ShiftType? ShiftType { get; set; }                // for shifts; null = any
    public EmploymentType? EmploymentType { get; set; }      // for jobs; null = any

    /// <summary>Minimum acceptable pay (تومان): per-shift amount for shifts, monthly salary for jobs.</summary>
    public long? MinPay { get; set; }

    public bool IsActive { get; set; } = true;
    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
