Пример #1
0
        /// <summary>
        /// 学生的课程
        /// </summary>
        /// <param name="StuNo">学生编号</param>
        /// <returns></returns>
        public List <Course> GetStudentCourse(string StuNo)
        {
            List <Course> courseList = new List <Course>();

            try
            {
                //得到该学生的信息
                Z_Student student = StudentService.GetEntity(u => u.F_StuNo == StuNo).FirstOrDefault();
                //得到该学生所在的班级
                Z_Class cClass = ClassService.GetEntity(c => c.F_Id == student.Z_C_F_Id).FirstOrDefault();
                //查询到该学生所在的年级
                Z_Grade grade = GradeService.GetEntity(g => g.F_ID == cClass.Z_G_F_ID).FirstOrDefault();
                //得到该学生所在的专业
                Z_Profession profession = ProfessionService.GetEntity(u => u.F_ID == cClass.Z_P_F_ID).FirstOrDefault();
                //得到当前是第几周
                SchollTime schollTime = GetSchollTime();

                //查询到该专业的所有课程
                IQueryable <Z_Course> courses = GetEntity(u => u.F_Major == profession.F_ProName).Where(u => u.F_Grade == grade.F_GradeName).Where(u => u.F_Class.Contains(cClass.F_ClassName)).Where(u => u.F_SchoolYear.Contains(schollTime.SearchYear)).Where(u => u.F_Term == schollTime.Term.ToString());

                var cl = courses.OrderBy(u => u.F_Week).ThenBy(u => u.F_CourseTimeType).ToList();
                cl.ForEach(u => u.F_CourseTimeType = u.F_CourseTimeType.Substring(0, u.F_CourseTimeType.Length - 1));
                courseList = AutoMapperConfig.MapList(cl, courseList);
                ComputedTimeLength(courseList);
            }
            catch (Exception e)
            {
                throw e;
            }
            return(courseList);
        }
Пример #2
0
        /// <summary>
        /// 学生签到
        /// </summary>
        /// <param name="StuNo">学号</param>
        /// <param name="CourseNo">课程编号</param>
        /// <param name="CheckStatus">签到状态</param>
        /// <returns></returns>
        public AttendanceResult CheckIn(string AttendanceId, string StuNo, string CourseNo, string CheckStatus = null)
        {
            AttendanceResult Result = new AttendanceResult();

            try
            {
                SchollTime schollTime  = CourseService.GetSchollTime();
                DateTime   currentTime = schollTime.CurrentTime;

                Z_Student student = StudentService.GetEntity(u => u.F_StuNo == StuNo).FirstOrDefault();

                Z_Class cClass = ClassService.GetEntity(u => u.F_Id == student.Z_C_F_Id).FirstOrDefault();

                //学生今日的课程
                var courses = CourseService.GetStudentCourse(StuNo);
                courses = CourseService.SelectCourseInTheCurrentWeek(courses, schollTime);
                var course = courses.FirstOrDefault(u => u.Week == schollTime.Week && u.EnCode == CourseNo);

                if (course == null) //学生今日没有该课
                {
                    Result.ResultCode = ResultCode.Error;
                    Result.Message    = "今日没该课程,签到失败";
                }
                else
                {
                    var attendance = GetEntity(u => u.F_ID == AttendanceId).FirstOrDefault();
                    if (attendance == null)
                    {
                        Result.ResultCode = ResultCode.Error;
                        Result.Message    = "签到失败,该教师未发起签到";
                        return(Result);
                    }
                    if (course.EnCode != attendance.F_CourseNo)
                    {
                        Result.ResultCode = ResultCode.Error;
                        Result.Message    = "签到失败,与发起ID不匹配";
                        return(Result);
                    }
                    //获取该课程的节次时间
                    List <Z_SectionTime> list        = CourseService.GetSectionTime();
                    Z_SectionTime        sectionTime = list.FirstOrDefault(t => t.F_CourseTimeType.Contains(course.CourseTimeType));

                    DateTime sectionDateTime = DateTime.Parse(sectionTime?.F_Time);
                    //判断该学生是否已经签到过
                    var attend = AttendanceDetailsService
                                 .GetEntity(a => a.Z_A_F_ID == AttendanceId).FirstOrDefault(u => u.F_StuNo == StuNo);
                    if (attend != null && "未进行签到" != attend.F_Result) //已经签到过,不能再进行签到
                    {
                        if (!string.IsNullOrEmpty(CheckStatus))       //教师给学生进行改变签到状态
                        {
                            attend.F_Result = CheckStatus;
                            AttendanceDetailsService.UpdateEntityInfo(attend);
                            Result.ResultCode = ResultCode.Ok;
                            Result.Message    = "修改签到信息成功";
                            return(Result);
                        }
                        Result.ResultCode = ResultCode.Error;
                        Result.Message    = "签到失败,该节课已经签到";
                        return(Result);
                    }

                    //上课前10分钟可以发起签到
                    TimeSpan time = sectionDateTime - currentTime;
                    //attendanceDetails.F_ID = Guid.NewGuid().ToString();
                    //attendanceDetails.Z_A_F_ID = AttendanceId;
                    //attendanceDetails.F_StuName = student?.F_StuName;
                    //attendanceDetails.F_StuNo = StuNo;
                    attend.F_AttenTime = currentTime;
                    //attendanceDetails.F_ClassNo = cClass?.F_ClassNo;
                    Result.Message    = "签到成功";
                    Result.RoomNo     = course.RoomNo;
                    Result.ResultCode = ResultCode.Ok;
                    if (time.Minutes >= 0) //上课前
                    {
                        attend.F_Result = "正常签到";
                    }
                    else if (time.Minutes < 0) //迟到
                    {
                        attend.F_Result = time.Minutes < -120 ? "旷课" : "迟到";
                    }
                    AttendanceDetailsService.UpdateEntityInfo(attend);
                }
            }
            catch (Exception ex)
            {
                Result.ResultCode = ResultCode.Error;
                Result.Error      = ex;
            }
            return(Result);
        }