public ActionResult Upload(Guid id, HttpPostedFileBase fileToImport, UploadPostbackModel model)
{
var assessment = this.assessmentsRepo.Open(id);
if (fileToImport == null)
{
ModelState.AddModelError("fileToImport", "No file selected");
}
if (!ModelState.IsValid)
{
var viewModel = new UploadViewModel(assessment, model);
return this.View(viewModel);
}
if (fileToImport != null)
{
using (var memoryStream = new MemoryStream())
{
fileToImport.InputStream.CopyTo(memoryStream);
memoryStream.Position = 0;
var parseResult = AssessmentParser.Parse(
memoryStream,
model.WorksheetNumber,
model.SurnameColumn,
model.ForenamesColumn,
model.ResultColumn,
model.StartRow);
foreach (var resultRow in parseResult.Results)
{
var newCandidateId = assessment.AddCandidate(resultRow.Surname, resultRow.Forenames);
if (resultRow.Result.HasValue)
{
assessment.SetCandidateResult(newCandidateId, resultRow.Result.Value);
}
}
}
}
return this.RedirectToAction("Edit", "AssessmentEditor", new { id });
}