public async Task <IList <WorkOrder> > ListAsync(string filter, int?skip, int?limit)
        {
            var filterDefinition = _odataProvider.GetFilterPredicate(filter);

            IFindFluent <WorkOrderClass, WorkOrderClass> fluent = null;

            if (filterDefinition == null)
            {
                var filterEmpty = Builders <WorkOrderClass> .Filter.Empty;
                fluent = _collection.Find(filterEmpty);
            }
            else
            {
                fluent = _collection.Find(filterDefinition);
            }

            fluent = fluent.Skip(skip).Limit(limit);

            var workOrderClasses = await fluent.ToListAsync();

            var result = new List <WorkOrder>();

            foreach (var workOrderClass in workOrderClasses)
            {
                var workOrder = _modelConverter.ToDomain(workOrderClass);
                result.Add(workOrder);
            }

            return(result);
        }
Example #2
0
        public async Task <Result> Handle(ListQuery query, CancellationToken cancellationToken)
        {
            Result result;

            try
            {
                Expression <Func <User, bool> > filter = _odataProvider.GetFilterPredicate(query.Filter);
                int?skip        = query.Skip.ToNullableInt();
                int?limit       = query.Top.ToNullableInt();
                var userDomains = await _userFinder.List(filter, skip, limit);

                var userModels = _mapper.Map <IEnumerable <UserModel> >(userDomains);
                var count      = userModels.Count();
                var usersModel = new UsersModel {
                    Value = userModels, Count = count, NextLink = null
                };

                result = Result.Ok(usersModel);
            }
            catch (FilterODataException)
            {
                result = Result.Fail(new System.Collections.Generic.List <Failure>()
                {
                    new HandlerFault()
                    {
                        Code    = HandlerFaultCode.InvalidQueryFilter.Name,
                        Message = HandlerFailures.InvalidQueryFilter,
                        Target  = "$filter"
                    }
                }
                                     );
            }
            catch
            {
                result = Result.Fail(CustomFailures.ListUserFailure);
            }



            return(result);
        }