using MailKit; using System.Text.Json.Serialization; namespace Services { public class ThreadItemMini { public string Id { get; set; } = ""; public string? FollowUpDraft { get; set; } } public class ThreadStore { public List Threads { get; set; } = new(); } public class ThreadItem { #region Constructeurs //Necessaire pour la déserialisation en json public ThreadItem() { OverdueDays = 7; } //Necessaire pour passer le paramètre lors de la création d'objets public ThreadItem(int overdueDays=7) { OverdueDays = overdueDays; } #endregion #region Méthode privée private bool IsOverDueThread() { var t = this; if (t.LastFollowUpForMessageId == null || t.FollowUpDraft == null) { return false; } var m = t.Messages.Where(m => m.Id == LastFollowUpForMessageId).FirstOrDefault(); if (m == null) { return false; } if (m.Date < DateTimeOffset.UtcNow.AddDays(-1 * OverdueDays)) return true; else return false; } #endregion #region Variable [JsonIgnore] public int OverdueDays { get; set; } = 7; #endregion #region Propriétés public string Id { get; set; } = Guid.NewGuid().ToString(); public string Subject { get; set; } = ""; public List Messages { get; set; } = new(); public string? FollowUpDraft { get; set; } public string? LastFollowUpForMessageId { get; set; } public bool SubjectClosed { get; set; } = false; public DateTimeOffset DateMessage { get; set; } public DateTimeOffset DateLastMessage { get; set; } [JsonIgnore] public string DateMessageSTR { get => DateMessage.ToString("dd/MM/yyyy HH:mm"); } [JsonIgnore] public string DateLastMessageSTR { get => DateLastMessage.ToString("dd/MM/yyyy HH:mm"); } [JsonIgnore] public IEnumerable MessagesSorted => Messages.OrderBy(m => m.Date.UtcDateTime); [JsonIgnore] public bool IsOverdue { get { return IsOverDueThread(); } } #endregion } public class MailMessageItem { public string Id { get; set; } = ""; public string InReplyTo { get; set; } = ""; /*[JsonIgnore] public string UidString { get { return Uid.ToString(); } set { if (value != "0") Uid = UniqueId.Parse(value); } }*/ public string Folder { get; set; } = ""; public string Subject { get; set; } = ""; public string From { get; set; } = ""; public string To { get; set; } = ""; public string Direction { get; set; } = "out"; // "in" ou "out" public DateTimeOffset Date { get; set; } public string Body { get; set; } = ""; public bool RequiresResponse { get; set; } public bool CoversAllPoints { get; set; } //[JsonIgnore] //public UniqueId Uid { get; set; } [JsonIgnore] public string DateSTR { get => $"Le : {Date.DateTime.ToString("dd/MM/yyyy HH:mm")}"; } [JsonIgnore] public string FromSTR { get => $"De : {From}"; } [JsonIgnore] public string ToSTR { get => $"Pour : {To}"; } [JsonIgnore] public string FolderSTR { get => $"Dossier : {Folder}"; } [JsonIgnore] public string SubjectSTR { get => $"Sujet : {Subject}"; } } }