コード例 #1
0
        public async Task <LogItemPaging> GetLogsAsync(LogItemPaging filter)
        {
            var search = filter.Search.SplitBySpaces();

            var startDate = filter.StartDate?.ToUniversalTime();
            var endDate   = filter.EndDate?.ToUniversalTime();

            var where = new List <Expression <Func <LogItem, bool> > >();
            where.AddIfTrue(startDate.HasValue, x => startDate <= x.DateCreated);
            where.AddIfTrue(endDate.HasValue, x => x.DateCreated <= endDate);
            where.AddIfTrue(filter.LogType.HasValue, x => filter.LogType == x.LogType);
            where.AddIfTrue(search.Any(), x => search.All(s => x.Action.Contains(s)));

            foreach (var filterAdditionalInfoLogItem in filter.AdditionalInfoLogItems)
            {
                switch (filterAdditionalInfoLogItem.Type)
                {
                case AdditionalInfoLogItemFilterType.Contains:
                    where.Add(x => x.AdditionalInfoLogItems.FirstOrDefault(i => i.Name == filterAdditionalInfoLogItem.Name).Value.Contains(filterAdditionalInfoLogItem.Value));
                    break;

                case AdditionalInfoLogItemFilterType.Equal:
                    where.Add(x => x.AdditionalInfoLogItems.FirstOrDefault(i => i.Name == filterAdditionalInfoLogItem.Name).Value == filterAdditionalInfoLogItem.Value);
                    break;

                case AdditionalInfoLogItemFilterType.StartWith:
                    where.Add(x => x.AdditionalInfoLogItems.FirstOrDefault(i => i.Name == filterAdditionalInfoLogItem.Name).Value.StartsWith(filterAdditionalInfoLogItem.Value));
                    break;

                case AdditionalInfoLogItemFilterType.EndWith:
                    where.Add(x => x.AdditionalInfoLogItems.FirstOrDefault(i => i.Name == filterAdditionalInfoLogItem.Name).Value.EndsWith(filterAdditionalInfoLogItem.Value));
                    break;
                }
            }

            Action <IMapperConfigurationExpression> configurationProvider = config => { config.CreateMap <LogItem, LogItemDto>(); };
            Expression <Func <LogItem, bool> >      checkPermission       = item => item.AppName == _options.AppName;

            var request = GetPage(filter, checkPermission, where, configurationProvider);

            await filter.SetResult(request);

            return(filter);
        }
コード例 #2
0
 public Task <LogItemPaging> GetLogsAsync(LogItemPaging filter)
 {
     return(_logRepository.GetLogsAsync(filter));
 }