public async Task <IActionResult> CreateStagePost(AssignmentStage stage, Guid forAssignment) { if (ModelState.IsValid) { var assignment = await _context.Assignments .Include(a => a.Course) .ThenInclude(c => c.Affiliates) .Include(a => a.Stages) .SingleOrDefaultAsync(a => a.ID == forAssignment); var user = await _userManager.GetUserAsync(User); if (assignment == null || ( assignment.Course.RoleFor(user) != CourseJoinTag.ROLE_INSTRUCTOR && assignment.Course.OwnerEmail != user.Email && !user.IsAdmin)) { return(NotFound()); } if (assignment.Stages.Any(s => s.Id == stage.Id)) { ViewData["Error"] = "An Assignment with that ID already exists."; ViewData["forAssignment"] = forAssignment; return(View(stage)); } if (stage.ReviewSchemaJSON != null) { try { JsonConvert.DeserializeObject <Schema>( stage.ReviewSchemaJSON ); } catch (JsonReaderException ex) { ViewData["Error"] = $"JSON Validation error: {ex}"; ViewData["forAssignment"] = forAssignment; return(View(stage)); } } stage.Assignment = assignment; stage.Seq = assignment.Stages.Count + 1; _context.Add(stage); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Details), new { id = forAssignment })); } else { ViewData["Error"] = ModelState.ValidationState.ToString(); ViewData["forAssignment"] = forAssignment; return(View(stage)); } }
public IEnumerable <Assignment> GetByCompanyAndStage(string id, AssignmentStage stage) { id = this.ResolveUserId(id); return(Assignments.Find(assignment => assignment.CompanyId == id && assignment.Stage == stage).ToList()); }