Exemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var result = new AjaxResponse();

            try
            {
                // assume success unless an exception is thrown
                result.Success = true;

                // there should always be exactly one file
                if (Request.Files.Count == 0)
                {
                    throw new VoteException("The upload file is missing");
                }
                if (Request.Files.Count > 1)
                {
                    throw new VoteException("Unexpected files in the upload package");
                }

                // Test error handling
                //throw new VoteException("Some weird-ass error");

                // get the file
                var postedFile  = Request.Files[0];
                var electionKey = Request.Form["electionKey"];
                Elections.ActualizeElection(electionKey);
                var jurisdictionScope = Request.Form["jurisdictionScope"];
                var electionScope     = Request.Form["electionScope"];
                using (var memoryStream = new MemoryStream())
                {
                    postedFile.InputStream.Position = 0;
                    postedFile.InputStream.CopyTo(memoryStream);
                    var spreadsheet =
                        ParseSpreadsheet(memoryStream, IsExcel(postedFile.FileName));
                    var columns = spreadsheet.Columns.OfType <DataColumn>().Select(c => c.ColumnName)
                                  .ToList();
                    var id = ElectionSpreadsheets.Insert(postedFile.FileName, DateTime.UtcNow,
                                                         memoryStream.ToArray(), electionKey, false, columns.Count, spreadsheet.Rows.Count,
                                                         jurisdictionScope, electionScope);
                    for (var x = 0; x < columns.Count; x++)
                    {
                        ElectionSpreadsheetsColumns.Insert(id, x, columns[x], Empty);
                    }
                    for (var x = 0; x < spreadsheet.Rows.Count; x++)
                    {
                        ElectionSpreadsheetsRows.Insert(id, x, Empty, Empty, Empty, Empty);
                    }
                    result.Html = GetSpreadsheetListHtml(false, id);
                }

                result.Message = "Ok";
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Message = ex.Message;
            }

            WriteJsonResultToResponse(result);
        }
Exemplo n.º 2
0
        public static DataTable ReadSpreadsheet(int id)
        {
            var table = ElectionSpreadsheets.GetDataById(id);

            if (table.Count != 1)
            {
                return(null);
            }
            using (var stream = new MemoryStream(table[0].Content))
                return(ParseSpreadsheet(stream, IsExcel(table[0].Filename)));
        }
Exemplo n.º 3
0
        public static string GetSpreadsheetListHtml(bool all = false, int?id = null)
        {
            var table = all
        ? ElectionSpreadsheets.GetAllListData()
        : ElectionSpreadsheets.GetListDataByCompleted(false);

            if (table.Count == 0)
            {
                return("<div>No spreadsheets found</div>");
            }

            // get a dictionary of election descriptions
            var dictionary =
                Elections.GetElectionDescriptions(table.Select(recordStates =>
                                                               recordStates.ElectionKey));

            // append jurisdictions
            var mods = new List <KeyValuePair <string, string> >();

            foreach (var kvp in dictionary)
            {
                if (!Elections.IsStateElection(kvp.Key))
                {
                    var stateCode    = Elections.GetStateCodeFromKey(kvp.Key);
                    var jurisdiction = Elections.IsCountyElection(kvp.Key)
            ? Counties.GetCounty(stateCode, Elections.GetCountyCodeFromKey(kvp.Key))
            : LocalDistricts.GetLocalDistrict(stateCode, Elections.GetLocalKeyFromKey(kvp.Key));
                    mods.Add(new KeyValuePair <string, string>(kvp.Key, jurisdiction));
                }
            }

            foreach (var kvp in mods)
            {
                dictionary[kvp.Key] += ", " + kvp.Value;
            }

            return(Join(Empty,
                        table.OrderByDescending(r => r.UploadTime).Select(r =>
                                                                          $"<div data-completed=\"{r.Completed.ToString().ToLower()}\"" +
                                                                          $" data-id=\"{r.Id}\" data-rows=\"{r.Rows}\"" +
                                                                          $"{(r.Id == id ? " class=\"selected\"" : Empty)}>" +
                                                                          $"{r.Filename} ({r.UploadTime:d}: {dictionary[r.ElectionKey]}" +
                                                                          $"{(r.ElectionScope == "A" ? " et. al." : Empty)}" +
                                                                          $"{(r.JurisdictionScope == "S" ? ", state level only" : Empty)})</div>")));
        }