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