protected override async Task ExecuteInternalAsync(CancellationToken stoppingToken) { DelayDto delay = await GetDelayDtoAsync().ConfigureAwait(false); await hubContext.Clients.All.OnDelayChangedAsync(delay).ConfigureAwait(false); long orderCount = await orderCollection.CountDocumentsAsync( FilterDefinition <OrderDocument> .Empty, cancellationToken : stoppingToken).ConfigureAwait(false); await hubContext.Clients.All.OnOrderQueueChangedAsync(orderCount).ConfigureAwait(false); long parcelCount = await parcelCollection.CountDocumentsAsync( FilterDefinition <ParcelDocument> .Empty, cancellationToken : stoppingToken).ConfigureAwait(false); await hubContext.Clients.All.OnParcelQueueChangedAsync(parcelCount).ConfigureAwait(false); IAsyncCursor <StocksDocument> cursor = await stocksCollection.FindAsync(FilterDefinition <StocksDocument> .Empty, cancellationToken : stoppingToken) .ConfigureAwait(false); var stocks = new List <StocksDto>(); while (await cursor.MoveNextAsync(stoppingToken).ConfigureAwait(false)) { stocks.AddRange(cursor.Current.Select(document => new StocksDto { ArticleNo = document.ArticleNo, Quantity = document.Quantity, })); } await hubContext.Clients.All.OnStocksChangedAsync(stocks.ToArray()); }
private async Task <DelayDto> GetDelayDtoAsync() { var dto = new DelayDto { RandomDelays = new List <RandomDelayDto>(), PeriodicDelays = new List <PeriodicDelayDto>() }; await AddRandomDelayAsync(ServiceName.WebOrderGeneration, dto.RandomDelays).ConfigureAwait(false); await AddRandomDelayAsync(ServiceName.CallOrderGeneration, dto.RandomDelays).ConfigureAwait(false); await AddPeriodicDelayAsync(ServiceName.ReleaseOrder, dto.PeriodicDelays).ConfigureAwait(false); await AddPeriodicDelayAsync(ServiceName.Replenishment, dto.PeriodicDelays).ConfigureAwait(false); await AddPeriodicDelayAsync(ServiceName.ParcelDispatch, dto.PeriodicDelays).ConfigureAwait(false); return(dto); }
public async Task <IHttpActionResult> AddDelay(int eventId, [FromBody] DelayDto delay) { try { var userId = User.Identity.GetUserId(); var result = await _userEventService.AddDelayAsync(userId, eventId, delay.AmountOfMinutes); if (result.Item1) { await _notificationsHubContext.Clients.All.NotifyOthersInGroup(result.Item2); } return(Ok()); } catch (ServiceException e) { return(InternalServerError()); } }