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