using AsbCloudApp.Data;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;

namespace AsbCloudApp.Comparators
{
    /// <summary>
    /// Компаратор для сравнения сущностей по ID
    /// </summary>
    public class ComparerIId : IComparer<IId>, IEqualityComparer<IId>
    {
        private static readonly ComparerIId instance = new ComparerIId();
        private ComparerIId() { }

        /// <summary>
        /// Singleton ссылка
        /// </summary>
        /// <returns></returns>
        public static ComparerIId GetInstance() => instance;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public int Compare(IId x, IId y) =>
            x.Id.CompareTo(y.Id);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public bool Equals(IId x, IId y) =>
            x.Id == y.Id;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public int GetHashCode([DisallowNull] IId obj) =>
            obj.GetHashCode();

    }
}