using MailSharp.MailClient.Models; namespace MailSharp.MailClient.Controllers.Api; public class AccountDto { public int Id { get; set; } public string DisplayName { get; set; } = ""; public string EmailAddress { get; set; } = ""; public string Signature { get; set; } = ""; public int MessagesPerPage { get; set; } public int ContactsPerPage { get; set; } public int AutoCheckIntervalMinutes { get; set; } public string TimeZoneId { get; set; } = ""; public bool IsAdmin { get; set; } public static AccountDto From(Account a) => new() { Id = a.Id, DisplayName = a.DisplayName, EmailAddress = a.EmailAddress, Signature = a.Signature, MessagesPerPage = a.MessagesPerPage, ContactsPerPage = a.ContactsPerPage, AutoCheckIntervalMinutes = a.AutoCheckIntervalMinutes, TimeZoneId = a.TimeZoneId, IsAdmin = a.IsAdmin }; } public class AuthStateDto { public bool IsLoggedIn { get; set; } public AccountDto? Account { get; set; } public List Accounts { get; set; } = []; } public class LoginDefaultsDto { public string ImapHost { get; set; } = string.Empty; public int ImapPort { get; set; } public SecurityMode ImapSecurity { get; set; } public string SmtpHost { get; set; } = string.Empty; public int SmtpPort { get; set; } public SecurityMode SmtpSecurity { get; set; } } public class LoginRequest { public string EmailAddress { get; set; } = ""; public string Username { get; set; } = ""; public string Password { get; set; } = ""; public bool Advanced { get; set; } public string ImapHost { get; set; } = ""; public int ImapPort { get; set; } public SecurityMode ImapSecurity { get; set; } public string SmtpHost { get; set; } = ""; public int SmtpPort { get; set; } public SecurityMode SmtpSecurity { get; set; } } public class SwitchAccountRequest { public int AccountId { get; set; } } public class RemoveAccountRequest { public int AccountId { get; set; } } public class MessagesResponse { public List Messages { get; set; } = []; public int Page { get; set; } public int PageSize { get; set; } public int TotalCount { get; set; } public int TotalPages { get; set; } } public class AllowImagesRequest { public string Folder { get; set; } = ""; public uint Uid { get; set; } public string Sender { get; set; } = ""; } public class LanguageOptionDto { public string Code { get; set; } = ""; public string Name { get; set; } = ""; } public class LanguageStateDto { public string Current { get; set; } = ""; public List Languages { get; set; } = []; public Dictionary Strings { get; set; } = []; } public class SetLanguageRequest { public string Lang { get; set; } = ""; } public class UidsRequest { public string Folder { get; set; } = ""; public List Uids { get; set; } = []; } public class MoveRequest { public string Folder { get; set; } = ""; public List Uids { get; set; } = []; public string TargetFolder { get; set; } = ""; } public class FolderRequest { public string Folder { get; set; } = ""; } public class ContactDto { public string Email { get; set; } = ""; public string DisplayName { get; set; } = ""; } public class UpdateContactRequest { public string Email { get; set; } = ""; public string DisplayName { get; set; } = ""; } public class AccountSettingsDto { public string FriendlyName { get; set; } = ""; public string Signature { get; set; } = ""; public int MessagesPerPage { get; set; } public int ContactsPerPage { get; set; } public int AutoCheckIntervalMinutes { get; set; } public string TimeZoneId { get; set; } = ""; public string Language { get; set; } = ""; public static AccountSettingsDto From(Account a) => new() { FriendlyName = a.DisplayName, Signature = a.Signature, MessagesPerPage = a.MessagesPerPage, ContactsPerPage = a.ContactsPerPage, AutoCheckIntervalMinutes = a.AutoCheckIntervalMinutes, TimeZoneId = a.TimeZoneId, Language = a.Language }; } public class SettingsStateDto { public AccountSettingsDto Settings { get; set; } = new(); public List TimeZones { get; set; } = []; public List Languages { get; set; } = []; } public class FolderSettingItem { public string FullName { get; set; } = ""; public FolderSyncMode SyncMode { get; set; } public bool Subscribed { get; set; } } public class SaveFolderSettingsRequest { public List Folders { get; set; } = []; } public class AddFolderRequest { public string Name { get; set; } = ""; } public class DeleteFoldersRequest { public List FolderNames { get; set; } = []; } public class MoveFolderRequest { public string Folder { get; set; } = ""; public string? NewParent { get; set; } } public class RenameFolderRequest { public string Folder { get; set; } = ""; public string NewName { get; set; } = ""; }