private Task RefreshExternalServiceDetails() { this.CustomRoles.Clear(); if (ChannelSession.Services.Patreon.IsConnected && this.PatreonUser == null) { IEnumerable <PatreonCampaignMember> campaignMembers = ChannelSession.Services.Patreon.CampaignMembers; PatreonCampaignMember patreonUser = null; if (!string.IsNullOrEmpty(this.Data.PatreonUserID)) { patreonUser = campaignMembers.FirstOrDefault(u => u.UserID.Equals(this.Data.PatreonUserID)); } else { patreonUser = campaignMembers.FirstOrDefault(u => this.Platform.HasFlag(u.User.Platform) && string.Equals(u.User.PlatformUserID, this.PlatformID, StringComparison.InvariantCultureIgnoreCase)); } this.PatreonUser = patreonUser; if (patreonUser != null) { this.Data.PatreonUserID = patreonUser.UserID; } else { this.Data.PatreonUserID = null; } } return(Task.FromResult(0)); }
public Task SetPatreonSubscriber() { if (ChannelSession.Services.Patreon != null) { IEnumerable <PatreonCampaignMember> campaignMembers = ChannelSession.Services.Patreon.CampaignMembers; PatreonCampaignMember patreonUser = null; if (!string.IsNullOrEmpty(this.Data.PatreonUserID)) { patreonUser = campaignMembers.FirstOrDefault(u => u.UserID.Equals(this.Data.PatreonUserID)); } else { patreonUser = campaignMembers.FirstOrDefault(u => u.User.LookupName.Equals(this.UserName, StringComparison.CurrentCultureIgnoreCase)); } this.PatreonUser = patreonUser; if (patreonUser != null) { this.Data.PatreonUserID = patreonUser.UserID; } else { this.Data.PatreonUserID = null; } } return(Task.FromResult(0)); }
private void PatreonUserComboBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { this.user.Data.PatreonUserID = null; if (this.PatreonUserComboBox.SelectedIndex >= 0) { PatreonCampaignMember campaignMember = (PatreonCampaignMember)this.PatreonUserComboBox.SelectedItem; if (campaignMember != null) { this.user.Data.PatreonUserID = campaignMember.UserID; } } }
public async Task <IEnumerable <PatreonCampaignMember> > GetCampaignMembers() { List <PatreonCampaignMember> results = new List <PatreonCampaignMember>(); string next = string.Format("campaigns/{0}/members?include=user,currently_entitled_tiers&fields%5Bmember%5D=patron_status,full_name,will_pay_amount_cents,currently_entitled_amount_cents,lifetime_support_cents&fields%5Buser%5D=created,first_name,full_name,last_name,url,vanity", this.Campaign.ID); try { do { Dictionary <string, PatreonCampaignMember> currentResults = new Dictionary <string, PatreonCampaignMember>(); JObject jobj = await this.GetAsync <JObject>(next); next = null; if (jobj != null && jobj.ContainsKey("data")) { JArray dataArray = (JArray)jobj["data"]; foreach (JObject data in dataArray) { PatreonCampaignMember pledge = new PatreonCampaignMember(); pledge.ID = data["id"].ToString(); if (data.ContainsKey("attributes")) { JObject attributes = (JObject)data["attributes"]; if (attributes.ContainsKey("will_pay_amount_cents")) { pledge.AmountToPay = (int)attributes["will_pay_amount_cents"]; pledge.CurrentAmountPaying = (int)attributes["currently_entitled_amount_cents"]; pledge.LifetimeAmountPaid = (int)attributes["lifetime_support_cents"]; pledge.PatronStatus = attributes["patron_status"].ToString(); } } if (data.ContainsKey("relationships")) { JObject relationships = (JObject)data["relationships"]; if (relationships.ContainsKey("currently_entitled_tiers")) { JObject entitledTiers = (JObject)relationships["currently_entitled_tiers"]; if (entitledTiers.ContainsKey("data")) { JArray entitledTiersData = (JArray)entitledTiers["data"]; if (entitledTiersData.Count > 0) { JObject entitledTierData = (JObject)entitledTiersData.First; pledge.TierID = entitledTierData["id"].ToString(); } } } if (relationships.ContainsKey("user")) { JObject user = (JObject)relationships["user"]; if (user.ContainsKey("data")) { JObject userData = (JObject)user["data"]; pledge.UserID = userData["id"].ToString(); } } } if (!string.IsNullOrEmpty(pledge.ID) && !string.IsNullOrEmpty(pledge.UserID)) { if (string.IsNullOrEmpty(pledge.TierID) && pledge.CurrentAmountPaying > 0) { PatreonTier tier = this.Campaign.ActiveTiers.OrderByDescending(t => t.AmountCents).FirstOrDefault(t => pledge.CurrentAmountPaying >= t.AmountCents); if (tier != null) { pledge.TierID = tier.ID; } } if (!string.IsNullOrEmpty(pledge.TierID)) { currentResults[pledge.UserID] = pledge; } } } if (jobj.ContainsKey("included")) { JArray includedArray = (JArray)jobj["included"]; foreach (JObject included in includedArray) { if (included.ContainsKey("type") && included["type"].ToString().Equals("user") && included.ContainsKey("attributes")) { JObject attributes = (JObject)included["attributes"]; PatreonUser user = attributes.ToObject <PatreonUser>(); user.ID = included["id"].ToString(); if (currentResults.ContainsKey(user.ID)) { currentResults[user.ID].User = user; results.Add(currentResults[user.ID]); } } } } if (jobj.ContainsKey("links")) { JObject links = (JObject)jobj["links"]; if (links.ContainsKey("next") && links["next"] != null) { next = links["next"].ToString(); } } } } while (!string.IsNullOrEmpty(next)); } catch (Exception ex) { MixItUp.Base.Util.Logger.Log(ex); return(null); } return(results); }