public override void OnActionExecuted(ActionExecutedContext filterContext) { ActionResult actionResult = null; var result = filterContext.Result as TableResult; if (result == null) { return; } switch (_OutputType) { case TableOutputType.JqGrid: actionResult = new JsonResult {Data = result.ToJqGridJson()}; break; case TableOutputType.Csv: var actionName = filterContext.ActionDescriptor.ActionName; actionResult = new CsvResult(result.Rows, actionName); break; case TableOutputType.Flexigrid: actionResult = new JsonResult {Data = result.ToFlexigridJson()}; break; } filterContext.Result = actionResult; }
public void writes_result() { // set-up IEnumerable <object> data = Enumerable.Repeat(new { Name = "test", Age = 20 }, 5); const string expected = "Name,Age\r\ntest,20\r\ntest,20\r\ntest,20\r\ntest,20\r\ntest,20\r\n"; CsvResult csvResult = new CsvResult(data); // execute csvResult.ExecuteResult(_controllerContext); // assert _httpContext.Response.OutputStream.Seek(0, SeekOrigin.Begin); using (StreamReader streamReader = new StreamReader(_httpContext.Response.OutputStream)) { string actual = streamReader.ReadToEnd(); actual.MustBe(expected); } }
public void handles_null() { // set-up IEnumerable <Test> data = Enumerable.Repeat(new Test { Name = "test", Age = null, StartDate = null }, 5); const string expected = "Name,Age,StartDate,Child\r\ntest,,,\r\ntest,,,\r\ntest,,,\r\ntest,,,\r\ntest,,,\r\n"; CsvResult csvResult = new CsvResult(data); // execute csvResult.ExecuteResult(_controllerContext); // assert _httpContext.Response.OutputStream.Seek(0, SeekOrigin.Begin); using (StreamReader streamReader = new StreamReader(_httpContext.Response.OutputStream)) { string actual = streamReader.ReadToEnd(); actual.MustBe(expected); } }
public override void Render(object toRender, Stream output) { CsvResult csv = new CsvResult(toRender); csv.WriteCsv(output); }
public IActionResult DownloadResults(int taskId) { var task = _db.StudentTasks.Find(taskId); if (task is null) { return(NotFound()); } var allResults = _db.StudentResults.Where(s => s.TaskId == taskId).ToList(); var results = new List <CsvResult>(); foreach (var res in allResults) { var curRes = new CsvResult { FirstName = res.Student.FirstName, LastName = res.Student.LastName, GroupName = string.Join(",", res.Student.Groups.Select(g => g.Group.Name)), Score = res.Solution.Score.ToString(), HasPlag = res.Solution.PlagiarismDetected ? "ДА" : "НЕТ", WithPlag = "-", }; if (res.Solution.PlagiarismDetected) { var plagiats = _db.PlagiarismResults.Where(p => p.TaskId == taskId && (p.SolutionId1 == res.SolutionId || p.SolutionId2 == res.SolutionId)).ToList(); var plagRes = new List <string>(); foreach (var p in plagiats) { int otherId; if (p.SolutionId1 == res.SolutionId) { otherId = p.SolutionId2; } else { otherId = p.SolutionId1; } var otherSol = _db.Solutions.Find(otherId); if (otherSol is null) { continue; } var otherStudName = otherSol.Student.LastName + " " + otherSol.Student.FirstName; plagRes.Add(otherStudName); } curRes.WithPlag = string.Join(",", plagRes.OrderBy(s => s).ToList()); } results.Add(curRes); } var file = new System.Text.StringBuilder(); file.AppendLine("Фамилия;Имя;Группа;Оценка;Наличие плагиата;С кем"); foreach (var r in results.OrderBy(r => r.LastName)) { file.AppendLine($"{r.LastName};{r.FirstName};{r.GroupName};{r.Score};{r.HasPlag};{r.WithPlag}"); } byte[] bom = System.Text.Encoding.UTF8.GetPreamble(); byte[] mas = System.Text.Encoding.UTF8.GetBytes(file.ToString()); string fileType = "application/csv"; string fileName = task.Name + ".csv"; return(File(bom.Concat(mas).ToArray(), fileType, fileName)); }