Exemple #1
0
        public HttpResponseMessage ExportPeerScore([FromBody] JObject expId)
        {
            try
            {
                string signature = HttpUtil.GetAuthorization(Request);
                if (signature == null || !redis.IsSet(signature))
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                bool login = redis.IsSet(signature);
                if (!login)
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                string id = redis.Get <string>(signature);

                var jsonParams = HttpUtil.Deserialize(expId);
                //string id = "16211084";
                int        expid  = Convert.ToInt32(jsonParams.expid);
                User       user   = UserDao.GetUserById(id);
                Experiment exp    = ExperimentDao.GetExperimentById(expid);
                Course     course = CourseDao.GetCourseInfoById((int)exp.course_id);
                ///权限控制,该课程助教与老师可以访问
                if (CourseDao.GetAssistantsByCourseId(course.id).Where(a => a.student_id == id).Count() == 1 || id == course.teacher_id)
                {
                    List <Assignment> assignments = AssignmentDao.GetAssignmentsByExpId(expid);
                    List <PeerResult> prResults   = new List <PeerResult>();
                    foreach (var hw in assignments)
                    {
                        PeerAssessmentDao.CorrectScore(hw.student_id, expid);
                        PeerAssessmentDao.ComputeFinalScore(hw.student_id, expid);
                        try
                        {
                            prResults.Add(new PeerResult
                            {
                                id    = hw.student_id,
                                name  = UserDao.GetUserById(hw.student_id).name,
                                score = hw.score
                            });
                        }catch (Exception e) {}
                    }
                    return(new Response(1001, "导出成功", prResults).Convert());
                }
                else
                {
                    return(new Response(2002, "无权进行操作").Convert());
                }
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Exemple #2
0
        public HttpResponseMessage GetAssignments()
        {
            try
            {
                var jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
                int expid      = Convert.ToInt32(jsonParams["experiment_id"]);

                string signature = HttpUtil.GetAuthorization(Request);
                if (signature == null || !redis.IsSet(signature))
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                bool isLogin = redis.IsSet(signature);
                if (!isLogin)
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                string id = redis.Get <string>(signature);

                User       user   = UserDao.GetUserById(id);
                Experiment exp    = ExperimentDao.GetExperimentById(expid);
                Course     course = CourseDao.GetCourseInfoById((int)exp.course_id);

                if (user.role < 2 && CourseDao.GetAssistantsByCourseId(course.id).Where(a => a.student_id == id).Count() == 0)
                {
                    return(new Response(2002, "无权访问").Convert());
                }
                if (user.role == 2 && id != course.teacher_id)
                {
                    return(new Response(2002, "无权访问").Convert());
                }
                if (user.role == 3 && user.department_id != course.department_id)
                {
                    return(new Response(2002, "无权访问").Convert());
                }

                List <Assignment> assignments = AssignmentDao.GetAssignmentsByExpId(expid);
                return(new Response(1001, "成功", assignments).Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Exemple #3
0
        public HttpResponseMessage GetHomeworkStatus([FromBody] JObject expInfo)
        {
            try
            {
                var jsonParams   = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
                int experimentId = Convert.ToInt32(jsonParams["id"]);

                string signature = HttpUtil.GetAuthorization(Request);
                if (signature == null || !redis.IsSet(signature))
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                bool login = redis.IsSet(signature);
                if (!login)
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                string id = redis.Get <string>(signature);

                //string id = "16211084";
                User       user       = UserDao.GetUserById(id);
                Experiment experiment = ExperimentDao.GetExperimentById(experimentId);
                Course     course     = CourseDao.GetCourseInfoById((int)experiment.course_id);

                //if (user.role < 2 && CourseDao.GetAssistantsByCourseId(course.id).Where(a => a.student_id == id).ToList().Count() == 0)
                //{
                //    return new Response(2002, "无权限查看助教").Convert();
                //}
                //if (user.role == 3 && user.department_id != course.department_id)
                //{
                //    return new Response(2002, "无权限查看助教").Convert();
                //}

                List <Dictionary <string, string> > ret = new List <Dictionary <string, string> >();
                Dictionary <string, string>         retData;

                List <User>       students       = CourseDao.GetStudentsById(course.id);
                List <Assignment> assignments    = AssignmentDao.GetAssignmentsByExpId(experiment.id);
                string            fileId         = "";
                string            homeworkStatus = "";
                string            uploadTime     = "";

                foreach (User stu in students)
                {
                    retData = new Dictionary <string, string>();
                    Assignment assignment = assignments.Where(a => a.student_id == stu.id).SingleOrDefault();
                    if (assignment == null)
                    {
                        fileId         = "";
                        homeworkStatus = "未提交";
                        uploadTime     = "";
                    }
                    else
                    {
                        fileId         = assignment.file;
                        homeworkStatus = "已提交";
                        uploadTime     = assignment.submit_time;
                    }
                    retData.Add("stuId", stu.id);
                    retData.Add("stuName", stu.name);
                    retData.Add("fileID", fileId == null?  "" : fileId);
                    retData.Add("homeworkStatus", homeworkStatus);
                    retData.Add("uploadTime", uploadTime);
                    retData.Add("score", assignment == null ? "" : assignment.score.ToString());
                    ret.Add(retData);
                }
                return(new Response(1001, "成功", ret).Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Exemple #4
0
        public HttpResponseMessage GetExperimentDetail([FromBody] JObject account)
        {
            try
            {
                var jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
                int id         = Convert.ToInt32(jsonParams["id"]); //experimentid

                string signature = HttpUtil.GetAuthorization(Request);
                if (signature == null || !redis.IsSet(signature))
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                //var jsonParams = HttpUtil.Deserialize(account);


                bool isLogin = redis.IsSet(signature);
                if (!isLogin)
                {
                    return(new Response(2001, "未登录账户").Convert());
                }

                string userId = redis.Get <string>(signature);

                //string userId = "16211084";
                User              user       = UserDao.GetUserById(userId);
                Experiment        experiment = ExperimentDao.GetExperimentById(id);
                Course            course     = CourseDao.GetCourseInfoById(experiment.id);
                List <Assignment> assignment = AssignmentDao.GetAssignmentsByStuId(userId);
                bool              flag       = false;
                foreach (var ass in assignment)
                {
                    if (ass.experiment_id == id)
                    {
                        flag = true;
                        break;
                    }
                }

                tmpRetExpDetail ret = new tmpRetExpDetail();
                ret.name   = experiment.name;
                ret.type   = experiment.type.GetValueOrDefault();
                ret.score  = Convert.ToInt32(experiment.vm_status);
                ret.score2 = Convert.ToInt32(experiment.vm_apply_id);
                ret.reason = experiment.vm_name;
                if (experiment.course_id != null)
                {
                    //找出其他任课老师
                    List <Assistant> AssistantTeas = CourseDao.GetAssistantsByCourseId((int)experiment.course_id).ToList();
                    List <string>    teachers      = UserDao.GetUserByRole(2).Where(a => AssistantTeas.Exists(t => t.student_id == a.id)).Select(a => a.name).ToList();

                    ret.course     = CourseDao.GetCourseInfoById((int)experiment.course_id).name;
                    ret.course_id  = (int)experiment.course_id;
                    ret.teacher    = UserDao.GetUserById(CourseDao.GetCourseInfoById((int)experiment.course_id).teacher_id).name;
                    ret.teacher_id = CourseDao.GetCourseInfoById((int)experiment.course_id).teacher_id;
                    if (teachers.Count != 0)
                    {
                        foreach (string t in teachers)
                        {
                            ret.teacher = ret.teacher + "," + t;
                        }
                    }
                }
                else
                {
                    ret.course  = "";
                    ret.teacher = "";
                }
                ret.deadline     = experiment.deadline;
                ret.peerDeadline = experiment.peer_assessment_deadline;
                ret.details      = experiment.detail;

                /**
                 * ret.sourcelist = new List<Dictionary<string, string>>();
                 * ret.sourcelist.Add(new Dictionary<string, string> {
                 *  { "source", experiment.resource },
                 *  { "name","" }//TODO:这啥属性?
                 * });
                 **/
                ret.resource           = experiment.resource;
                ret.appealDeadline     = experiment.appeal_deadline;
                ret.peerAssessmentRule = experiment.peer_assessment_rules;
                ret.peerStarted        = experiment.peer_assessment_start == true ? true:false;
                ret.startTime          = experiment.start_time;
                ret.endTime            = experiment.end_time;
                if (user.role == 1)
                {
                    ret.status = flag ? "1" : "0";
                }
                else
                {
                    ret.status = AssignmentDao.GetAssignmentsByExpId(experiment.id).Count().ToString() + "/" + CourseDao.GetMapByCourseId((int)experiment.course_id).Count().ToString();
                }

                return(new Response(1001, "获取成功", ret).Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }