private async Task <Log> LoadGiveawaysAsync(Blacklist blackList) { var task = new TaskCompletionSource <Log>(); await Task.Run(() => { var content = string.Empty; Giveaways?.Clear(); WishlistGiveaways?.Clear(); if (WishList) { content += LoadGiveawaysByUrl( $"{Links.SteamGiftsSearch}?type=wishlist", strings.ParseLoadGiveaways_WishListGiveAwaysIn, WishlistGiveaways); } if (Group) { content += LoadGiveawaysByUrl( $"{Links.SteamGiftsSearch}?type=group", strings.ParseLoadGiveaways_GroupGiveAwaysIn, Giveaways); } if (Regular) { content += LoadGiveawaysByUrl( $"{Links.SteamGiftsSearch}", strings.ParseLoadGiveaways_RegularGiveawaysIn, Giveaways); } if (Giveaways?.Count == 0 && WishlistGiveaways?.Count == 0) { task.SetResult(Messages.ParseGiveawaysEmpty(content, "SteamGifts")); } else { blackList.RemoveGames(Giveaways); blackList.RemoveGames(WishlistGiveaways); task.SetResult(Messages.ParseGiveawaysFoundMatchGiveaways(content, "SteamGifts", (Giveaways?.Count + WishlistGiveaways?.Count).ToString())); } }); return(task.Task.Result); }
public async Task Join(Blacklist blacklist, bool sort, bool sortToMore, bool wishlistNotSort) { LogMessage.Instance.AddMessage(await LoadGiveawaysAsync(blacklist)); if (Giveaways?.Count > 0) { if (sort) { if (sortToMore) { Giveaways.Sort((a, b) => b.Price.CompareTo(a.Price)); } else { Giveaways.Sort((a, b) => a.Price.CompareTo(b.Price)); } } if (SortToLessLevel) { Giveaways.Sort((a, b) => b.Level.CompareTo(a.Level)); } else if (SortToMoreCopies) { Giveaways.Sort((a, b) => a.Copies.CompareTo(b.Copies)); } foreach (var giveaway in Giveaways) { if (giveaway.Price <= Points && PointsReserv <= Points - giveaway.Price) { LogMessage.Instance.AddMessage(await JoinGiveaway(giveaway)); } } } if (WishlistGiveaways?.Count > 0) { if (sort) { if (sortToMore) { if (!wishlistNotSort) { WishlistGiveaways.Sort((a, b) => b.Price.CompareTo(a.Price)); } } else { if (!wishlistNotSort) { WishlistGiveaways.Sort((a, b) => a.Price.CompareTo(b.Price)); } } } if (SortToLessLevel) { if (!wishlistNotSort) { WishlistGiveaways.Sort((a, b) => b.Level.CompareTo(a.Level)); } } foreach (var giveaway in WishlistGiveaways) { if (giveaway.Price <= Points && PointsReserv <= Points - giveaway.Price) { LogMessage.Instance.AddMessage(await JoinGiveaway(giveaway)); } } } }