public async Task <ActionResult <AssignmentTaskDTO> > PostTask(AssignmentTaskCreateRequest taskRequest) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var assignmentTask = taskMapper.MapTaskCreateRequest(taskRequest); var assginment = await _context.Assignments.FindAsync(assignmentTask.AssignmentId); if (ShouldCustomAssignStudent(taskRequest, assginment)) { var studentUser = await _context.Students.FirstOrDefaultAsync(s => s.UserId == taskRequest.AssignedTo); if (studentUser is null) { ModelState.AddModelError("assignedTo", "The selected student to be assigned could not be found."); return(BadRequest(ModelState)); } assignmentTask.StudentsAssigned.Add(new StudentAssignedTask { State = StudentAssignedTaskState.Assigned, Task = assignmentTask, StudentId = taskRequest.AssignedTo }); } _context.AssignmentTasks.Add(assignmentTask); await _context.SaveChangesAsync(); return(taskMapper.MapTask(assignmentTask)); }
public AssignmentTask MapTaskCreateRequest(AssignmentTaskCreateRequest task) { return(new AssignmentTask { Id = Guid.Empty, AssignmentId = task.AssignmentId, Name = task.Name, Description = task.Description }); }
private bool ShouldCustomAssignStudent(AssignmentTaskCreateRequest taskRequest, Assignment assginment) { return(assginment.Type == AssignmentType.CustomAssignedTasks && !string.IsNullOrWhiteSpace(taskRequest.AssignedTo)); }