Example #1
0
        private static Dictionary <string, List <Item> > CreateOfferWithBotAndItems(SendRakeItemsModel sendRakeItemsModel)
        {
            var uniqueBotLocations = sendRakeItemsModel.Items.Select(i => i.InBotSteamId).Distinct().ToList();
            var dict = new Dictionary <string, List <Item> >();

            foreach (var botSteamId in uniqueBotLocations)
            {
                dict.Add(botSteamId, new List <Item>());

                foreach (var item in sendRakeItemsModel.Items)
                {
                    if (botSteamId != item.InBotSteamId)
                    {
                        continue;
                    }
                    dict[botSteamId].Add(new Item
                    {
                        Amount    = 1,
                        AppId     = item.AppId,
                        AssetId   = item.AssetId,
                        ContextId = item.ContextId
                    });
                }
            }

            return(dict);
        }
Example #2
0
        public async Task <IActionResult> SendRakeItemToBot([FromBody] SendRakeItemsModel sendRakeItemsModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(sendRakeItemsModel));
            }

            var dict = CreateOfferWithBotAndItems(sendRakeItemsModel);

            var botLoginDetails = await _steamService.GetBotLoginInfo(new GetBotLoginInfoRequest { Bot = new Bot {
                                                                                                       BotType = botType.Opskins
                                                                                                   } });

            if (botLoginDetails.DataCase == GetBotLoginInfoResponse.DataOneofCase.Error)
            {
                return new ObjectResult($"Botlogin request returned error: {botLoginDetails.Error.Message}")
                       {
                           StatusCode = 502
                       }
            }
            ;

            var opskinBot = botLoginDetails.BotInfo;

            var listRespoinse    = new List <MakeOfferResponse>();
            var makeOfferRequset = new List <MakeOfferRequest>();

            foreach (var kvp in dict)
            {
                var bot = await _repoServiceFactory.BotRepoService.FindAsync(kvp.Key);

                makeOfferRequset.Add(new MakeOfferRequest
                {
                    User = new User
                    {
                        SteamId   = opskinBot.Bot.SteamId,
                        TradeLink = opskinBot.TradeLink,
                    },
                    BotName   = bot.Name,
                    SendItems = true,
                    Message   = "sendSellRakeOffer",
                    Items     = { kvp.Value }
                });
            }

            foreach (var offerRequest in makeOfferRequset)
            {
                MakeOfferResponse res;
                try
                {
                    res = await _steamService.MakeOfferAsync(offerRequest);
                }
                catch (Exception e)
                {
                    e.Data.Add("MakeOfferRequest", offerRequest);
                    throw;
                }

                listRespoinse.Add(res);
            }

            return(Ok(listRespoinse));
        }