public async Task <object> Reject(int id) { var workItem = await _context.WorkItems.Include(u => u.AssignedUser).FirstOrDefaultAsync(x => x.Id == id); if (workItem == null) { return(NotFound()); } //TODO: Pulling too much data here var submission = await _context.Submissions .Include(x => x.FileSpecification.GenerationGroup.Users) .Include(r => r.Reports) .FirstOrDefaultAsync(x => x.CurrentReportId == workItem.ReportId); if (!submission.FileSpecification.GenerationGroup.Users.Any()) { return(BadRequest("No group members to assign next task. ")); } var wi = submission.Reject(workItem); await _context.SaveChangesAsync(); wi.Report.CurrentDocumentVersion += 1; WorkEmailer.Send(wi, submission); var dto = Mapper.Map <WorkItemViewDto>(wi); return(Ok(dto)); }
public async Task <object> Activate(int id) { var fileSpecification = await _context.FileSpecifications.FindAsync(id); if (fileSpecification == null) { return(NotFound()); } fileSpecification.IsRetired = false; //Create submission record var submission = new Submission() { DueDate = fileSpecification.DueDate, DataYear = fileSpecification.DataYear, IsLEA = fileSpecification.IsLEA, IsSEA = fileSpecification.IsSEA, IsSCH = fileSpecification.IsSCH, SubmissionState = SubmissionState.NotStarted }; fileSpecification.Submissions.Add(submission); await _context.SaveChangesAsync(); var dto = Mapper.Map <FileSpecificationViewDto>(fileSpecification); return(Ok(dto)); }
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)); }