namespace JobTrackerApi.Models;

public sealed class TailoredCvDraft
{
    public int Id { get; set; }
    public string OwnerUserId { get; set; } = string.Empty;
    public int JobApplicationId { get; set; }
    public JobApplication? JobApplication { get; set; }
    public int? CanonicalProfileVersion { get; set; }
    public string TemplateId { get; set; } = "ats-minimal";
    public string? Headline { get; set; }
    public string? SummaryJson { get; set; }
    public string? SelectedSkillsJson { get; set; }
    public string? ExperienceJson { get; set; }
    public string? EducationJson { get; set; }
    public string? CustomSectionsJson { get; set; }
    public string? RenderOptionsJson { get; set; }
    public string? GenerationContextHash { get; set; }
    public DateTimeOffset? LastGeneratedAtUtc { get; set; }
    public DateTimeOffset? LastEditedAtUtc { get; set; }
    public string Status { get; set; } = "generated";
}

public sealed class TailoredCvDocument
{
    public string TemplateId { get; set; } = "ats-minimal";
    public string? Headline { get; set; }
    public List<string> Summary { get; set; } = new();
    public List<string> SelectedSkills { get; set; } = new();
    public List<TailoredCvExperienceItem> Experience { get; set; } = new();
    public List<TailoredCvEducationItem> Education { get; set; } = new();
    public List<TailoredCvCustomSection> CustomSections { get; set; } = new();
    public TailoredCvRenderOptions RenderOptions { get; set; } = new();
}

public sealed class TailoredCvExperienceItem
{
    public string? Title { get; set; }
    public string? Company { get; set; }
    public string? Location { get; set; }
    public string? Start { get; set; }
    public string? End { get; set; }
    public bool IsCurrent { get; set; }
    public List<string> Bullets { get; set; } = new();
}

public sealed class TailoredCvEducationItem
{
    public string? Qualification { get; set; }
    public string? QualificationLevel { get; set; }
    public string? Institution { get; set; }
    public string? Location { get; set; }
    public string? Start { get; set; }
    public string? End { get; set; }
    public List<string> Details { get; set; } = new();
}

public sealed class TailoredCvCustomSection
{
    public string? Title { get; set; }
    public List<string> Items { get; set; } = new();
}

public sealed class TailoredCvRenderOptions
{
    public bool ShowPhoto { get; set; }
    public string PageMode { get; set; } = "one-page";
    public string AccentColor { get; set; } = "slate";
    public List<string> SectionOrder { get; set; } = new() { "summary", "skills", "experience", "education", "custom" };
    public string BulletDensity { get; set; } = "balanced";
}
