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); }
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(); } }
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)); }
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)); }