public async Task <object> ReportError(SubmissionErrorDto model) { //TODO: Will not work in WebApi. Convert to Webapi method /api/workitem/reporterror var id = model.Id; if (model.Files.Length == 0) { ModelState.AddModelError("", "You must include at least 1 file"); } if (!ModelState.IsValid) { var errors = new List <string>(); foreach (var state in ModelState) { foreach (var error in state.Value.Errors) { errors.Add(error.ErrorMessage); } } return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var workItem = await _context.WorkItems.Include(x => x.AssignedUser).Include(x => x.Report).FirstOrDefaultAsync(x => x.Id == id); if (workItem == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } var submission = _context.Submissions .Include(f => f.FileSpecification.GenerationGroup.Users) .FirstOrDefault(s => s.Id == workItem.Report.SubmissionId); var assignedUser = _membershipService.GetAssignee(submission.FileSpecification.GenerationGroup); var wi = submission.CompleteWork(workItem, assignedUser, generateErrorTask: true); wi.Description = model.Description; foreach (var f in model.Files) { wi.WorkItemImages.Add(new WorkItemImage() { Image = f.ConvertToByte(), }); } var notifiers = _membershipService.GetGroupMembers(Constants.SubmissionErrorNotifiers); WorkEmailer.Send(wi, submission, model.Files); WorkEmailer.SendErrorNotification(wi, submission, model.Files, notifiers); await _context.SaveChangesAsync(); return(new HttpStatusCodeResult(HttpStatusCode.OK)); }