/// <summary> /// /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <IEnumerable <AxisItemDto> > GetItems(AxisItemSearchDto input) { var line = _axisRepository.Get(input.AxisId); if (!_authorityManager.HasAuthority(AbpSession.GetUserId(), line, AuthorityType.View)) { Throw403Error(); } var filter = Mapper.Map <TimeAxisFilter>(input); var user = await GetCurrentUserAsync(); var entity = _filterRepository.GetAll() .Where(x => x.User.Id == user.Id && x.TimeAxis.Id == input.AxisId) .FirstOrDefault(); if (filter.HasAnyFilters()) { if (entity == null) { entity = new TimeAxisFilter(); } Mapper.Map(filter, entity); _filterRepository.InsertOrUpdate(entity); } var data = _timeAxisManager.FilterTimeAxisItems(line, entity); data = line.Order(data); var result = Mapper.Map <IEnumerable <AxisItemDto> >(data); return(result); }
public IEnumerable <TimeAxisItem> FilterTimeAxisItems(TimeAxis line, TimeAxisFilter filter) { if (filter == null || !filter.HasAnyFilters()) { return(new List <TimeAxisItem>()); } var items = line.GetItems(); if (filter.MaxDate != null) { items = items.Where(x => x.EndTime <= filter.MaxDate); } if (filter.MinDate != null) { items = items.Where(x => x.StartTime >= filter.MinDate); } if (filter.MaxPage != null) { items = items.Where(x => x.MaxPage <= filter.MaxPage); } if (filter.MinPage != null) { items = items.Where(x => x.MinPage >= filter.MinPage); } return(items); }