public CandidateInfo GetCandidate(string vsCandidateId) { int id; VsCandidatesTable candidate = null; if (int.TryParse(vsCandidateId, out id)) { candidate = VsCandidates.GetData(id); } if (candidate == null || candidate.Count == 0) { return(null); } var candidateItems = VsCandidatesItems.GetData(id); var candidateWebAddresses = VsCandidatesWebAddresses.GetData(id); var webAddressTypes = VsWebAddressTypes.GetAllData() .ToDictionary(r => r.WebAddressTypeId, r => r.Name); var info = new CandidateInfo { LastRefreshDate = candidate[0].LastRefreshDate.AsUtc(), FirstName = candidate[0].FirstName, MiddleName = candidate[0].MiddleName, Nickname = candidate[0].Nickname, LastName = candidate[0].LastName, Suffix = candidate[0].Suffix, BirthDate = candidate[0].BirthDate, BirthPlace = candidate[0].BirthPlace, Pronunciation = candidate[0].Pronunciation, Gender = candidate[0].Gender, Family = candidate[0].Family, Photo = candidate[0].Photo, HomeCity = candidate[0].HomeCity, HomeState = candidate[0].HomeState, Education = candidate[0].Education, Profession = candidate[0].Profession, Political = candidate[0].Political, Religion = candidate[0].Religion, CongMembership = candidate[0].CongMembership, OrgMembership = candidate[0].OrgMembership, SpecialMsg = candidate[0].SpecialMsg, Items = candidateItems.OrderBy(r => r.ItemName) .Select(r => new SimpleListItem(r.ItemName, r.ItemData)) .ToList(), WebAddresses = candidateWebAddresses .OrderBy(r => r.WebAddressTypeId) .Select(r => new SimpleListItem(webAddressTypes.ContainsKey(r.WebAddressTypeId) ? webAddressTypes[r.WebAddressTypeId] : "Code " + r.WebAddressTypeId, Validation.StripWebProtocol(r.WebAddress))) .ToList() }; return(info); }
public string RefreshCandidate(string vsCandidateId) { var candidateId = int.Parse(vsCandidateId); VsCandidates.DeleteByCandidateId(candidateId); VsCandidatesItems.DeleteByCandidateId(candidateId); VsCandidatesWebAddresses.DeleteByCandidateId(candidateId); var jsonObj = VoteSmart.GetJsonAsDictionary("CandidateBio.getBio", "candidateId=" + candidateId); if (jsonObj.ContainsKey("bio")) { var bio = jsonObj["bio"] as Dictionary <string, object>; if (bio?.ContainsKey("candidate") == true) { var candidate = bio["candidate"] as Dictionary <string, object>; DateTime birthDate; Debug.Assert(candidate != null, "candidate != null"); if (!DateTime.TryParse(candidate["birthDate"] as string, out birthDate)) { birthDate = VotePage.DefaultDbDate; } VsCandidates.Insert(candidateId, DateTime.UtcNow, candidate["firstName"] as string, candidate["middleName"] as string, candidate["nickName"] as string, candidate["lastName"] as string, candidate["suffix"] as string, birthDate, candidate["birthPlace"] as string, candidate["pronunciation"] as string, candidate["gender"] as string, candidate["family"] as string, candidate["photo"] as string, candidate["homeCity"] as string, candidate["homeState"] as string, candidate["education"] as string, candidate["profession"] as string, candidate["political"] as string, candidate["religion"] as string, candidate["congMembership"] as string, candidate["orgMembership"] as string, candidate["specialMsg"] as string); } } var itemsJsonObj = VoteSmart.GetJsonAsDictionary("CandidateBio.getAddlBio", "candidateId=" + candidateId); if (itemsJsonObj.ContainsKey("addlBio")) { var addlBio = itemsJsonObj["addlBio"] as Dictionary <string, object>; if (addlBio?.ContainsKey("additional") == true) { var additional = addlBio["additional"] as Dictionary <string, object>; if (additional != null) { var item = VoteSmart.AsArrayList(additional["item"]); if (item != null) { foreach (var i in item.Cast <Dictionary <string, object> >()) { VsCandidatesItems.Insert(candidateId, i["name"] as string, i["data"] as string); } } } } } var wasonObj = VoteSmart.GetJsonAsDictionary("Address.getOfficeWebAddress", "candidateId=" + candidateId); if (wasonObj.ContainsKey("webaddress")) { var webAddress = wasonObj["webaddress"] as Dictionary <string, object>; if (webAddress?.ContainsKey("address") == true) { var address = VoteSmart.AsArrayList(webAddress["address"]); if (address != null) { foreach (var a in address.Cast <Dictionary <string, object> >()) { VsCandidatesWebAddresses.Insert(candidateId, a["webAddressTypeId"] as string, a["webAddress"] as string); } } } } return(string.Empty); }