public async Task <Result <LiveResultsResponse> > GetResults(ResultsType type, string location = null)
        {
            try
            {
                var liveResultsResponse = new LiveResultsResponse();

                var result = await GetResultsByType(type, location);

                if (result.IsFailure)
                {
                    return(Result.Failure <LiveResultsResponse>("Could not load results"));
                }
                var selectedResults = result.Value;
                var candidates      = ConvertCandidates(selectedResults);
                var counties        =
                    selectedResults.Candidates.FirstOrDefault()?.Counties.Select(c => new County
                {
                    Label = c.Key,
                    Id    = c.Key
                }).ToList();
                liveResultsResponse.Candidates = candidates;
                liveResultsResponse.Counties   = counties ?? new List <County>();

                return(Result.Ok(liveResultsResponse));
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Encountered exception while retrieving results");
                throw;
            }
        }
Esempio n. 2
0
        private LiveResultsResponse CreateLiveResultsResponse(ElectionResultsData electionResultsData)
        {
            var candidates = ConvertCandidates(electionResultsData);
            var counties   =
                electionResultsData?.Candidates?.FirstOrDefault()?.Counties.Select(c => new County
            {
                Label      = c.Key,
                Id         = "national",
                CountyName = c.Key
            }).ToList();
            var liveResultsResponse = new LiveResultsResponse
            {
                Candidates = candidates
            };

            liveResultsResponse.Counties = counties ?? new List <County>();
            return(liveResultsResponse);
        }
Esempio n. 3
0
        public async Task <Result <LiveResultsResponse> > GetResults(ResultsType type, string location = null)
        {
            try
            {
                var liveResultsResponse = new LiveResultsResponse();

                var result = await GetResultsByType(type, location);

                if (result.IsFailure)
                {
                    return(Result.Failure <LiveResultsResponse>("Could not load results"));
                }
                var selectedResults = result.Value;
                var candidates      = ConvertCandidates(selectedResults);

                var counties =
                    selectedResults?.Candidates?.FirstOrDefault()?.Counties.Select(c => new County
                {
                    Label = c.Key,
                    Id    = c.Key
                }).ToList();
                liveResultsResponse.Candidates = candidates;
                liveResultsResponse.Counties   = counties ?? new List <County>();
                var voterTurnout = await GetVoterTurnout();

                if (voterTurnout.IsSuccess)
                {
                    decimal totalVotes = voterTurnout.Value.TotalNationalVotes;
                    var     percentage = Math.Round(_totalCounted / totalVotes, 2) * 100;
                    liveResultsResponse.PercentageCounted = percentage;
                    liveResultsResponse.VoterTurnout      = totalVotes;
                }
                return(Result.Ok(liveResultsResponse));
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Encountered exception while retrieving results");
                throw;
            }
        }