@@ -3,29 +3,30 @@ using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
|
||||
namespace Wino.Core.Domain.Models.Comparers;
|
||||
|
||||
public class DateComparer : IComparer<IMailItem>, IEqualityComparer
|
||||
namespace Wino.Core.Domain.Models.Comparers
|
||||
{
|
||||
public int Compare(IMailItem x, IMailItem y)
|
||||
public class DateComparer : IComparer<IMailItem>, IEqualityComparer
|
||||
{
|
||||
return DateTime.Compare(y.CreationDate, x.CreationDate);
|
||||
}
|
||||
|
||||
public new bool Equals(object x, object y)
|
||||
{
|
||||
if (x is IMailItem firstItem && y is IMailItem secondItem)
|
||||
public int Compare(IMailItem x, IMailItem y)
|
||||
{
|
||||
return firstItem.Equals(secondItem);
|
||||
return DateTime.Compare(y.CreationDate, x.CreationDate);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
public new bool Equals(object x, object y)
|
||||
{
|
||||
if (x is IMailItem firstItem && y is IMailItem secondItem)
|
||||
{
|
||||
return firstItem.Equals(secondItem);
|
||||
}
|
||||
|
||||
public int GetHashCode(object obj) => (obj as IMailItem).GetHashCode();
|
||||
return false;
|
||||
}
|
||||
|
||||
public DateComparer()
|
||||
{
|
||||
public int GetHashCode(object obj) => (obj as IMailItem).GetHashCode();
|
||||
|
||||
public DateComparer()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Wino.Core.Domain.Models.Comparers;
|
||||
|
||||
/// <summary>
|
||||
/// Used to insert date grouping into proper place in Reader page.
|
||||
/// </summary>
|
||||
public class DateTimeComparer : IComparer<DateTime>
|
||||
namespace Wino.Core.Domain.Models.Comparers
|
||||
{
|
||||
public int Compare(DateTime x, DateTime y)
|
||||
/// <summary>
|
||||
/// Used to insert date grouping into proper place in Reader page.
|
||||
/// </summary>
|
||||
public class DateTimeComparer : IComparer<DateTime>
|
||||
{
|
||||
return DateTime.Compare(y, x);
|
||||
public int Compare(DateTime x, DateTime y)
|
||||
{
|
||||
return DateTime.Compare(y, x);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
using System.Collections.Generic;
|
||||
using Wino.Core.Domain.Entities.Mail;
|
||||
|
||||
namespace Wino.Core.Domain.Models.Comparers;
|
||||
|
||||
public class FolderNameComparer : IComparer<MailItemFolder>
|
||||
namespace Wino.Core.Domain.Models.Comparers
|
||||
{
|
||||
public int Compare(MailItemFolder x, MailItemFolder y)
|
||||
public class FolderNameComparer : IComparer<MailItemFolder>
|
||||
{
|
||||
return x.FolderName.CompareTo(y.FolderName);
|
||||
public int Compare(MailItemFolder x, MailItemFolder y)
|
||||
{
|
||||
return x.FolderName.CompareTo(y.FolderName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,36 +2,37 @@
|
||||
using System.Collections.Generic;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
|
||||
namespace Wino.Core.Domain.Models.Comparers;
|
||||
|
||||
public class ListItemComparer : IComparer<object>
|
||||
namespace Wino.Core.Domain.Models.Comparers
|
||||
{
|
||||
public bool SortByName { get; set; }
|
||||
|
||||
public DateComparer DateComparer = new DateComparer();
|
||||
public readonly NameComparer NameComparer = new NameComparer();
|
||||
|
||||
public int Compare(object x, object y)
|
||||
public class ListItemComparer : IComparer<object>
|
||||
{
|
||||
if (x is IMailItem xMail && y is IMailItem yMail)
|
||||
public bool SortByName { get; set; }
|
||||
|
||||
public DateComparer DateComparer = new DateComparer();
|
||||
public readonly NameComparer NameComparer = new NameComparer();
|
||||
|
||||
public int Compare(object x, object y)
|
||||
{
|
||||
var itemComparer = GetItemComparer();
|
||||
if (x is IMailItem xMail && y is IMailItem yMail)
|
||||
{
|
||||
var itemComparer = GetItemComparer();
|
||||
|
||||
return itemComparer.Compare(xMail, yMail);
|
||||
return itemComparer.Compare(xMail, yMail);
|
||||
}
|
||||
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);
|
||||
|
||||
return 0;
|
||||
}
|
||||
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);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public IComparer<IMailItem> GetItemComparer()
|
||||
{
|
||||
if (SortByName)
|
||||
return NameComparer;
|
||||
else
|
||||
return DateComparer;
|
||||
public IComparer<IMailItem> GetItemComparer()
|
||||
{
|
||||
if (SortByName)
|
||||
return NameComparer;
|
||||
else
|
||||
return DateComparer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
using System.Collections.Generic;
|
||||
using Wino.Core.Domain.Models.MailItem;
|
||||
|
||||
namespace Wino.Core.Domain.Models.Comparers;
|
||||
|
||||
public class NameComparer : IComparer<IMailItem>
|
||||
namespace Wino.Core.Domain.Models.Comparers
|
||||
{
|
||||
public int Compare(IMailItem x, IMailItem y)
|
||||
public class NameComparer : IComparer<IMailItem>
|
||||
{
|
||||
return string.Compare(x.FromName, y.FromName);
|
||||
public int Compare(IMailItem x, IMailItem y)
|
||||
{
|
||||
return string.Compare(x.FromName, y.FromName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user