using Baya.Domain.Common;

namespace Baya.Domain.Entities.Booking;

/// <summary>
/// Encrypted clinical/logistical context for a booking — <b>stage 2</b> of the two-stage disclosure
/// boundary. Kept in its own 1:1 table (not on <see cref="Booking"/>) so the financial/scheduling row stays
/// clean and these fields carry stricter access control: readable <b>only post-confirmation</b> and <b>only</b>
/// by the assigned nurse + admin (never the customer, never an unassigned nurse). Every field is encrypted
/// at rest through the field encryptor and is <b>never</b> projected into a list query or logged.
/// </summary>
public class BookingCareInstruction : BaseEntity<long>
{
    public long BookingId { get; set; }
    public Booking Booking { get; set; }

    /// <summary>Encrypted at rest.</summary>
    public string CurrentConditions { get; set; }

    /// <summary>Encrypted at rest.</summary>
    public string Medications { get; set; }

    /// <summary>Encrypted at rest.</summary>
    public string Allergies { get; set; }

    /// <summary>Encrypted at rest.</summary>
    public string SpecialInstructions { get; set; }

    /// <summary>Encrypted at rest.</summary>
    public string EmergencyContactName { get; set; }

    /// <summary>Encrypted at rest.</summary>
    public string EmergencyContactPhone { get; set; }

    public DateTimeOffset? DeletedAt { get; set; }
}
