Пример #1
0
        /// <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);
        }
Пример #2
0
        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);
        }