using AsbCloudApp.Data;
using AsbCloudApp.Data.ProcessMaps;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AsbCloudApp.Extensions
{
    /// <summary>
    /// Расширения для поиска в истории
    /// </summary>
    public static class ChangeLogExtensions
    {
        /// <summary>
        /// Действительные на момент времени значения
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="items"></param>
        /// <param name="moment"></param>
        /// <returns></returns>
        public static IEnumerable<ChangeLogDto<T>> WhereActualAtMoment<T>(this IEnumerable<ChangeLogDto<T>> items, DateTimeOffset moment)
            where T : IId
        {
            var actualItems = items
                .Where(item => item.Creation <= moment)
                .Where(item => item.Obsolete is null || item.Obsolete >= moment);

            return actualItems;
        }
    }
}