Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }