public async Task<bool> getUserCollection(ObservableCollection<CollectionUsersTeam> teamData) { try { libMethods = new methodLibrary(); //await libMethods.writeToLogFile((DateTime.UtcNow).ToString() + ": in getUserCollection method"); string resp = await libMethods.readSerializedUserClass(); var rootuser = usersDataDeserializer(resp); var teamsobject = rootuser.teams; teamData.Clear(); foreach (var teams in teamsobject) { teamData.Add(teams); } } catch (Exception ex) { //await libMethods.writeToLogFile((DateTime.UtcNow).ToString() + ": Exception in getUserCollection"); return false; } return true; }
/// <summary> /// update User Information. /// </summary> /// <returns></returns> public static async Task<RootObjectUsers> updateUser() { 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(); Dictionary<string, int> rme_ht = new Dictionary<string, int>(); Dictionary<string, int> rteam_ht = new Dictionary<string, int>(); Dictionary<string, int> rteamlinks_ht = new Dictionary<string, int>(); 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); Dictionary<object, long> rsports_ht = new Dictionary<object, long>(); for (int i = 0; i < rsports.collection.items.Count; i++) { if (!rsports_ht.ContainsKey(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.ContainsKey(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; 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.ContainsKey(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.ContainsKey(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); /**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"; //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); Dictionary<string, int> rmember_ht = new Dictionary<string, int>(); // 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.ContainsKey(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); await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": rmember_ht exception", true); } } 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; 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 */ //await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": ****Calling Contacts, Contacts Phone and Contacts Email API for member : " + teammembers.member_id + "****", false); //string family_contacts_res = await LibraryAPI.apiCall((string)ApplicationData.Current.LocalSettings.Values["Tokens"], "https://api.teamsnap.com/v3/contacts/search?member_id=" + teammembers.member_id); //RootObjectMemberContacts rmemcontacts = new RootObjectMemberContacts(); //if (teammembers.first_name == "User1") //{ // Debug.WriteLine(family_contacts_res); //} //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>(); // await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": GET Phone API", false); // string 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); // if (teammembers.first_name == "User1") // { // Debug.WriteLine(family_contacts_phone_res); // } // await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": GET Email API", false); // 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); ; // if (teammembers.first_name == "User1") // { // Debug.WriteLine(family_contacts_email_res); // } // RootObjectContactPhone rcontactphone = new RootObjectContactPhone(); // RootObjectContactEmailAddress rcontactemailaddress = new RootObjectContactEmailAddress(); // rcontactemailaddress = MemberContactEmailAddress.contactEmailAddressDataDeserializer(family_contacts_email_res); // Dictionary<string, int> rcontactemail_items_ht = new Dictionary<string, int>(); // 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); // Dictionary<string, int> rmemcontacts_ht = new Dictionary<string, int>(); // 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); // Dictionary<string, int> rfamcontactphone_ht = new Dictionary<string, int>(); // 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); // Dictionary<string, int> rfamcontactemail_ht = new Dictionary<string, int>(); // 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(); // //if (rcontactemailaddress.collection.items[ind] != null) // //{ // // for (int index = 0; index < rcontactemailaddress.collection.items[ind].data.Count; index++) // // { // // if (rcontactemailaddress.collection.items[ind].data[index].name == "email") // // { // // await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetching email_address.", false); // // rfammemcontacts.email_address = rcontactemailaddress.collection.items[ind].data[index].value == null ? null : (string)rcontactemailaddress.collection.items[ind].data[index].value; // // await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": fetched email_address.", false); // // } // // } // //} // } // 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; //} 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.png"; 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_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; //string flname = (teammembers.member_id).ToString() if (await checkIfFileExists("fileUserClass.txt")) { //teammembers.member_photo = "images/member_photo.jpg"; RootObjectUsers rtempuser = new RootObjectUsers(); string re = await mlb.readSerializedUserClass(); try { rtempuser = Users.usersDataDeserializer(re); } catch (Exception ex) { Debug.WriteLine("failed to deserialize data"); await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Failed to deserialize data", true); } for (int h = 0; h < rtempuser.teams.Count; h++) { if (rtempuser.teams[h].id == teamsCollection.id) { for (int ih = 0; ih < rtempuser.teams[h].members.Count; ih++) { if (rtempuser.teams[h].members[ih].member_id == teammembers.member_id) { ///////////////Future bug here. teammembers.updated_at has min value if (DateTime.Compare(rtempuser.teams[h].members[ih].updated_at, teammembers.updated_at) < 0) { try { 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"; } catch (Exception ex) { Debug.WriteLine("Failed to download images"); teammembers.member_photo = "images/member_photo.png"; teammembers.member_photo_notscaled = "images/member_photo.png"; await mlb.writeToLogFile((DateTime.UtcNow).ToString() + ": Failed to download image", false); } } else { if (await checkIfFileExists("member" + (teammembers.member_id).ToString() + "_scaled.png")) { 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"; } else { teammembers.member_photo = "images/member_photo.png"; teammembers.member_photo_notscaled = "images/member_photo.png"; } } } } } } } else { try { 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"; } catch (Exception ex) { Debug.WriteLine("Failed to download image"); teammembers.member_photo = "images/member_photo.png"; teammembers.member_photo_notscaled = "images/member_photo.png"; 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 = "images/member_photo.png"; teammembers.member_photo_notscaled = "images/member_photo.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 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>(); Dictionary<long, int> teamfeeId_ListPos = new Dictionary<long, int>(); // 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*/ Dictionary<long, int> memberid_ListPos = new Dictionary<long, int>(); //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>(); Dictionary<string, int> rteamfee_ht = new Dictionary<string, int>(); // 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.ContainsKey(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 Dictionary<string, int> rteamMemberPayment_ht = new Dictionary<string, int>(); 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.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 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; }