Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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());
            }
        }