Ejemplo n.º 1
0
        public async Task <PartialCollectionResponse <AllotmentEventResponse> > GetAsync([FromQuery] QueryAllotmentEventsRequest request)
        {
            var filterStatuses = request.AllotmentEventStatuses ?? new AllotmentEventStatus[0];
            var query          = new AllotmentEventsQuery(filterStatuses, new long[0], request.Offset, request.Count);
            var result         = await _allotmentEventService.QueryAsync(query);

            return(result.ToPartialCollectionResponse(x => AllotmentEventResponse.Create(x, _clock.UtcNow)));
        }
Ejemplo n.º 2
0
        public Task <PagingCollection <AllotmentEvent> > QueryAsync(AllotmentEventsQuery query, DateTimeOffset now)
        {
            var queryable = Entities()
                            .Where(e => (query.AllotmentEventStatuses.Count == 0 ||
                                         query.AllotmentEventStatuses.Contains(e.Status) && !(e.Status == AllotmentEventStatus.InProgress && e.FinishDate <= now) ||
                                         query.AllotmentEventStatuses.Contains(AllotmentEventStatus.Finished) && e.Status == AllotmentEventStatus.InProgress && e.FinishDate <= now) &&
                                   (query.Ids.Count == 0 || query.Ids.Contains(e.Id)))
                            .OrderByDescending(i => i.CreatedDate);

            return(queryable.GetPageAsync(query.Offset, query.Count));
        }
Ejemplo n.º 3
0
        public async Task <PagingCollection <AllotmentEvent> > QueryAsync(AllotmentEventsQuery query)
        {
            var events = await _allotmentEventRepository.QueryAsync(query, _clock.UtcNow);

            var eventsWithEventAddresses = events.Where(i => i.EventContractAddress != null && i.TokenContractAddress != null).ToArray();
            var balances = await _erc223ContractClient.GetTokensBalancesAsync(eventsWithEventAddresses.Select(i => new TokenHolder(i.TokenContractAddress, i.EventContractAddress)).ToArray());

            foreach (var allotmentEvent in events)
            {
                if (allotmentEvent.GetActualStatus(_clock.UtcNow) != AllotmentEventStatus.Finished)
                {
                    var balance = balances.FirstOrDefault(i => i.TokenHolder.HolderAddress == allotmentEvent.EventContractAddress && i.TokenHolder.TokenAddress == allotmentEvent.TokenContractAddress);
                    allotmentEvent.TotalTokensToDistribute = balance?.Balance.ToString();
                }
            }

            return(events);
        }