Exemple #1
0
        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));
            }
        }
Exemple #2
0
        public IEnumerable <Assignment> GetByCompanyAndStage(string id, AssignmentStage stage)
        {
            id = this.ResolveUserId(id);

            return(Assignments.Find(assignment => assignment.CompanyId == id && assignment.Stage == stage).ToList());
        }