using System; using SQLite; using Wino.Core.Domain.Entities.Mail; using Wino.Core.Domain.Enums; namespace Wino.Core.Domain.Entities.Shared { public class MailAccount { [PrimaryKey] public Guid Id { get; set; } /// /// Given name of the account in Wino. /// public string Name { get; set; } /// /// TODO: Display name of the authenticated user/account. /// API integrations will query this value from the API. /// IMAP is populated by user on setup dialog. /// public string SenderName { get; set; } /// /// Account e-mail address. /// public string Address { get; set; } /// /// Provider type of the account. Outlook,Gmail etc... /// public MailProviderType ProviderType { get; set; } /// /// For tracking mail change delta. /// Gmail : historyId /// Outlook: deltaToken /// public string SynchronizationDeltaIdentifier { get; set; } /// /// For tracking calendar change delta. /// Gmail: It's per-calendar, so unused. /// Outlook: deltaLink /// public string CalendarSynchronizationDeltaIdentifier { get; set; } /// /// TODO: Gets or sets the custom account identifier color in hex. /// public string AccountColorHex { get; set; } /// /// Base64 encoded profile picture of the account. /// public string Base64ProfilePictureData { get; set; } /// /// Gets or sets the listing order of the account in the accounts list. /// public int Order { get; set; } /// /// Gets or sets whether the account has any reason for an interactive user action to fix continue operating. /// public AccountAttentionReason AttentionReason { get; set; } /// /// Gets or sets the id of the merged inbox this account belongs to. /// public Guid? MergedInboxId { get; set; } /// /// Gets or sets the additional IMAP provider assignment for the account. /// Providers that use IMAP as a synchronizer but have special requirements. /// public SpecialImapProvider SpecialImapProvider { get; set; } /// /// Contains the merged inbox this account belongs to. /// Ignored for all SQLite operations. /// [Ignore] public MergedInbox MergedInbox { get; set; } /// /// Populated only when account has custom server information. /// [Ignore] public CustomServerInformation ServerInformation { get; set; } /// /// Account preferences. /// [Ignore] public MailAccountPreferences Preferences { get; set; } /// /// Gets whether the account can perform ProfileInformation sync type. /// public bool IsProfileInfoSyncSupported => ProviderType == MailProviderType.Outlook || ProviderType == MailProviderType.Gmail; /// /// Gets whether the account can perform AliasInformation sync type. /// public bool IsAliasSyncSupported => ProviderType == MailProviderType.Gmail; } }