public virtual PeriodEventsInfo GetPeriodEvents(int periodId, PeriodEventsInputInfo periodEventsInputModel) { var period = _periodRepository .Get(p => p.Id == periodId, p => p.CompletedEvents.Select(e => e.Clinician.Specialty), p => p.CompletedEvents.Select(e => e.Name)) .FirstOrDefault(); if (period != null) { var completedEvents = period.CompletedEvents .Where( completedEvent => IsCompletedEventMatched(completedEvent, periodEventsInputModel.PeriodEventsFilterInputInfo)) .ToList(); var lastCompletedEvent = completedEvents.LastOrDefault(); IEnumerable <EventMilestone> eventMilestones = null; if (lastCompletedEvent != null && lastCompletedEvent.IsActive) { eventMilestones = _eventMilestoneRepository .Get(eventMilestone => eventMilestone.CompletedEvent.Id == lastCompletedEvent.Id && eventMilestone.IsMandatory, eventMilestone => eventMilestone.Name) .Where(eventMilestone => eventMilestone.BreachDate != null && IsEventMilestoneMatched(eventMilestone, periodEventsInputModel.PeriodEventsFilterInputInfo)); } var periodEventsInfo = GetPeriodEventsInfo(completedEvents, eventMilestones, period.GetType().Name); if (periodEventsInfo != null) { var periodEventsInfoList = periodEventsInfo.ToList(); var orderedEvents = OrderPeriodEventsByProperty(periodEventsInfoList, periodEventsInputModel.ListInputInfo); return(new PeriodEventsInfo { Events = (periodEventsInputModel.ListInputInfo == null || periodEventsInputModel.ListInputInfo.Index == null || periodEventsInputModel.ListInputInfo.PageCount == null) ? orderedEvents : orderedEvents .Skip(((int)periodEventsInputModel.ListInputInfo.Index - 1) * (int)periodEventsInputModel.ListInputInfo.PageCount) .Take((int)periodEventsInputModel.ListInputInfo.PageCount), TotalNumberOfEvents = periodEventsInfoList.Count(), IsBreached = period.GetDaysRemainingAt(_clock.TodayDate) < 0 }); } } return(null); }
public virtual PeriodEventsInfo GetPeriodEvents(RoleData role, int periodId, PeriodEventsInputInfo periodEventsInputModel) { return(_patientApplicationService.GetPeriodEvents(periodId, periodEventsInputModel)); }