/// <summary> /// 发布作业 /// </summary> /// <param name="addTeacherTaskModel"></param> /// <returns></returns> public async Task <IActionResult> OnPost(AddOrUpdateTeacherTaskDto AddOrUpdateTeacherTaskDto) { if (!TryValidateModel(AddOrUpdateTeacherTaskDto)) { return(Page()); } //新建的时候才能选择学生 if (string.IsNullOrEmpty(AddOrUpdateTeacherTaskDto.TaskId) && AddOrUpdateTeacherTaskDto.StudentIds != null) { List <string> studentIds = new List <string>(); //StudentIds存放的是班级名称 曲线救国啊 本来是学生id的 var classNames = AddOrUpdateTeacherTaskDto.StudentIds.FirstOrDefault()?.Split(','); if (classNames == null || classNames.Length == 0) { ModelState.AddModelError(string.Empty, "没有选择班级"); return(BadRequest(ModelState)); } foreach (var className in classNames) { if (!string.IsNullOrEmpty(className)) { var schoolclass = await UserClient.GetSchoolClassByNameAsync(new UserGrpcService.NameReq { Name = className }); if (schoolclass != null) { var result = await UserClient.GetUsersByClassIdAsync(new UserGrpcService.UserNameReq { UserName = schoolclass.Id }); studentIds.AddRange(result.Users.Select(e => e.Id)); } } } AddOrUpdateTeacherTaskDto.StudentIds = studentIds; } AddOrUpdateTeacherTaskDto = ModifyContent(AddOrUpdateTeacherTaskDto); var res = await TaskService.AddOrUpdateTeacherTaskAsync(AddOrUpdateTeacherTaskDto).ConfigureAwait(false); if (res.Succeeded) { return(Content($"/Teacher/Tasks/TaskDetail/{res.Data}")); } else { ModelState.AddModelError("", res.ErrorMessage); return(BadRequest(ModelState)); } }
public async Task <IActionResult> OnGetAsync() { //表明这是新建的 if (string.IsNullOrEmpty(TaskId)) { var now = DateTime.Now.ToString(); AddOrUpdateTeacherTaskDto = new AddOrUpdateTeacherTaskDto { TaskStartTime = now, TaskEndTime = now }; } else { var taskInfo = await TaskService.GetTeacherTaskByIdAsync(TaskId).ConfigureAwait(false); if (taskInfo == null) { return(NotFound()); } AddOrUpdateTeacherTaskDto = new AddOrUpdateTeacherTaskDto { CourseId = taskInfo.CourseId, HelperId = taskInfo.HelperId, TaskContent = taskInfo.TaskContent, TaskEndTime = taskInfo.TaskEndTime.ToString(), TaskName = taskInfo.TaskName, TaskStartTime = taskInfo.TaskStartTime.ToString(), TaskId = taskInfo.Id, Files = taskInfo.Files }; } //获取教师的课程 TeacherCourses = await CourseService.GetCourses() .Where(e => e.UserId == CurUserId) .ToListAsync() .ConfigureAwait(false); //获取教师的班级 TeacherClasses = await UserDatabaseContext.TeacherClasses.Where(e => e.TeacherId == CurUserId) .Select(e => e.ClassId) .ToListAsync() .ConfigureAwait(false); return(Page()); }
/// <summary> /// 内容添加图片自适应 /// </summary> /// <param name="dto"></param> /// <returns></returns> private AddOrUpdateTeacherTaskDto ModifyContent(AddOrUpdateTeacherTaskDto dto) { if (!string.IsNullOrEmpty(dto.TaskContent)) { //给图片添加响应式(同时支持bootstrap3 和 4 !!!) 4 == img-fluid d-block mx-auto 3==img-responsive center-block var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(dto.TaskContent); var imgs = htmlDoc.DocumentNode.SelectNodes("//img"); if (imgs != null) { foreach (var img in imgs) { img.AddClass("img-fluid d-block mx-auto img-responsive center-block"); img.SetAttributeValue("style", "width:90%"); } dto.TaskContent = htmlDoc.DocumentNode.OuterHtml; } } return(dto); }
/// <summary> /// 添加或者更新教师任务同时发布给学生 /// </summary> public async Task <Result <string> > AddOrUpdateTeacherTaskAsync(AddOrUpdateTeacherTaskDto dto) { Result <string> response = new Result <string>(); do { DateTime startDateTime = DateTime.Parse(dto.TaskStartTime); DateTime endDateTime = DateTime.Parse(dto.TaskEndTime); if (startDateTime >= endDateTime) { response.ErrorMessage = "输入时间错误,开始时间不能快于结束时间"; break; } if (endDateTime <= DateTime.Now) { response.ErrorMessage = "输入时间错误,结束时间不能早于现在"; break; } if (string.IsNullOrEmpty(dto.TaskId)) { //判断是否存在这个任务,不存在就添加 //教师下面的课程下的作业不能同名 var existTask = await context.TeacherTasks.AnyAsync(e => e.TeacherId == CurUserId && e.CourseId == dto.CourseId && e.TaskName == dto.TaskName); if (existTask) { response.ErrorMessage = "任务名称已经存在"; break; } if (dto.StudentIds == null || dto.StudentIds.Count == 0) { response.ErrorMessage = "没有选择学生或班级"; break; } string taskId = Guid.NewGuid().ToString(); var entity = new TeacherTask { Id = taskId, CourseId = dto.CourseId, TeacherId = CurUserId, TaskName = dto.TaskName.Trim(), TaskContent = dto.TaskContent.Trim(), TaskWriteTime = DateTime.Now, TaskStartTime = startDateTime, TaskEndTime = endDateTime, HelperId = dto.HelperId, Files = dto.Files }; await context.TeacherTasks.AddAsync(entity); //任务推送给学生 foreach (var sid in dto.StudentIds) { await context.StudentTasks.AddAsync(new StudentTask { TaskId = taskId, StudentId = sid, Grade = 0, StudentAnswer = "", DateTime = DateTime.MinValue, IsAlreadyAnswered = false, IsTeacherModified = false, TeacherReply = "", }); } response.Data = taskId; } else { var task = await context.TeacherTasks.FirstOrDefaultAsync(e => e.Id == dto.TaskId && e.TeacherId == CurUserId); if (task == null) { response.ErrorMessage = "作业不存在,无法修改"; break; } task.TaskContent = dto.TaskContent; task.TaskName = dto.TaskName; task.CourseId = dto.CourseId; task.HelperId = dto.HelperId; task.TaskStartTime = startDateTime; task.TaskEndTime = endDateTime; task.Files = dto.Files; response.Data = task.Id; } try { await context.SaveChangesAsync(); response.Succeeded = true; } catch (Exception ex) { response.ErrorMessage = ex.GetEntityFrameworkErrorMsg(); } } while (false); return(response); }