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