private static DateTime?GetApplicationHistoryEventDate(int applicationId, ApplicationStatusTypeIds applicationHistoryEventSubTypeId, IDictionary <int, List <ApplicationHistorySummary> > sourceApplicationHistorySummaries)
        {
            if (sourceApplicationHistorySummaries.ContainsKey(applicationId))
            {
                var applicationHistorySummaries = sourceApplicationHistorySummaries[applicationId].OrderByDescending(ahs => ahs.ApplicationHistoryEventDate);
                var applicationHistoryEventDate = applicationHistorySummaries.FirstOrDefault(ahs => ahs.ApplicationHistoryEventSubTypeId == (int)applicationHistoryEventSubTypeId)?.ApplicationHistoryEventDate;
                return(applicationHistoryEventDate);
            }

            return(null);
        }
        private static int GetApplicationHistoryId(int applicationId, ApplicationStatusTypeIds applicationHistoryEventSubTypeId, IDictionary <int, Dictionary <int, int> > applicationHistoryIds)
        {
            var applicationHistoryId = 0;

            if (applicationHistoryIds.ContainsKey(applicationId))
            {
                var ids = applicationHistoryIds[applicationId];
                if (ids.ContainsKey((int)applicationHistoryEventSubTypeId))
                {
                    applicationHistoryId = ids[(int)applicationHistoryEventSubTypeId];
                }
            }

            return(applicationHistoryId);
        }
        private static ApplicationHistory GetApplicationHistory(int applicationId, DateTime applicationHistoryEventDate, ApplicationStatusTypeIds applicationHistoryEventSubTypeId, IDictionary <int, Dictionary <int, int> > applicationHistoryIds, IDictionary <int, List <ApplicationHistorySummary> > sourceApplicationHistorySummaries)
        {
            var applicationHistoryId = GetApplicationHistoryId(applicationId, applicationHistoryEventSubTypeId, applicationHistoryIds);

            applicationHistoryEventDate = GetApplicationHistoryEventDate(applicationId, applicationHistoryEventSubTypeId, sourceApplicationHistorySummaries) ?? applicationHistoryEventDate;

            return(new ApplicationHistory
            {
                ApplicationHistoryId = applicationHistoryId,
                ApplicationId = applicationId,
                UserName = "",
                ApplicationHistoryEventDate = applicationHistoryEventDate,
                ApplicationHistoryEventTypeId = 1,
                ApplicationHistoryEventSubTypeId = (int)applicationHistoryEventSubTypeId,
                Comment = "Status Change"
            });
        }