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);
        }