Example #1
0
        public async Task <PaginatedResponse <RfqWithPauseSummary> > GetAsync(RfqFilter filter, int skip, int take)
        {
            var taken = new List <RfqWithPauseSummary>();
            PaginatedResponse <OperationExecutionInfoWithPause <SpecialLiquidationOperationData> > currentBatch;
            int totalFetched = 0;

            do
            {
                currentBatch = await _operationExecutionInfoRepository.GetRfqAsync(
                    skip + totalFetched,
                    take - taken.Count,
                    filter?.OperationId,
                    filter?.InstrumentId,
                    filter?.AccountId,
                    filter?.MapStates(),
                    filter?.DateFrom,
                    filter?.DateTo);

                totalFetched += currentBatch.Size;

                var currentBatchFilteredWithPause = currentBatch
                                                    .Contents
                                                    .Select(o => o.ToRfqWithPauseSummary())
                                                    .Where(filter.GetApplyPauseFilterFunc());

                taken.AddRange(currentBatchFilteredWithPause);
            } while (taken.Count < take && currentBatch.Size > 0);

            return(new PaginatedResponse <RfqWithPauseSummary>(taken, skip, taken.Count, currentBatch.TotalSize));
        }
Example #2
0
        public static Func <RfqWithPauseSummary, bool> GetApplyPauseFilterFunc(this RfqFilter filter)
        {
            return(o =>
            {
                if (filter == null)
                {
                    return true;
                }

                if (!filter.CanBePaused.HasValue &&
                    !filter.CanBeResumed.HasValue &&
                    !filter.CanBeStopped.HasValue
                    )
                {
                    return true;
                }

                return (filter.CanBePaused.HasValue && o.PauseSummary.CanBePaused == filter.CanBePaused) ||
                (filter.CanBeResumed.HasValue && o.PauseSummary.CanBeResumed == filter.CanBeResumed) ||
                (filter.CanBeStopped.HasValue && o.PauseSummary.CanBeStopped == filter.CanBeStopped);
            });
        }
Example #3
0
 public static List <SpecialLiquidationOperationState> MapStates(this RfqFilter filter) =>
 filter?
 .States?
 .Select(x => (SpecialLiquidationOperationState)x)
 .ToList();