Beispiel #1
0
        public static TViewModel ToViewModel <TViewModel, THeader, TVersion>(this IHeaderEntity <TVersion> header, DateTime viewDate)
            where THeader : IHeaderEntity <TVersion>
            where TVersion : IApprovableEntity
            where TViewModel : IApprovableViewModel <THeader, TVersion>, new()
        {
            var version = header.GetApprovedVersion <TVersion>(viewDate);

            return(version != null?version.ToViewModel <TViewModel, THeader, TVersion>(viewDate) : default(TViewModel));
        }
Beispiel #2
0
        public static void NormaliseVersionEffectiveDates <TVersion>(this IHeaderEntity <TVersion> header, DateTime?latestEffectiveToDate = null)
            where TVersion : IApprovableEntity
        {
            var versions = header.GetApprovedVersions <TVersion>();

            DateTime?previousEffectiveFrom = null;

            foreach (var item in versions.OrderByDescending(v => v.EffectiveFrom))
            {
                if (previousEffectiveFrom != null)
                {
                    item.EffectiveTo = ((DateTime)previousEffectiveFrom).AddSeconds(-1);
                }

                previousEffectiveFrom = item.EffectiveFrom;
            }

            if (latestEffectiveToDate != null)
            {
                versions.OrderByDescending(v => v.EffectiveFrom).First().EffectiveTo = (DateTime)latestEffectiveToDate;
            }
        }
Beispiel #3
0
 public static IEnumerable <TVersion> GetApprovedVersions <TVersion>(this IHeaderEntity <TVersion> header)
     where TVersion : IApprovableEntity
 {
     return(header.Versions.Where(h => h.IsActive));
 }
Beispiel #4
0
 public static TVersion GetApprovedVersion <TVersion>(this IHeaderEntity <TVersion> header, DateTime viewDate)
     where TVersion : IApprovableEntity
 {
     return(header.GetApprovedVersions <TVersion>().SingleOrDefault(h => h.EffectiveFrom <= viewDate && h.EffectiveTo >= viewDate));
 }