public static async Task<ObservableCollection<MemberItemTrackingStatus>> getTrackingItemStatus(long trackingitemid) { ObservableCollection<MemberItemTrackingStatus> ritemstatuscollection = new ObservableCollection<MemberItemTrackingStatus>(); methodLibrary mlb = new methodLibrary(); string userclass = await mlb.readSerializedUserClass(); RootObjectUsers rusers = new RootObjectUsers(); rusers = Users.usersDataDeserializer(userclass); Library_APICall apiLibrary = new Library_APICall(); string resp = await apiLibrary.apiCall((string)ApplicationData.Current.LocalSettings.Values["Tokens"], "https://api.teamsnap.com/v3/tracked_item_statuses/search?tracked_item_id=" + trackingitemid); RootObjectTrackingItemStatus ritemstatus = trackingStatusDataDeserializer(resp); Dictionary<string, int> rstatus_items_data_ht = new Dictionary<string, int>(); for (int i = 0; i < ritemstatus.collection.items[0].data.Count; i++) { if (!rstatus_items_data_ht.ContainsKey(ritemstatus.collection.items[0].data[i].name)) { rstatus_items_data_ht.Add(ritemstatus.collection.items[0].data[i].name, i); } } ritemstatuscollection.Clear(); for (int i = 0; i < ritemstatus.collection.items.Count; i++) { MemberItemTrackingStatus robj = new MemberItemTrackingStatus(); robj.object_id = ritemstatus.collection.items[i].data[(int)rstatus_items_data_ht["id"]].value == null ? 0 : (long)ritemstatus.collection.items[i].data[(int)rstatus_items_data_ht["id"]].value; robj.trackingitemid = ritemstatus.collection.items[i].data[(int)rstatus_items_data_ht["tracked_item_id"]].value == null ? 0 : (long)ritemstatus.collection.items[i].data[(int)rstatus_items_data_ht["tracked_item_id"]].value; robj.status = ritemstatus.collection.items[i].data[(int)rstatus_items_data_ht["status"]].value == null ? "" : (string)ritemstatus.collection.items[i].data[(int)rstatus_items_data_ht["status"]].value; robj.member_id = ritemstatus.collection.items[i].data[(int)rstatus_items_data_ht["member_id"]].value == null ? 0 : (long)ritemstatus.collection.items[i].data[(int)rstatus_items_data_ht["member_id"]].value; robj.status_code = ritemstatus.collection.items[i].data[(int)rstatus_items_data_ht["status_code"]].value == null ? 0 : (long)ritemstatus.collection.items[i].data[(int)rstatus_items_data_ht["status_code"]].value; CollectionUsersTeamMembers rmember = new CollectionUsersTeamMembers(); rmember = mlb.getMemberInfoFromFile(rusers, robj.member_id); robj.member_name = rmember.fullname; ritemstatuscollection.Add(robj); } return ritemstatuscollection; }
public static async Task<ObservableCollection<Comments>> createCollection(string response) { methodLibrary mlb = new methodLibrary(); string userclass = await mlb.readSerializedUserClass(); RootObjectUsers rusers = Users.usersDataDeserializer(userclass); ObservableCollection<Comments> rphotocomments = new ObservableCollection<Comments>(); try { RootObjectMediaComments rmediacom = mediaCommentsDataDeserializer(response); if (rmediacom.collection.items != null) { Dictionary<string, int> rmediacom_itemdata_ht = new Dictionary<string, int>(); for (int i = 0; i < rmediacom.collection.items[0].data.Count; i++) { if (!rmediacom_itemdata_ht.ContainsKey(rmediacom.collection.items[0].data[i].name)) { rmediacom_itemdata_ht.Add(rmediacom.collection.items[0].data[i].name, i); } } for (int i = 0; i < rmediacom.collection.items.Count; i++) { Comments cm = new Comments(); CollectionUsersTeamMembers rmembers = new CollectionUsersTeamMembers(); cm.comment = (string)rmediacom.collection.items[i].data[(int)rmediacom_itemdata_ht["comment"]].value; cm.memberid = rmediacom.collection.items[i].data[(int)rmediacom_itemdata_ht["member_id"]].value == null ? 0 : (long)rmediacom.collection.items[i].data[(int)rmediacom_itemdata_ht["member_id"]].value; cm.mediaid = rmediacom.collection.items[i].data[(int)rmediacom_itemdata_ht["team_medium_id"]].value == null ? 0 : (long)rmediacom.collection.items[i].data[(int)rmediacom_itemdata_ht["team_medium_id"]].value; rmembers = mlb.getMemberInfoFromFile(rusers, cm.memberid); cm.membername = rmembers.first_name + " " + rmembers.last_name; cm.memberphoto = rmembers.member_thumbnail_uri; DateTime lastupdatetime = rmediacom.collection.items[i].data[(int)rmediacom_itemdata_ht["updated_at"]].value == null ? DateTime.MinValue : (DateTime)rmediacom.collection.items[i].data[(int)rmediacom_itemdata_ht["updated_at"]].value; if (lastupdatetime.CompareTo(DateTime.MinValue) > 0) { if (lastupdatetime.CompareTo(DateTime.UtcNow.AddDays(-1)) > 0) { TimeSpan ts = DateTime.Now.Subtract(lastupdatetime); if (ts.Hours == 0) { if (ts.Minutes == 0) { cm.lastupdatedat = "A few seconds ago"; } else if (ts.Minutes < 5 && ts.Minutes > 0) { cm.lastupdatedat = "A few min ago"; } else { cm.lastupdatedat = ts.Minutes + " min ago"; } } else { if (ts.Hours == 1) { cm.lastupdatedat = "An hour ago"; } else { cm.lastupdatedat = ts.Hours + " hours ago"; } } } else { DateTime localtime = lastupdatetime.ToLocalTime(); cm.lastupdatedat = String.Format("{0:ddd, MMM dd, yyyy}", localtime); } } rphotocomments.Add(cm); } } } catch (Exception ex) { } return rphotocomments; }
private async void AddNewEmail_Loaded(object sender, RoutedEventArgs e) { try { teamid_temp = (long)ApplicationData.Current.LocalSettings.Values["currentTeamID"]; //teamid_temp = 1521479; } catch (Exception ex) { Debug.WriteLine(ex); } if (parameterPresent == false) { string userclass = await mlb.readSerializedUserClass(); ruser = Users.usersDataDeserializer(userclass); mselectrecipient.Clear(); for (int i = 0; i < (ruser.teams).Count; i++) { if (ruser.teams[i].id == teamid_temp) { for (int j = 0; j < ruser.teams[i].members.Count; j++) { CollectionUsersTeamMembers msr = new CollectionUsersTeamMembers(); msr.member_id = ruser.teams[i].members[j].member_id; msr.fullname = ruser.teams[i].members[j].fullname; mselectrecipient.Add(msr); } memberid = ruser.teams[i].members[0].member_id; } } } else { mselectrecipient.Clear(); teamid_temp = rcem.team_id; var rcemMember = rcem.memberAvailable; foreach (var val in rcemMember) { CollectionUsersTeamMembers msr = new CollectionUsersTeamMembers(); msr.member_id = val.member_id; msr.fullname = val.member_name; mselectrecipient.Add(msr); } } }
/// <summary> /// update User Information. /// </summary> /// <returns></returns> public static async Task<RootObjectUsers> updateUser() { //await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.High, // () => // { // // UI stuff here // }); mlb = new methodLibrary(); //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": in updateUser method"); string meAPIResponse = await mlb.readFile("meAPIResponse"); RootObjectMe rme = new RootObjectMe(); rme = Me.MeDataDeserializer(meAPIResponse); string teamAPIResponse = await mlb.readFile("teamAPIResponse"); RootObjectTeams rteams = new RootObjectTeams(); //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Deserializing teams response"); rteams = Teams.teamDataDeserializer(teamAPIResponse); // start with rme and store data about the user itemCollection = new CollectionUsersItem(); LibraryAPI = new Library_APICall(); //teamsCollection = new CollectionUsersTeam(); rusers = new RootObjectUsers(); rusers.items = new List<CollectionUsersItem>(); rusers.teams = new List<CollectionUsersTeam>(); rsports = new RootObjectSports(); RootObjectMembers rmembers = new RootObjectMembers(); Hashtable rme_ht = new Hashtable(); Hashtable rteam_ht = new Hashtable(); Hashtable rteamlinks_ht = new Hashtable(); string memberAPIResponse = null; int id = 0; /** Populate a hashtable to get sportname quickly. Also write results of sportsAPI call to a file.**/ string sportres = await LibraryAPI.apiCall((string)ApplicationData.Current.LocalSettings.Values["Tokens"], "https://api.teamsnap.com/v3/sports"); rsports = Sports.usersDataDeserializer(sportres); Hashtable rsports_ht = new Hashtable(); for (int i = 0; i < rsports.collection.items.Count; i++) { if (!rsports_ht.Contains(rsports.collection.items[i].data[0].value)) { rsports_ht.Add(rsports.collection.items[i].data[0].value, i); } } mlb.makeAPICallandWriteToFile("sportsName", "https://api.teamsnap.com/v3/sports"); /************/ while(id < rme.collection.items[0].data.Count) { if (!rme_ht.Contains(rme.collection.items[0].data[id].name)) { rme_ht.Add(rme.collection.items[0].data[id].name, id); } id++; } await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Updating itemcollections", false); itemCollection.id = rme.collection.items[0].data[(int)rme_ht["id"]].value == null ? 0:(long)rme.collection.items[0].data[(int)rme_ht["id"]].value; itemCollection.type = rme.collection.items[0].data[(int)rme_ht["type"]].value == null ? "":(string)rme.collection.items[0].data[(int)rme_ht["type"]].value; itemCollection.address_country = rme.collection.items[0].data[(int)rme_ht["address_country"]].value == null ? "" : (string)rme.collection.items[0].data[(int)rme_ht["address_country"]].value; itemCollection.address_state = rme.collection.items[0].data[(int)rme_ht["address_state"]].value == null ? "":(string)rme.collection.items[0].data[(int)rme_ht["address_state"]].value; itemCollection.birthday = rme.collection.items[0].data[(int)rme_ht["birthday"]].value == null ? "":(string)rme.collection.items[0].data[(int)rme_ht["birthday"]].value; itemCollection.email = rme.collection.items[0].data[(int)rme_ht["email"]].value == null ? "":(string)rme.collection.items[0].data[(int)rme_ht["email"]].value; updatePlanInfo(itemCollection.email); itemCollection.first_name = rme.collection.items[0].data[(int)rme_ht["first_name"]].value == null ? "":(string)rme.collection.items[0].data[(int)rme_ht["first_name"]].value; itemCollection.last_name = rme.collection.items[0].data[(int)rme_ht["last_name"]].value == null ? "":(string)rme.collection.items[0].data[(int)rme_ht["last_name"]].value; //itemCollection.teams_count = rme.collection.items[0].data[(int)rme_ht["teams_count"]].value == null ? 0:(long)rme.collection.items[0].data[(int)rme_ht["teams_count"]].value; try { itemCollection.teams_count = (int)rteams.collection.items.Count; } catch (Exception ex) { await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Exception in setting team count", true); } await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": itemcollection has been updated", false); rusers.items.Add(itemCollection); Debug.WriteLine("MethodLibrary : End rME. Start rTeam."); // now use rteams to store data about the teams the user is a member of. for(int i=0; i < rusers.items[0].teams_count; i++) { id = 0; try { while (id < rteams.collection.items[i].data.Count) { if (!rteam_ht.Contains(rteams.collection.items[i].data[id].name)) { rteam_ht.Add(rteams.collection.items[i].data[id].name, id); } id++; } id = 0; while (id < rteams.collection.items[i].links.Count) { if (!rteamlinks_ht.Contains(rteams.collection.items[i].links[id].rel)) { rteamlinks_ht.Add(rteams.collection.items[i].links[id].rel, id); } id++; } } catch (Exception ex) { Debug.WriteLine("Exception in setting rteam_ht and rteamlinks_ht :" + ex); await mlb.writeToLogFile((DateTime.UtcNow).ToString() + "Exception in setting rteam_ht and rteamlinks_ht: " + ex, true); } teamsCollection = new CollectionUsersTeam(); teamsCollection.members = new List<CollectionUsersTeamMembers>(); teamsCollection.id = rteams.collection.items[i].data[(int)rteam_ht["id"]].value == null ? 0:(long)rteams.collection.items[i].data[(int)rteam_ht["id"]].value; teamsCollection.eventsLink = rteams.collection.items[i].links[(int)rteamlinks_ht["events"]].href == null ? "":(string)rteams.collection.items[i].links[(int)rteamlinks_ht["events"]].href; /** Writing API call results of Opponents, Events and Locations to file. Speed up stuff ahead**/ string flname = "events_" + (teamsCollection.id).ToString(); await mlb.makeAPICallandWriteToFile(flname, teamsCollection.eventsLink); flname = "opponents_" + (teamsCollection.id).ToString(); mlb.makeAPICallandWriteToFile(flname, (string)rteams.collection.items[i].links[(int)rteamlinks_ht["opponents"]].href); flname = "locations_" + (teamsCollection.id).ToString(); mlb.makeAPICallandWriteToFile(flname, (string)rteams.collection.items[i].links[(int)rteamlinks_ht["locations"]].href); ApplicationData.Current.LocalSettings.Values["CurrentStep"] = "Updating Team"; /**Done**/ //string tempres = await LibraryAPI.apiCall((string)ApplicationData.Current.LocalSettings.Values["Tokens"], teamsCollection.eventsLink); teamsCollection.locationsLink = rteams.collection.items[i].links[(int)rteamlinks_ht["locations"]].href == null ? "":(string)rteams.collection.items[i].links[(int)rteamlinks_ht["locations"]].href; string memberslink = rteams.collection.items[i].links[(int)rteamlinks_ht["members"]].href == null ? "":(string)rteams.collection.items[i].links[(int)rteamlinks_ht["members"]].href; teamsCollection.type = rteams.collection.items[i].data[(int)rteam_ht["type"]].value == null ? "":(string)rteams.collection.items[i].data[(int)rteam_ht["type"]].value; teamsCollection.division_name = rteams.collection.items[i].data[(int)rteam_ht["division_name"]].value == null ? "":(string)rteams.collection.items[i].data[(int)rteam_ht["division_name"]].value; teamsCollection.is_archived_season = rteams.collection.items[i].data[(int)rteam_ht["is_archived_season"]].value == null ? false : (bool)rteams.collection.items[i].data[(int)rteam_ht["is_archived_season"]].value; teamsCollection.is_retired = rteams.collection.items[i].data[(int)rteam_ht["is_retired"]].value == null ? false : (bool)rteams.collection.items[i].data[(int)rteam_ht["is_retired"]].value; teamsCollection.league_name = rteams.collection.items[i].data[(int)rteam_ht["league_name"]].value == null ? "":(string)rteams.collection.items[i].data[(int)rteam_ht["league_name"]].value; teamsCollection.league_url = rteams.collection.items[i].data[(int)rteam_ht["league_url"]].value == null ? "":(string)rteams.collection.items[i].data[(int)rteam_ht["league_url"]].value; teamsCollection.is_in_league = rteams.collection.items[i].data[(int)rteam_ht["is_in_league"]].value == null ? false : (bool)rteams.collection.items[i].data[(int)rteam_ht["is_in_league"]].value; teamsCollection.location_country = rteams.collection.items[i].data[(int)rteam_ht["location_country"]].value == null ? "":(string)rteams.collection.items[i].data[(int)rteam_ht["location_country"]].value; teamsCollection.location_postal_code = rteams.collection.items[i].data[(int)rteam_ht["location_postal_code"]].value == null ? "":(string)rteams.collection.items[i].data[(int)rteam_ht["location_postal_code"]].value; teamsCollection.location_latitude = rteams.collection.items[i].data[(int)rteam_ht["location_latitude"]].value == null ? "38.8951100" :(string)rteams.collection.items[i].data[(int)rteam_ht["location_latitude"]].value; ApplicationData.Current.LocalSettings.Values["team_latitude_" + teamsCollection.id] = (string)teamsCollection.location_latitude; teamsCollection.location_longitude = rteams.collection.items[i].data[(int)rteam_ht["location_longitude"]].value == null ? "-77.0363700" : (string)rteams.collection.items[i].data[(int)rteam_ht["location_longitude"]].value; ApplicationData.Current.LocalSettings.Values["team_longitude_" + teamsCollection.id] = (string)teamsCollection.location_longitude; teamsCollection.name = rteams.collection.items[i].data[(int)rteam_ht["name"]].value == null ? "":(string)rteams.collection.items[i].data[(int)rteam_ht["name"]].value; teamsCollection.plan_id = rteams.collection.items[i].data[(int)rteam_ht["plan_id"]].value == null ? 0:(long)rteams.collection.items[i].data[(int)rteam_ht["plan_id"]].value; teamsCollection.season_name = rteams.collection.items[i].data[(int)rteam_ht["season_name"]].value == null ? "":(string)rteams.collection.items[i].data[(int)rteam_ht["season_name"]].value; teamsCollection.sport_id = rteams.collection.items[i].data[(int)rteam_ht["sport_id"]].value == null ? 0:(long)rteams.collection.items[i].data[(int)rteam_ht["sport_id"]].value; teamsCollection.sport_name = getSportName(teamsCollection.sport_id, rsports_ht); teamsCollection.pathToSportLogo = "images/" + teamsCollection.sport_id + ".png"; ApplicationData.Current.LocalSettings.Values["CurrentStep"] = "Updating Team " + teamsCollection.name; //teamsCollection.teamOwner = itemCollection.first_name + " " + itemCollection.last_name; mlb.writeToLogFile("Calling TeamAvailability API", false); mlb.makeAPICallandWriteToFile("teamAvailabilityAPI" + teamsCollection.id, (string)rteams.collection.items[i].links[(int)rteamlinks_ht["availabilities"]].href); mlb.writeToLogFile("Done calling TeamAvailability API and updating the availabilityfile", false); // make API call to fetch members for that particular team memberAPIResponse = await LibraryAPI.apiCall((string)ApplicationData.Current.LocalSettings.Values["Tokens"], memberslink); if (memberAPIResponse != "fail") { //deserialize the response rmembers = Members.membersDataDeserializer(memberAPIResponse); Hashtable rmember_ht = new Hashtable(); // use rmembers to store data about the members the team has for (int j = 0; j < rmembers.collection.items.Count; j++) { int idm = 0; // Debug.WriteLine("Adding values to rmember_ht"); while (idm < rmembers.collection.items[j].data.Count) { //Debug.WriteLine("Inside the while loop that adds values to rmember_ht"); try { if (!rmember_ht.Contains(rmembers.collection.items[j].data[idm].name)) { rmember_ht.Add(rmembers.collection.items[j].data[idm].name, idm); } idm++; } catch (Exception ex) { Debug.WriteLine(ex); var tc = new TelemetryClient(); await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": rmember_ht exception", true); tc.TrackEvent("rmember_ht exception : " + ex); } } ApplicationData.Current.LocalSettings.Values["CurrentStep"] = "Updating Team Members"; teammembers = new CollectionUsersTeamMembers(); await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Updating teammember", false); teammembers.address_city = rmembers.collection.items[j].data[(int)rmember_ht["address_city"]].value == null ? "":(string)rmembers.collection.items[j].data[(int)rmember_ht["address_city"]].value; teammembers.address_state = rmembers.collection.items[j].data[(int)rmember_ht["address_state"]].value == null ? "":(string)rmembers.collection.items[j].data[(int)rmember_ht["address_state"]].value; teammembers.address_street1 = rmembers.collection.items[j].data[(int)rmember_ht["address_street1"]].value == null ? "":(string)rmembers.collection.items[j].data[(int)rmember_ht["address_street1"]].value; teammembers.address_street2 = rmembers.collection.items[j].data[(int)rmember_ht["address_street2"]].value == null ? "":(string)rmembers.collection.items[j].data[(int)rmember_ht["address_street2"]].value; teammembers.address_zip = rmembers.collection.items[j].data[(int)rmember_ht["address_zip"]].value == null ? "":(string)rmembers.collection.items[j].data[(int)rmember_ht["address_zip"]].value; teammembers.birthday = rmembers.collection.items[j].data[(int)rmember_ht["birthday"]].value == null ? "":(string)rmembers.collection.items[j].data[(int)rmember_ht["birthday"]].value; teammembers.member_id = rmembers.collection.items[j].data[(int)rmember_ht["id"]].value == null ? 0 : (long)rmembers.collection.items[j].data[(int)rmember_ht["id"]].value; //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": member id " + teammembers.member_id); teammembers.first_name = rmembers.collection.items[j].data[(int)rmember_ht["first_name"]].value == null ? "":(string)rmembers.collection.items[j].data[(int)rmember_ht["first_name"]].value; ApplicationData.Current.LocalSettings.Values["CurrentStep"] = "Updating " + teammembers.first_name + " information"; teammembers.gender = rmembers.collection.items[j].data[(int)rmember_ht["gender"]].value == null ? "":(string)rmembers.collection.items[j].data[(int)rmember_ht["gender"]].value; teammembers.is_address_hidden = rmembers.collection.items[j].data[(int)rmember_ht["is_address_hidden"]].value == null ? false : (bool)rmembers.collection.items[j].data[(int)rmember_ht["hide_address"]].value; teammembers.is_age_hidden = rmembers.collection.items[j].data[(int)rmember_ht["is_age_hidden"]].value == null ? false : (bool)rmembers.collection.items[j].data[(int)rmember_ht["hide_age"]].value; teammembers.is_manager = rmembers.collection.items[j].data[(int)rmember_ht["is_manager"]].value == null ? false : (bool)rmembers.collection.items[j].data[(int)rmember_ht["is_manager"]].value; teammembers.is_non_player = rmembers.collection.items[j].data[(int)rmember_ht["is_non_player"]].value == null ? false : (bool)rmembers.collection.items[j].data[(int)rmember_ht["is_non_player"]].value; teammembers.jersey_number = rmembers.collection.items[j].data[(int)rmember_ht["jersey_number"]].value == null ? "":(string)rmembers.collection.items[j].data[(int)rmember_ht["jersey_number"]].value; //Debug.WriteLine("Jersey Number : " + ((bool)string.IsNullOrEmpty((string)rmembers.collection.items[j].data[24].value)) ? true : false ); teammembers.last_name = rmembers.collection.items[j].data[(int)rmember_ht["last_name"]].value == null ? "":(string)rmembers.collection.items[j].data[(int)rmember_ht["last_name"]].value; teammembers.position = rmembers.collection.items[j].data[(int)rmember_ht["position"]].value == null ? "":(string)rmembers.collection.items[j].data[(int)rmember_ht["position"]].value; teammembers.team_id = rmembers.collection.items[j].data[(int)rmember_ht["team_id"]].value == null ? 0:(long)rmembers.collection.items[j].data[(int)rmember_ht["team_id"]].value; teammembers.user_id = rmembers.collection.items[j].data[(int)rmember_ht["user_id"]].value == null ? 0 : (long)rmembers.collection.items[j].data[(int)rmember_ht["user_id"]].value; bool is_owner = rmembers.collection.items[j].data[(int)rmember_ht["is_owner"]].value == null ? false : (bool)rmembers.collection.items[j].data[(int)rmember_ht["is_owner"]].value; /// if the current member is also the logged-in user, store that id in a separate object if (teammembers.user_id == rusers.items[0].id) { teamsCollection.loggedInUsersmemberID = teammembers.member_id; } if (is_owner == true) { teamsCollection.teamOwner = teammembers.first_name + " " + teammembers.last_name; teamsCollection.teamOwnerMemberId = teammembers.member_id; } bool is_manager = rmembers.collection.items[j].data[(int)rmember_ht["is_owner"]].value == null ? false : (bool)rmembers.collection.items[j].data[(int)rmember_ht["is_manager"]].value; if (is_manager == true) { teamsCollection.teamManagerName = teammembers.first_name + " " + teammembers.last_name; teamsCollection.teamManagerMemberId = teammembers.member_id; } //teammembers.updated_at = rmembers.collection.items[j].data[(int)rmember_ht["updated_at"]].value == null ? DateTime.MinValue : (DateTime)rmembers.collection.items[j].data[(int)rmember_ht["updated_at"]].value; /* Fetching Family Member Information */ ApplicationData.Current.LocalSettings.Values["CurrentStep"] = "Looking for " + teammembers.first_name + "'s family information"; await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": ****Calling Contacts, Contacts Phone and Contacts Email API for member : " + teammembers.member_id + "****", false); teammembers.fullname = teammembers.first_name + (teammembers.last_name == null ? "" : (" " + teammembers.last_name)); Debug.WriteLine("Member ID : " + teammembers.member_id); await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Updating member_photos", false); //teammembers.member_photo = "images/member_photo.jpg"; bool memberPhotofound = false; Debug.WriteLine("Running through all the links to find rel member_photo"); for (int m = 0; m < rmembers.collection.items[j].links.Count; m++) { //Debug.WriteLine("rel : " + rmembers.collection.items[j].links[m].rel); //Debug.WriteLine("m : " + m); if (rmembers.collection.items[j].links[m].rel == "member_thumbnail") { teammembers.member_thumbnail_uri = (string)rmembers.collection.items[j].links[m].href; } if (rmembers.collection.items[j].links[m].rel == "member_photo") { memberPhotofound = true; //Debug.WriteLine("Member Photo Exists"); Debug.WriteLine(rmembers.collection.items[j].links[m].href); string teammembers_member_photo = (string)rmembers.collection.items[j].links[m].href; try { ApplicationData.Current.LocalSettings.Values["CurrentStep"] = "Looking for changes to " + teammembers.first_name + "'s profile photo."; Debug.WriteLine("teammembers_member_photo : " + teammembers_member_photo); // await downloadImage(teammembers_member_photo, "member" + (teammembers.member_id).ToString()); //teammembers.member_photo = "ms-appdata:///local/member" + (teammembers.member_id).ToString() + "_scaled.png"; teammembers.member_photo_notscaled = "ms-appdata:///local/member" + (teammembers.member_id).ToString() + ".png"; if (String.IsNullOrEmpty(teammembers_member_photo)) { teammembers.member_photo_imagex_path = "images/member_photo.jpg"; teammembers.member_photo_imagex_uri = "http://all4ed.org/wp-content/themes/all4ed/assets/images/avatar-placeholder-generic.png"; } else { //teammembers.member_photo_imagex_path = "ms-appdata:///temp/ImageCache/" + methodLibrary.BuildFileName(new Uri(teammembers_member_photo)); teammembers.member_photo_imagex_uri = teammembers_member_photo; } } catch (Exception ex) { Debug.WriteLine("Failed to download image"); teammembers.member_photo = "http://all4ed.org/wp-content/themes/all4ed/assets/images/avatar-placeholder-generic.png"; teammembers.member_photo_imagex_uri = "http://all4ed.org/wp-content/themes/all4ed/assets/images/avatar-placeholder-generic.png"; teammembers.member_thumbnail_uri = "http://all4ed.org/wp-content/themes/all4ed/assets/images/avatar-placeholder-generic.png"; teammembers.member_photo_notscaled = "images/member_photo.jpg"; teammembers.member_photo_imagex_path = "images/member_photo.jpg"; await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Failed to download image", false); } //} } } Debug.WriteLine("Photo Found : " + memberPhotofound); if(memberPhotofound == false) { Debug.WriteLine("Adding default photos to the teammembers link"); teammembers.member_photo = "http://all4ed.org/wp-content/themes/all4ed/assets/images/avatar-placeholder-generic.png"; teammembers.member_photo_imagex_uri = "http://all4ed.org/wp-content/themes/all4ed/assets/images/avatar-placeholder-generic.png"; teammembers.member_thumbnail_uri = "http://all4ed.org/wp-content/themes/all4ed/assets/images/avatar-placeholder-generic.png"; Debug.WriteLine("Finished adding default photos to the teammembers link"); } //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": All member photos have been updated"); Debug.WriteLine("Adding members to teamcollection"); teamsCollection.members.Add(teammembers); rmember_ht.Clear(); } } Debug.WriteLine("Adding teamCollection to rusers"); rusers.teams.Add(teamsCollection); //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": teamCollection added to userClass"); rteam_ht.Clear(); rteamlinks_ht.Clear(); Debug.WriteLine("Done adding teamcollection to rusers"); //rsports_ht.Clear(); } await updateAvailability(rusers); Debug.WriteLine("MethodLibrary : End rTeam."); rsports_ht.Clear(); Debug.WriteLine("returning users"); return rusers; }
public CollectionUsersTeamMembers getMemberInfoFromFile(RootObjectUsers ruser, long memberid) { CollectionUsersTeamMembers rmember = new CollectionUsersTeamMembers(); long teamid = Constants.CurrentTeamID; foreach (var item in ruser.teams) { if (item.id == teamid) { foreach (var memberlist in item.members) { if (memberlist.member_id == memberid) { rmember = memberlist; break; } } } } return rmember; }
public static async Task<RootPaymentCollection> createPaymentCollection(RootObjectTeamFeeAPI rteamFee, RootObjectMemberPaymentAPI rteamMemberPayment) { Library_APICall APILibrary = new Library_APICall(); RootPaymentCollection rpayment = new RootPaymentCollection(); methodLibrary mlb = new methodLibrary(); List<CollectionUsersTeamMembers> ctrmList = new List<CollectionUsersTeamMembers>(); Hashtable teamfeeId_ListPos = new Hashtable(); // Keeps track of position of each team id in the team_fees list. /*Extracting the list of members for the current team from FileUserClass.txt*/ Hashtable memberid_ListPos = new Hashtable(); //Keeps track of the position in list based on the member id. Will be useful later. string fileuserclass = await mlb.readSerializedUserClass(); RootObjectUsers ruser = Users.usersDataDeserializer(fileuserclass); for (int i = 0; i < ruser.teams.Count; i++) { if (ruser.teams[i].id == (long)ApplicationData.Current.LocalSettings.Values["currentTeamID"]) { for (int j = 0; j < ruser.teams[i].members.Count; j++) { CollectionUsersTeamMembers ctm = new CollectionUsersTeamMembers(); ctm = ruser.teams[i].members[j]; ctrmList.Add(ctm); // Keep in mind that all this stuff is being done for just one team. A single team will have all unique member_ids if (ctrmList.Count > 0) { memberid_ListPos.Add(ruser.teams[i].members[j].member_id, ctrmList.Count - 1); } } } } /****************************/ /*Working on the TeamFee */ rpayment.team_fees = new List<TeamFeeItems>(); Hashtable rteamfee_ht = new Hashtable(); // Adding the data items to a hashtable so that I can compare and add stuff to the right place for (int i = 0; i < rteamFee.collection.items[0].data.Count; i++) { rteamfee_ht.Add(rteamFee.collection.items[0].data[i].name, i); } // Run through array of items and add it to and object of type TeamFeeItems for (int i = 0; i < rteamFee.collection.items.Count; i++) { TeamFeeItems rtfitems = new TeamFeeItems(); rtfitems.team_fee_id = rteamFee.collection.items[i].data[(int)rteamfee_ht["id"]].value == null ? 0 : (long)rteamFee.collection.items[i].data[(int)rteamfee_ht["id"]].value; if (!teamfeeId_ListPos.Contains(rtfitems.team_fee_id)) { teamfeeId_ListPos.Add(rtfitems.team_fee_id, i); } rtfitems.team_fee_description = (string)rteamFee.collection.items[i].data[(int)rteamfee_ht["description"]].value; rtfitems.team_fee_amount = (string)rteamFee.collection.items[i].data[(int)rteamfee_ht["amount"]].value; rtfitems.team_fee_notes = (string)rteamFee.collection.items[i].data[(int)rteamfee_ht["notes"]].value; rtfitems.team_fee_balance = (string)rteamFee.collection.items[i].data[(int)rteamfee_ht["balance"]].value; rtfitems.team_member = new List<Team_Member>(); rpayment.team_fees.Add(rtfitems); } /*************************/ /*Working on member payments now*/ //Run through memberPayments and for each matching team_fee_id, add the data to rpayment.team_fees[i].team_member Hashtable rteamMemberPayment_ht = new Hashtable(); for (int i = 0; i < rteamMemberPayment.collection.items[0].data.Count; i++) { rteamMemberPayment_ht.Add(rteamMemberPayment.collection.items[0].data[i].name, i); } for (int i = 0; i < rteamMemberPayment.collection.items.Count; i++) { // read the team_fee_id long member_team_fee_id = (long)rteamMemberPayment.collection.items[i].data[(int)rteamMemberPayment_ht["team_fee_id"]].value; // check if it matches an existing team_fee_id in teamfeeId_ListPos if(teamfeeId_ListPos.ContainsKey(member_team_fee_id)) { TeamFeeItems rtfitems = new TeamFeeItems(); rtfitems = rpayment.team_fees[(int)teamfeeId_ListPos[member_team_fee_id]]; Team_Member rteammember = new Team_Member(); rteammember.tickmark = new TeamMemberTickMarkVisibility(); rteammember.team_fee_id = member_team_fee_id; rteammember.member_payment_id = (long)rteamMemberPayment.collection.items[i].data[(int)rteamMemberPayment_ht["id"]].value; rteammember.team_id = (long)rteamMemberPayment.collection.items[i].data[(int)rteamMemberPayment_ht["team_id"]].value; rteammember.amount_paid = (string)rteamMemberPayment.collection.items[i].data[(int)rteamMemberPayment_ht["amount_paid"]].value; rteammember.amount_due = (string)rteamMemberPayment.collection.items[i].data[(int)rteamMemberPayment_ht["amount_due"]].value; rteammember.is_applicable = rteamMemberPayment.collection.items[i].data[(int)rteamMemberPayment_ht["is_applicable"]].value == null ? false : (bool)rteamMemberPayment.collection.items[i].data[(int)rteamMemberPayment_ht["is_applicable"]].value; rteammember.member_id = (long)rteamMemberPayment.collection.items[i].data[(int)rteamMemberPayment_ht["member_id"]].value; rteammember.tickmark.is_applicable = rteammember.is_applicable; rteammember.tickmark.amount_due = rteammember.amount_due; //Check if memberid_ListPos contains this team_fee_member_id. If it does, fetch member info from there long team_fee_member_id = (long)rteamMemberPayment.collection.items[i].data[(int)rteamMemberPayment_ht["member_id"]].value; if (memberid_ListPos.ContainsKey(team_fee_member_id)) { int pos = (int)memberid_ListPos[team_fee_member_id]; rteammember.member_name = ctrmList[pos].first_name + (String.IsNullOrEmpty(ctrmList[pos].last_name) ? "" : " " + ctrmList[pos].last_name); rteammember.member_photo = ctrmList[pos].member_photo; rteammember.member_photo = ctrmList[pos].member_photo_notscaled; rteammember.email_address = ctrmList[pos].email_address; rteammember.is_non_player = ctrmList[pos].is_non_player; } rpayment.team_fees[(int)teamfeeId_ListPos[member_team_fee_id]].team_member.Add(rteammember); // Adding rteammember under the right TeamFeeItems } } return rpayment; }
public async Task<CollectionUsersTeamMembers> updateMemberContacts(long member_id, CollectionUsersTeamMembers teammembers) { RootObjectMemberContacts rmemcontacts = new RootObjectMemberContacts(); string family_contacts_res = await LibraryAPI.apiCall((string)ApplicationData.Current.LocalSettings.Values["Tokens"], "https://api.teamsnap.com/v3/contacts/search?member_id=" + member_id.ToString()); rmemcontacts = MemberContacts.membercontactsDataDeserializer(family_contacts_res); try { //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + (rmemcontacts.collection.items == null ? ": No items in rmemcontacts" : ": rmemcontact has " + rmemcontacts.collection.items.Count + " values"), false); if (rmemcontacts.collection.items != null) { //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Inside if (rmemcontacts.collection.items != null)", false); teammembers.family_members = new List<FamilyMemberContacts>(); string family_contacts_phone_res = null; Debug.WriteLine("filename family_contacts_phone_res : " + "family_contacts_phone_res" + teammembers.member_id); string refreshclicked = (string)ApplicationData.Current.LocalSettings.Values["RefreshClicked"]; family_contacts_phone_res = await LibraryAPI.apiCall((string)ApplicationData.Current.LocalSettings.Values["Tokens"], "https://api.teamsnap.com/v3/contact_phone_numbers/search?member_id=" + (teammembers.member_id).ToString()); string family_contacts_email_res = await LibraryAPI.apiCall((string)ApplicationData.Current.LocalSettings.Values["Tokens"], "https://api.teamsnap.com/v3/contact_email_addresses/search?member_id=" + (teammembers.member_id).ToString()); ; RootObjectContactPhone rcontactphone = new RootObjectContactPhone(); RootObjectContactEmailAddress rcontactemailaddress = new RootObjectContactEmailAddress(); rcontactemailaddress = MemberContactEmailAddress.contactEmailAddressDataDeserializer(family_contacts_email_res); Hashtable rcontactemail_items_ht = new Hashtable(); //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Finished deserializing Email API response", false); rcontactphone = MemberContactsPhoneNumbers.contactPhoneDataDeserializer(family_contacts_phone_res); //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Finished deserializing Phone API response", false); Hashtable rmemcontacts_ht = new Hashtable(); //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Hashtable has been populated.", false); for (int ind = 0; ind < rmemcontacts.collection.items.Count; ind++) { //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Creating Hashtable.", false); for (int ind1 = 0; ind1 < rmemcontacts.collection.items[ind].data.Count; ind1++) { rmemcontacts_ht.Add(rmemcontacts.collection.items[ind].data[ind1].name, ind1); } FamilyMemberContacts rfammemcontacts = new FamilyMemberContacts(); rfammemcontacts.id = rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["id"]].value == null ? 0 : (long)rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["id"]].value; rfammemcontacts.address_city = rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["address_city"]].value == null ? null : (string)rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["address_city"]].value; //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetched address_city from TeamSnap.", false); rfammemcontacts.address_country = rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["address_country"]].value == null ? null : (string)rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["address_country"]].value; //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetched address_country from TeamSnap.", false); rfammemcontacts.address_state = rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["address_state"]].value == null ? null : (string)rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["address_state"]].value; // await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetched address_state from TeamSnap.", false); rfammemcontacts.address_street1 = rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["address_street1"]].value == null ? null : (string)rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["address_street1"]].value; //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetched address_street1 from TeamSnap.", false); rfammemcontacts.address_street2 = rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["address_street2"]].value == null ? null : (string)rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["address_street2"]].value; ; // await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetched address_street2 from TeamSnap.", false); rfammemcontacts.address_zip = rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["address_zip"]].value == null ? null : (string)rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["address_zip"]].value; //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetched address_zip from TeamSnap.", false); rfammemcontacts.first_name = rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["first_name"]].value == null ? null : (string)rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["first_name"]].value; //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetched first_name from TeamSnap.", false); rfammemcontacts.label = rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["label"]].value == null ? null : (string)rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["label"]].value; //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetched label from TeamSnap.", false); rfammemcontacts.last_name = rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["last_name"]].value == null ? null : (string)rmemcontacts.collection.items[ind].data[(int)rmemcontacts_ht["last_name"]].value; //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetched last_name from TeamSnap.", false); rfammemcontacts.full_name = rfammemcontacts.first_name + " " + rfammemcontacts.last_name; //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetched full_name from TeamSnap.", false); rfammemcontacts.nameAndLabel = rfammemcontacts.full_name + " (" + rfammemcontacts.label + ")"; //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetched label from TeamSnap.", false); //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + (rcontactphone.collection.items == null ? ": No items in rcontactphone" : ": rcontactphone has " + rcontactphone.collection.items.Count + " values"), false); if (rcontactphone.collection.items != null) { //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + (rcontactphone.collection.items[ind] == null ? ": rcontactphone.collection.items[ind] is null" : ": rcontactphone.collection.items[ind] is not null"), false); Hashtable rfamcontactphone_ht = new Hashtable(); rfammemcontacts.phonenum = new System.Collections.ObjectModel.ObservableCollection<FamilyMemberContactsPhones>(); for (int k = 0; k < rcontactphone.collection.items[0].data.Count; k++) { rfamcontactphone_ht.Add(rcontactphone.collection.items[0].data[k].name, k); } for (int k = 0; k < rcontactphone.collection.items.Count; k++) { Debug.WriteLine((int)rfamcontactphone_ht["contact_id"]); Debug.WriteLine((long)rcontactphone.collection.items[k].data[(int)rfamcontactphone_ht["contact_id"]].value); if ((long)rcontactphone.collection.items[k].data[(int)rfamcontactphone_ht["contact_id"]].value == rfammemcontacts.id) { FamilyMemberContactsPhones rfamcontactphone = new FamilyMemberContactsPhones(); rfamcontactphone.phone_number = rcontactphone.collection.items[k].data[(int)rfamcontactphone_ht["phone_number"]].value == null ? null : (string)rcontactphone.collection.items[k].data[(int)rfamcontactphone_ht["phone_number"]].value; rfammemcontacts.phonenum.Add(rfamcontactphone); } } rfamcontactphone_ht.Clear(); } //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + (rcontactemailaddress.collection.items == null ? ": No items in rcontactphone" : ": rcontactphone has " + rcontactemailaddress.collection.items.Count + " values"), false); if (rcontactemailaddress.collection.items != null) { //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + (rcontactemailaddress.collection.items[ind] == null ? ": rcontactemailaddress.collection.items[ind] is null" : ": rcontactemailaddress.collection.items[ind] is not null"), false); Hashtable rfamcontactemail_ht = new Hashtable(); rfammemcontacts.emailAdd = new System.Collections.ObjectModel.ObservableCollection<FamilyMemberContactsEmail>(); for (int k = 0; k < rcontactemailaddress.collection.items[0].data.Count; k++) { // if (rcontactemailaddress.collection.items[0].data[k].name != "sms_gateway_id") //{ rfamcontactemail_ht.Add(rcontactemailaddress.collection.items[0].data[k].name, k); //} } for (int k = 0; k < rcontactemailaddress.collection.items.Count; k++) { if ((long)rcontactemailaddress.collection.items[k].data[(int)rfamcontactemail_ht["contact_id"]].value == rfammemcontacts.id) { FamilyMemberContactsEmail rfamcontactemail = new FamilyMemberContactsEmail(); Debug.WriteLine((int)rfamcontactemail_ht["email"]); Debug.WriteLine((string)rcontactemailaddress.collection.items[k].data[(int)rfamcontactemail_ht["email"]].value); rfamcontactemail.email_address = rcontactemailaddress.collection.items[k].data[(int)rfamcontactemail_ht["email"]].value == null ? null : (string)rcontactemailaddress.collection.items[k].data[(int)rfamcontactemail_ht["email"]].value; rfammemcontacts.emailAdd.Add(rfamcontactemail); } } rfamcontactemail_ht.Clear(); } //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Addsing rfamemcontacts to teammebers.family_members.", false); teammembers.family_members.Add(rfammemcontacts); //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Clearing the hashtable.", false); rmemcontacts_ht.Clear(); } } } catch (Exception ex) { //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Exception in Calling Contacts, Contacts Phone and Contacts Email API " + ex, true); } //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": ****Finished calling Contacts, Contacts Phone and Contacts Email API****", false); /* Family Member Information Section over */ string emailres = await LibraryAPI.apiCall((string)ApplicationData.Current.LocalSettings.Values["Tokens"], "https://api.teamsnap.com/v3/member_email_addresses/search?member_id=" + teammembers.member_id); RootObjectMemberEmail rmemberemail = MemberEmail.memberemailDataDeserializer(emailres); if (rmemberemail.collection.items != null) { for (int emaili = 0; emaili < rmemberemail.collection.items[0].data.Count; emaili++) { if (rmemberemail.collection.items[0].data[emaili].name == "email") { teammembers.email_address = (string)rmemberemail.collection.items[0].data[emaili].value; Debug.WriteLine(teammembers.member_id); break; } } } else { teammembers.email_address = null; } string phoneres = await LibraryAPI.apiCall((string)ApplicationData.Current.LocalSettings.Values["Tokens"], "https://api.teamsnap.com/v3/member_phone_numbers/search?member_id=" + teammembers.member_id); RootObjectMemberPhone rmemberphone = MemberPhone.memberPhoneDataDeserializer(phoneres); if (rmemberphone.collection.items != null) { for (int phonei = 0; phonei < rmemberphone.collection.items[0].data.Count; phonei++) { if (rmemberphone.collection.items[0].data[phonei].name == "phone_number") { //Debug.WriteLine(teammembers.first_name + " " + teammembers.last_name + " of team " + teamsCollection.name + " has a phone number : " + (string)rmemberphone.collection.items[0].data[phonei].value); teammembers.phone_number = (string)rmemberphone.collection.items[0].data[phonei].value; break; } } } else { //Debug.WriteLine(teammembers.first_name + " " + teammembers.last_name + " of team " + teamsCollection.name + " doesn't have a phone number"); teammembers.phone_number = null; } return teammembers; }