Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public async Task<IList<Item>> GetAsync(IList<int> clientIds, int processId, int proc, Kyte kt)
- {
- var clientMaps = await ProcessCassQueries(clientIds, (ct, batch) => mapper.SingleOrDefaultAsync<ItemMapPoco>(itemMapStmt, batch), "GetPIMValue");
- if (clientMaps == null || clientMaps.Count <= 0)
- {
- return null;
- }
- var itemIds = clientMaps.SelectMany(x => x.ItemIds).Where(y => y != null).ToList();
- var itemsTask = ProcessCassQueries(itemIds, (ct, batch) => mapper.SingleOrDefaultAsync<ItemPoco>(itemSelectStmt, batch), "GetAsync");
- var itemProTask = ProcessCassQueries(itemIds, (ct, batch) => mapper.SingleOrDefaultAsync<ItemProPoco>(itemProStmt, batch, processId), "GetIPValue");
- var items = await itemsTask;
- if (items.Count <= 0)
- {
- return null;
- }
- var itmDictionary = items.ToDictionary(dto => dto.ItemId, dto => rpm.MapToItem(dto, proc));
- var itmProDict = itemIds.ToDictionary<int, int, ItemProPoco>(id => id, id => null);
- var holder = new List<int>();
- var itemPrices = await itemProTask;
- itemPrices.ForEach(i => { if (i != null) itmProDict[i.ItemId] = i; });
- foreach (var ip in itmProDict) if (ip.Value == null) holder.Add(ip.Key);
- if (holder.Count > 0)
- {
- var ipHolder = await ProcessCassQueries(itemIds, (ct, batch) => mapper.SingleOrDefaultAsync<ItemProPoco>(itemProStmt, batch, kt.Pid), "GetIPValue");
- ipHolder.ToList().ForEach(ipf => { if (ipf != null) itmProDict[ipf.ItemId] = ipf; });
- }
- return itmDictionary.Select(kvp =>
- {
- itmProDict.TryGetValue(kvp.Key, out var ip);
- if (kvp.Value != null)
- {
- rpm.convert(ip, kvp.Value);
- return kvp.Value;
- }
- return null;
- }).Where(s => s != null).ToList();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement