#if NET
namespace DigitalData.Core.Abstraction.Application.DTO;

/// <summary>
/// Represents settings related to user cookie consent dialogs. Designed to be serialized into JSON format for use with JavaScript frontend libraries,
/// such as the bootstrap-cookie-consent-settings at the GitHub repository: https://github.com/shaack/bootstrap-cookie-consent-settings
/// </summary>
public class CookieConsentSettings
{
    /// <summary>
    /// URL to the privacy policy page.
    /// </summary>
    public string? PrivacyPolicyUrl { get; set; }

    /// <summary>
    /// URL to the legal notice page.
    /// </summary>
    public string? LegalNoticeUrl { get; set; }

    /// <summary>
    /// URL to the content of the dialog box.
    /// </summary>
    public string? ContentURL { get; set; }

    /// <summary>
    /// CSS class for the 'Agree' button.
    /// </summary>
    public string? ButtonAgreeClass { get; set; }

    /// <summary>
    /// CSS class for the 'Don't Agree' button.
    /// </summary>
    public string? ButtonDontAgreeClass { get; set; }

    /// <summary>
    /// CSS class for the 'Save' button.
    /// </summary>
    public string? ButtonSaveClass { get; set; }

    /// <summary>
    /// Language in which the modal is displayed.
    /// </summary>
    public string? Lang { get; set; }

    /// <summary>
    /// Default language for the modal if the user's browser language is not supported.
    /// </summary>
    public string? DefaultLang { get; set; }

    /// <summary>
    /// Name of the cookie used to store the consent status.
    /// </summary>
    public string? CookieName { get; set; }

    /// <summary>
    /// Number of days the cookie will be stored.
    /// </summary>
    public int CookieStorageDays { get; set; }

    /// <summary>
    /// Identifier for the modal dialog element.
    /// </summary>
    public string? ModalId { get; set; }

    /// <summary>
    /// Indicates whether to also store the settings in the browser's localStorage.
    /// </summary>
    public bool AlsoUseLocalStorage { get; set; }

    /// <summary>
    /// List of categories for cookie consent.
    /// </summary>
    public List<string>? Categories { get; set; }
}
#endif