private IEnumerable <EventMilestoneInfo> GetFilteredEventMilestones(IEnumerable <EventMilestoneInfo> eventMilestones, EventMilestoneFilterInputInfo eventMilestoneFilterInputInfo) { var eventMilestoneInfos = eventMilestones as IList <EventMilestoneInfo> ?? eventMilestones.ToList(); var filteredEventMilestones = new List <EventMilestoneInfo>(); if ((!string.IsNullOrEmpty(eventMilestoneFilterInputInfo.EventMilestoneDescription)) || (!string.IsNullOrEmpty(eventMilestoneFilterInputInfo.EventForTargetDescription))) { foreach (var eventMilestoneInfo in eventMilestoneInfos) { if (!string.IsNullOrEmpty(eventMilestoneFilterInputInfo.EventMilestoneDescription)) { if (eventMilestoneInfo.EventMilestoneDescription.ToLower().Contains(eventMilestoneFilterInputInfo.EventMilestoneDescription.ToLower())) { filteredEventMilestones.Add(eventMilestoneInfo); } } if (!string.IsNullOrEmpty(eventMilestoneFilterInputInfo.EventForTargetDescription)) { if (eventMilestoneInfo.EventForDateReferenceForTarget != null && eventMilestoneInfo.EventForDateReferenceForTarget.ToLower().Contains(eventMilestoneFilterInputInfo.EventForTargetDescription.ToLower())) { filteredEventMilestones.Add(eventMilestoneInfo); } } } return(filteredEventMilestones); } return(eventMilestoneInfos); }
public IEnumerable <EventMilestoneInfo> GetEventMilestones(ListInputInfo listInputInfo, EventMilestoneFilterInputInfo eventMilestoneFilterInputInfo) { var sourceEvents = _sourceRepository.Get( sourceEvent => string.IsNullOrEmpty(eventMilestoneFilterInputInfo.ParentEventDescription) || sourceEvent.SourceName.Description.Contains(eventMilestoneFilterInputInfo.ParentEventDescription), sourceEvent => sourceEvent.SourceName, sourceEvent => sourceEvent.NextPossibleEvents.Select(d => d.DestinationName), sourceEvent => sourceEvent.NextPossibleEvents.Select(d => d.EventForDateReferenceForTarget)); var eventMilestones = from sourceEvent in sourceEvents let nextPossibleEvents = sourceEvent.NextPossibleEvents from nextEvent in nextPossibleEvents orderby listInputInfo select new EventMilestoneInfo { EventMilestoneId = nextEvent.Id, IsMandatory = nextEvent.IsMandatory, EventMilestoneDescription = nextEvent.DestinationName.Description, ParentEventDescription = sourceEvent.SourceName.Description, TargetNumberOfDays = nextEvent.TargetNumberOfDays, EventForDateReferenceForTarget = nextEvent.EventForDateReferenceForTarget != null ? nextEvent.EventForDateReferenceForTarget.Description : null, ClockType = nextEvent.ClockType }; var filteredEventMilestones = GetFilteredEventMilestones(eventMilestones, eventMilestoneFilterInputInfo); return(GetOrderedEventMilestones(filteredEventMilestones, listInputInfo)); }