Files
Wino-Mail/Wino.Core.Domain/Models/Comparers/ListItemComparer.cs

38 lines
1006 B
C#
Raw Normal View History

2024-04-18 01:44:37 +02:00
using System;
using System.Collections.Generic;
using Wino.Core.Domain.Models.MailItem;
2025-02-16 11:54:23 +01:00
namespace Wino.Core.Domain.Models.Comparers;
public class ListItemComparer : IComparer<object>
2024-04-18 01:44:37 +02:00
{
2025-02-16 11:54:23 +01:00
public bool SortByName { get; set; }
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
public DateComparer DateComparer = new DateComparer();
public readonly NameComparer NameComparer = new NameComparer();
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
public int Compare(object x, object y)
{
if (x is IMailItem xMail && y is IMailItem yMail)
2024-04-18 01:44:37 +02:00
{
2025-02-16 11:54:23 +01:00
var itemComparer = GetItemComparer();
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
return itemComparer.Compare(xMail, yMail);
}
2025-02-16 11:54:23 +01:00
else if (x is DateTime dateX && y is DateTime dateY)
return DateTime.Compare(dateY, dateX);
else if (x is string stringX && y is string stringY)
return stringY.CompareTo(stringX);
2025-02-16 11:35:43 +01:00
2025-02-16 11:54:23 +01:00
return 0;
}
public IComparer<IMailItem> GetItemComparer()
{
if (SortByName)
return NameComparer;
else
return DateComparer;
2024-04-18 01:44:37 +02:00
}
}