public static ElectionStatistics BuildElectionStatistics(ElectionResultsFile file, ElectionResultsData electionResultsData)
        {
            var electionStatistics = new ElectionStatistics();

            electionStatistics.Id             = $"{DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks:D19}";
            electionStatistics.Type           = file.FileType.ConvertEnumToString();
            electionStatistics.Source         = file.ResultsSource;
            electionStatistics.Timestamp      = file.Timestamp;
            electionStatistics.StatisticsJson = JsonConvert.SerializeObject(electionResultsData);
            electionStatistics.ElectionId     = file.ElectionId;
            return(electionStatistics);
        }
Example #2
0
        public async Task InsertVoteMonitoringStats(VoteMonitoringStats voteMonitoringInfo)
        {
            var electionStatistics = new ElectionStatistics
            {
                Id             = $"{DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks:D19}",
                Type           = ResultsType.VoteMonitoring.ConvertEnumToString(),
                Location       = ResultsLocation.All.ConvertEnumToString(),
                Timestamp      = voteMonitoringInfo.Timestamp,
                StatisticsJson = JsonConvert.SerializeObject(voteMonitoringInfo)
            };

            await InsertResults(electionStatistics);
        }
Example #3
0
        public virtual async Task InsertCurrentVoterTurnout(VoterTurnout voterTurnout)
        {
            var electionStatistics = new ElectionStatistics
            {
                Id             = $"{DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks:D19}",
                Type           = ResultsType.VoterTurnout.ConvertEnumToString(),
                Location       = ResultsLocation.All.ConvertEnumToString(),
                Timestamp      = voterTurnout.Timestamp,
                StatisticsJson = JsonConvert.SerializeObject(voterTurnout)
            };

            await InsertResults(electionStatistics);
        }
Example #4
0
        public static ElectionStatistics BuildElectionStatistics(string fileName, ElectionResultsData electionResultsData)
        {
            var electionStatistics       = new ElectionStatistics();
            var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileName);

            electionStatistics.Id = $"{DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks:D19}";
            var attributes = fileNameWithoutExtension.Split('_');

            electionStatistics.Type           = attributes[0];
            electionStatistics.Location       = attributes[1];
            electionStatistics.Timestamp      = long.Parse(attributes[2]);
            electionStatistics.StatisticsJson = JsonConvert.SerializeObject(electionResultsData);
            return(electionStatistics);
        }
Example #5
0
        public virtual async Task InsertCurrentVoterTurnout(VoterTurnout voterTurnout)
        {
            var electionStatistics = new ElectionStatistics
            {
                Id             = $"{DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks:D19}",
                Type           = FileType.VoterTurnout.ConvertEnumToString(),
                Source         = Consts.VOTE_TURNOUT_KEY,
                Timestamp      = voterTurnout.Timestamp,
                ElectionId     = voterTurnout.ElectionId,
                StatisticsJson = JsonConvert.SerializeObject(voterTurnout)
            };

            await InsertResults(electionStatistics);
        }
Example #6
0
        public async Task InsertVoteMonitoringStats(VoteMonitoringStats voteMonitoringInfo)
        {
            var electionStatistics = new ElectionStatistics
            {
                Id             = $"{DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks:D19}",
                Type           = FileType.VoteMonitoring.ConvertEnumToString(),
                Source         = Consts.VOTE_MONITORING_KEY,
                Timestamp      = voteMonitoringInfo.Timestamp,
                ElectionId     = voteMonitoringInfo.ElectionId,
                StatisticsJson = JsonConvert.SerializeObject(voteMonitoringInfo)
            };

            await InsertResults(electionStatistics);
        }
        public async Task InsertResults(ElectionStatistics electionStatistics)
        {
            using (var storageContext = new StorageContext(FunctionSettings.AzureStorageConnectionString))
            {
                storageContext.EnableAutoCreateTable();
                storageContext.AddAttributeMapper();
                storageContext.AddEntityMapper(typeof(ElectionStatistics), new DynamicTableEntityMapper
                {
                    PartitionKeyFormat = "Location",
                    RowKeyFormat       = "Id",
                    TableName          = FunctionSettings.AzureTableName
                });
                await storageContext.CreateTableAsync(typeof(ElectionStatistics));

                await storageContext.MergeOrInsertAsync(electionStatistics);
            }
        }
Example #8
0
        public async Task InsertResults(ElectionStatistics electionStatistics)
        {
            try
            {
                _logger.LogInformation($"Inserting results");

                Dictionary <string, AttributeValue> item = new Dictionary <string, AttributeValue>();
                item["id"] = new AttributeValue {
                    S = electionStatistics.Id
                };
                item["fileType"] = new AttributeValue {
                    S = electionStatistics.Type
                };
                item["fileSource"] = new AttributeValue {
                    S = electionStatistics.Source
                };
                item["electionId"] = new AttributeValue {
                    S = electionStatistics.ElectionId
                };
                item["statisticsJson"] = new AttributeValue {
                    S = electionStatistics.StatisticsJson
                };
                item["csvTimestamp"] = new AttributeValue {
                    N = electionStatistics.Timestamp.ToString()
                };
                List <WriteRequest> items = new List <WriteRequest>
                {
                    new WriteRequest
                    {
                        PutRequest = new PutRequest
                        {
                            Item = item
                        }
                    }
                };
                Dictionary <string, List <WriteRequest> > requestItems = new Dictionary <string, List <WriteRequest> >();
                requestItems[_config.TableName] = items;

                await _dynamoDb.BatchWriteItemAsync(requestItems);
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Couldn't insert results");
            }
        }
Example #9
0
        public async Task InsertResults(ElectionStatistics electionStatistics)
        {
            try
            {
                _logger.LogInformation($"Inserting results");
                var tableExists = await TableIsReady();

                if (!tableExists)
                {
                    await CreateTable();
                }

                Dictionary <string, AttributeValue> item = new Dictionary <string, AttributeValue>();
                item["id"] = new AttributeValue {
                    S = electionStatistics.Id
                };
                item["csvType"] = new AttributeValue {
                    S = electionStatistics.Type
                };
                item["csvLocation"] = new AttributeValue {
                    S = electionStatistics.Location
                };
                item["statisticsJson"] = new AttributeValue {
                    S = electionStatistics.StatisticsJson
                };
                item["csvTimestamp"] = new AttributeValue {
                    N = electionStatistics.FileTimestamp.ToString()
                };
                List <WriteRequest> items = new List <WriteRequest>();
                items.Add(new WriteRequest
                {
                    PutRequest = new PutRequest {
                        Item = item
                    }
                });
                Dictionary <string, List <WriteRequest> > requestItems = new Dictionary <string, List <WriteRequest> >();
                requestItems[_config.TableName] = items;

                await _dynamoDb.BatchWriteItemAsync(requestItems);
            }
            catch (Exception e)
            {
                _logger.LogError(e, "Couldn't insert results");
            }
        }