#nullable enable
namespace Baya.Application.Models.Nurses;

/// <summary>
/// The aggregated public nurse profile behind the C3 discovery detail — composed from identity (name,
/// avatar, bio, experience), the quality aggregates, the verification signal (<c>isVerified</c> +
/// <c>inoMembership</c>), the nurse's specialty chips, their active bookable services, and the latest
/// published review. Prices are IRR digit-strings; no encrypted credential number is ever exposed.
/// </summary>
public record NursePublicProfileDto(
    long NurseId,
    string NurseName,
    string? AvatarUrl,
    string Bio,
    int YearsExperience,
    decimal AverageRating,
    int TotalReviews,
    int TotalCompletedBookings,
    bool IsVerified,
    bool InoMembership,
    IReadOnlyList<string> AttributeChips,
    IReadOnlyList<NursePublicServiceDto> Services,
    NursePublicLatestReviewDto? LatestReview);

/// <summary>One bookable service on the public profile. <c>PriceIrr</c> is IRR Rials as a digit string.</summary>
public record NursePublicServiceDto(
    long VariantId,
    string DisplayName,
    string PriceIrr,
    string PriceUnit,
    int? SessionCount);

/// <summary>The latest published review teaser. <c>AuthorMasked</c> is intentionally null — the author name
/// is never exposed (privacy); the client renders a generic masked label.</summary>
public record NursePublicLatestReviewDto(
    int Rating,
    string? Body,
    string? AuthorMasked,
    DateTimeOffset CreatedAt);
