protected override async Task <GetOrderDto> ExecuteAsync(AddOrderToGameCommand request, CancellationToken ct)
        {
            OrderGameDto orderDto = _mapper.Map <OrderGameDto>(request);
            var          result   = await _orderService.AddOrderGameAsync(orderDto, ct);

            await _cacheManager.ClearAccountOrderCacheAsync(request.AccountId);

            return(result);
        }
Exemple #2
0
        private void ValidateRemovingGameFromOrder(OrderGameDto orderGame, OrderBase currentOrder)
        {
            bool isRemoved = currentOrder.RemoveGame(orderGame.GameId);

            if (!isRemoved)
            {
                _logger.LogInformation(
                    "Current order doesn't have game - {OrderId}, {GameId}",
                    currentOrder.Id,
                    orderGame.AccountId);
                throw new AccountDoesNotHaveGameException();
            }
        }
Exemple #3
0
        public async Task <GetOrderDto> DeleteOrderGameAsync(OrderGameDto orderGame, CancellationToken ct = default)
        {
            _logger.LogInformation(
                "Remove game from active order for user, {AccountId}, {GameId}",
                orderGame.AccountId,
                orderGame.GameId);

            OrderBase currentOrder = await GetCurrentOrderAsync(orderGame.AccountId, ct);

            ValidateRemovingGameFromOrder(orderGame, currentOrder);

            _unitOfWork.OrderRepository.Update(currentOrder);
            await _unitOfWork.SaveAsync(ct);

            return(_mapper.Map <GetOrderDto>(currentOrder));
        }
Exemple #4
0
        public async Task <GetOrderDto> AddOrderGameAsync(OrderGameDto orderGame, CancellationToken ct = default)
        {
            _logger.LogInformation(
                "Add game to active order for user, {AccountId}, {GameId}",
                orderGame.AccountId,
                orderGame.GameId);

            OrderBase currentOrder = await GetCurrentOrderAsync(orderGame.AccountId, ct);

            await ValidateAddingGameToOrderAsync(currentOrder, orderGame.GameId, ct);

            currentOrder.AddGame(orderGame.GameId);

            _unitOfWork.OrderRepository.Update(currentOrder);
            await _unitOfWork.SaveAsync(ct);

            currentOrder = await GetCurrentOrderAsync(orderGame.AccountId, ct);

            return(_mapper.Map <GetOrderDto>(currentOrder));
        }