Example #1
0
        /// <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));
            }
        }
Example #2
0
        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());
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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);
        }