public async Task <IActionResult> CreateAssignment(int creatorId, [FromBody] AssignmentForCreationDto assignmentForCreationDto) { var assignmentCreator = await _repo.GetUser(creatorId); if (assignmentCreator.Id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value)) { return(Unauthorized()); } assignmentForCreationDto.CreatedBy = assignmentCreator; var assignment = _mapper.Map <Assignment>(assignmentForCreationDto); if (assignment.Assigned) { assignment.DateAssigned = DateTime.Now; } var students = _repo.GetStudents(assignmentForCreationDto.StudentLevel); _repo.Add(assignment); foreach (var student in students.Result) { var userAssignment = new UserAssignment() { UserId = student.Id, AssignmentId = assignment.Id, Completed = false }; if (!student.UserAssignments.Contains(userAssignment)) { _repo.Add(userAssignment); } } if (await _repo.SaveAll()) { // _repo.SqlCmdHelper("SET IDENTITY_INSERT dbo.UserAssignments OFF"); var assignmentToReturn = _mapper.Map <AssignmentToReturnDto>(assignment); return(CreatedAtRoute("GetAssignment", new { id = assignment.Id }, assignmentToReturn)); } throw new Exception("Creating the assignment failed on save"); }