public async Task <TradeOfferResponse> CreateTradeOffer(CreateTradeOfferRequest tradeOffer, long userId)
        {
            var tradeOfferToCreate = _mapper.Map <TradeOffer>(tradeOffer);

            tradeOfferToCreate.PosterId = userId;

            //if (tradeOffer.OfferedItemId == null)
            //{
            //    var itemToCreate = _mapper.Map<Item>(tradeOffer.OfferedItem);
            //    await _itemRepository.AddAsync(itemToCreate);
            //    tradeOfferToCreate.OfferedItemId = itemToCreate.Id;
            //}

            await _tradeOfferRepository.AddAsync(tradeOfferToCreate);

            var stats     = new List <ItemStatTradeOffer>();
            var itemStats = new List <ItemItemStat>();

            foreach (var stat in tradeOffer.OfferedItem.Stats)
            {
                stats.Add(new ItemStatTradeOffer {
                    ItemStatId   = stat.Id,
                    TradeOfferId = tradeOfferToCreate.Id,
                    Value        = stat.Value
                });
                itemStats.Add(new ItemItemStat
                {
                    ItemStatId = stat.Id,
                    ItemId     = (long)tradeOfferToCreate.OfferedItemId
                });
            }
            await _itemItemStatRepository.AddMultipleAsync(itemStats);

            await _itemStatTradeOfferRepository.AddMultipleAsync(stats);

            await _tradeOfferRepository.UpdateAsync(tradeOfferToCreate.Id, tradeOfferToCreate);

            return(_mapper.Map <TradeOfferResponse>(tradeOffer));
        }
        public async Task <IActionResult> CreateTradeOffer(CreateTradeOfferRequest tradeOffer)
        {
            await _tradeOfferService.CreateTradeOffer(tradeOffer, User.GetId());

            return(Ok(tradeOffer));
        }