Example #1
0
 public HttpResponseMessage FindWeight()
 {
     try
     {
         string signature = HttpUtil.GetAuthorization(Request);
         if (signature == null || !redis.IsSet(signature))
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         //var jsonParams = HttpUtil.Deserialize(paInfo);
         var jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
         //Console.WriteLine(jsonParams);
         bool isLogin = redis.IsSet(signature);
         if (!isLogin)
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         string          stuid  = jsonParams["stuid"];
         string          userid = jsonParams["userid"];
         int             expid  = Convert.ToInt32(jsonParams["expid"]);
         Peer_assessment OldPa  = PeerAssessmentDao.getPeerAssessment(stuid, userid, expid);
         if (OldPa == null)
         {
             return(new Response(1001, "暂无分数", -1).Convert());
         }
         return(new Response(1001, "成功", OldPa.score).Convert());
     }
     catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(Response.Error());
     }
 }
        public HttpResponseMessage ListTerm()
        {
            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());
                }



                return(new Response(1001, "获取数据成功", DataUtil.GetDatas()).Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
        public HttpResponseMessage ResetPasswordVerify()
        {
            Dictionary <string, string> retData = new Dictionary <string, string>();

            try
            {
                var    jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
                string auth       = jsonParams["token"];

                bool exist = redis.IsSet(auth);
                if (exist)
                {
                    retData.Add("id", redis.Get <string>(auth));
                    retData.Add("token", auth);
                    return(new Response(1001, "验证成功", retData).Convert());
                }
                else
                {
                    return(new Response(1001, "请求不存在").Convert());
                }
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Example #4
0
 public HttpResponseMessage AppealPeerAssessment([FromBody] JObject appealInfo)
 {
     try
     {
         string signature = HttpUtil.GetAuthorization(Request);
         if (signature == null || !redis.IsSet(signature))
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         var  jsonParams = HttpUtil.Deserialize(appealInfo);
         bool isLogin    = redis.IsSet(signature);
         if (!isLogin)
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         string stuid = redis.Get <string>(signature);
         //string stuid = jsonParams.stuid;
         int    expid      = jsonParams.experiment_id;
         string reason     = jsonParams.reason;
         string assessorid = jsonParams.assessor_id;
         User   user       = UserDao.GetUserById(stuid);
         PeerAssessmentDao.AppealPeerAssessment(stuid, assessorid, expid, 1, reason);
         LogUtil.Log(Request, "互评申诉", stuid, stuid, user.role, "", "", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
         return(new Response(1001, "申诉成功").Convert());
     }
     catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(Response.Error());
     }
 }
Example #5
0
        public HttpResponseMessage GetExperimentByTermId()
        {
            try
            {
                string signature = HttpUtil.GetAuthorization(Request);
                if (signature == null || !redis.IsSet(signature))
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                var jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
                int termId     = Convert.ToInt32(jsonParams["termId"]);


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

                var retData = ExperimentDao.GetExperimentByTermIdAndStuId(id, termId);
                return(new Response(1001, "获取成功", ExperimentDao.GetExpRet(retData)).Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Example #6
0
 public HttpResponseMessage EndCourse([FromBody] JObject Newcourse)
 {
     try
     {
         string signature = HttpUtil.GetAuthorization(Request);
         if (signature == null || !redis.IsSet(signature))
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         Course course = new Course();
         QuickCopy.Copy <Course>(Newcourse, ref course);
         bool login = redis.IsSet(signature);
         if (!login)
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         string targetId  = redis.Get <string>(signature);
         Course oldCourse = CourseDao.GetCourseInfoById(course.id);
         if (oldCourse == null || oldCourse.teacher_id != targetId)
         {
             return(new Response(2002, "无权限修改该课程的信息").Convert());
         }
         CourseDao.ChangeCourseInfo(course);
         LogUtil.Log(Request, "修改课程", course.id.ToString(), targetId, UserDao.GetUserById(targetId).role);
         return(new Response(1001, "修改课程信息成功").Convert());
     }
     catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(new Response(4001).Convert());;
     }
 }
Example #7
0
 public HttpResponseMessage GetCourse()
 {
     Console.WriteLine("11");
     try
     {
         Console.WriteLine("22");
         string signature = HttpUtil.GetAuthorization(Request);
         if (signature == null || !redis.IsSet(signature))
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         var jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
         int id         = Convert.ToInt32(jsonParams["courseID"]);
         Console.WriteLine(id);
         bool isLogin = redis.IsSet(signature);
         if (!isLogin)
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         Course course = CourseDao.GetCourseInfoById(id);
         return(new Response(1001, "获取成功", course).Convert());
     }
     catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(Response.Error());
     }
 }
Example #8
0
 public HttpResponseMessage GetNowTerm()
 {
     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());
         }
         else
         {
             Term term = UserDao.GetNowTerm();
             return(new Response(1001, "查询成功", term).Convert());
         }
     }
     catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(new Response(4001).Convert());;
     }
 }
        public HttpResponseMessage AddStudent([FromBody] JObject studentInfo)
        {
            try
            {
                var jsonParams = HttpUtil.Deserialize(studentInfo);

                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);
                User   user = UserDao.GetUserById(id);


                if (user.role != 4 && user.role != 3)
                {
                    return(new Response(2002).Convert());
                }

                User toAdd = new User();
                QuickCopy.Copy(studentInfo, ref toAdd);
                toAdd.name      = toAdd.name.ToLower();
                toAdd.is_accept = false;
                toAdd.nick_name = toAdd.name;
                toAdd.role      = 1;
                toAdd.passwd    = ConfigurationManager.AppSettings["DefaultUserPasswd"];


                if (user.role == 3 && toAdd.department_id != null && user.department_id != toAdd.department_id)
                {
                    return(new Response(2002, "不能添加其他系的学生").Convert());
                }
                if (user.role == 4 && toAdd.department_id == null)
                {
                    return(new Response(3001, "院系不能为空").Convert());
                }
                if (user.role == 3)
                {
                    toAdd.department_id = user.department_id;
                }

                List <User> users = new List <User>();
                users.Add(toAdd);
                UserDao.AddUser(users);
                return(new Response(1001, "添加成功").Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Example #10
0
        public HttpResponseMessage dealAppeal([FromBody] JObject paInfo)
        {
            try
            {
                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);
                var    jsonParams = HttpUtil.Deserialize(paInfo);
                //string id = jsonParams.id;
                string student_id    = jsonParams.student_id;
                string assessor_id   = jsonParams.assessor_id;
                int    experiment_id = jsonParams.experiment_id;
                float  score         = Convert.ToSingle(jsonParams.score);

                User       user   = UserDao.GetUserById(id);
                Experiment exp    = ExperimentDao.GetExperimentById(experiment_id);
                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)
                {
                    Peer_assessment peer_Assessment = new Peer_assessment();
                    QuickCopy.Copy(paInfo, ref peer_Assessment);
                    peer_Assessment.appeal_status = 2;
                    Peer_assessment OldPa = PeerAssessmentDao.getPeerAssessment(student_id, assessor_id, experiment_id);
                    if (OldPa == null)
                    {
                        return(new Response(3001, "参数无效").Convert());
                    }
                    if (PeerAssessmentDao.ChangePeerAssessmentInfo(peer_Assessment) == 1)
                    {
                        return(new Response(1001, "Success").Convert());
                    }
                    else
                    {
                        throw new Exception("数据库操作异常");
                    }
                }
                else
                {
                    return(new Response(2002, "无权访问").Convert());
                }
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Example #11
0
 public HttpResponseMessage getStusWithoutVMByExpId([FromBody] JObject expInfo)
 {
     try
     {
         List <Dictionary <string, string> > retData = new List <Dictionary <string, string> >();
         Dictionary <string, string>         stuidInfo;
         string signature = HttpUtil.GetAuthorization(Request);
         if (signature == null || !redis.IsSet(signature))
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         var  jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
         bool isLogin    = redis.IsSet(signature);
         if (!isLogin)
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         string     userid = redis.Get <string>(signature);
         int        expid  = Convert.ToInt32(jsonParams["expid"]);
         Experiment exp    = ExperimentDao.GetExperimentById(expid);
         if (exp.course_id == null)
         {
             return(new Response(1001, "该实验没有所属课程").Convert());
         }
         int  courseId = (int)ExperimentDao.GetExperimentById(expid).course_id;
         User user     = UserDao.GetUserById(userid);
         if ((user.role == 2 && CourseDao.GetCourseInfoById(courseId).teacher_id == user.id) || (user.role == 1 && CourseDao.GetAssistantsByCourseId(courseId).Where(a => a.student_id == user.id).Count() != 0))
         {
             List <User>     stulist = CourseDao.GetStudentsById(courseId);
             List <VMConfig> vmlist  = VMDao.GetVMsByVmName(exp.vm_name);
             foreach (User stu in stulist)
             {
                 if (vmlist.Find(vm => vm.student_id.Equals(stu.id)) == null)
                 {
                     stuidInfo = new Dictionary <string, string>
                     {
                         { "id", stu.id },
                     };
                     retData.Add(stuidInfo);
                 }
             }
             return(new Response(1001, "Success", retData).Convert());
         }
         else
         {
             return(new Response(2001, "没有权限获取信息").Convert());
         }
     }
     catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(Response.Error());
     }
 }
Example #12
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());
            }
        }
Example #13
0
 public HttpResponseMessage UploadAssignment([FromBody] JObject assignmentInfo)
 {
     try
     {
         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);
         var        jsonParams             = HttpUtil.Deserialize(assignmentInfo);
         int        expID                  = jsonParams.exp_id;
         string     file                   = jsonParams.file;
         Experiment experiment             = ExperimentDao.GetExperimentById(expID);
         List <Course_student_mapping> csm = CourseDao.GetMapByStudentId(id).Where(m => m.course_id == experiment.course_id).ToList();
         if (csm.Count > 0)
         {
             Assignment assignment = new Assignment
             {
                 experiment_id = experiment.id,
                 student_id    = id,
                 submit_time   = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"),
                 is_standard   = 0,
                 file          = file
             };
             Assignment oldAssignment = AssignmentDao.GetAssignmentsByStuIdAndExpId(id, expID);
             if (oldAssignment != null)
             {
                 LogUtil.Log(Request, "重新提交作业", expID.ToString(), id, 1, "", "", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                 AssignmentDao.DeleteAssignment(oldAssignment.id);
                 AssignmentDao.AddAssignment(assignment);
                 return(new Response(1001, "重新提交作业成功").Convert());
             }
             else
             {
                 LogUtil.Log(Request, "提交作业", expID.ToString(), id, 1, "", "", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                 AssignmentDao.AddAssignment(assignment);
                 return(new Response(1001, "提交作业成功").Convert());
             }
         }
         return(new Response(2002).Convert());
     }
     catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(Response.Error());
     }
 }
        public HttpResponseMessage ActivateAccountVerify([FromBody] JObject accountInfo)
        {
            try
            {
                var    jsonParams = HttpUtil.Deserialize(accountInfo);
                string id         = jsonParams.id;
                string auth       = jsonParams.token;
                string password   = jsonParams.password;
                if (!redis.IsSet(auth))
                {
                    return(new Response(3001, "请求不存在").Convert());
                }
                if (!(id == redis.Get <string>(auth)))
                {
                    return(new Response(2002, "无权修改此账户的密码").Convert());
                }

                User user = UserDao.GetUserById(id);
                if (user == null)
                {
                    return(new Response(1001, "用户不存在").Convert());
                }

                if (user.passwd == password)
                {
                    return(new Response(1001, "不能与默认密码相同").Convert());
                }

                int res1 = UserDao.ChangePwd(id, password);
                if (res1 == 1)
                {
                    int res2 = UserDao.ChangeIsAccept(id);
                    if (res2 == 1)
                    {
                        LogUtil.Log(Request, "激活账户", id, id, user.role);
                        return(new Response(1001, "成功激活账户").Convert());
                    }
                    else
                    {
                        return(new Response(1001, "账户已激活").Convert());
                    }
                }
                else
                {
                    return(new Response(1001, "不能与默认密码相同").Convert());
                }
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Example #15
0
        public HttpResponseMessage AdminGetAllExperiments()
        {
            try
            {
                string signature = HttpUtil.GetAuthorization(Request);
                if (signature == null || !redis.IsSet(signature))
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                var jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
                int termId     = 0;
                int courseId   = 0;
                if (jsonParams.ContainsKey("termId"))
                {
                    termId = Convert.ToInt32(jsonParams["termId"]);
                }
                if (jsonParams.ContainsKey("courseId"))
                {
                    courseId = Convert.ToInt32(jsonParams["courseId"]);
                }

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

                //string id = "admin";
                User user = UserDao.GetUserById(id);

                if (user.role < 3)
                {
                    return(new Response(2002, "权限不足").Convert());
                }

                List <Experiment> experiments = ExperimentDao.GetExperimentByCourseIdAndTermId(courseId, termId);

                if (user.role == 3)
                {
                    List <Course> courses = CourseDao.GetCourseByDepId(user.department_id);
                    experiments = experiments.Where(e => courses.Exists(c => c.id == e.course_id)).ToList();
                }
                return(new Response(1001, "获取成功", ExperimentDao.GetExpRet(experiments)).Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Example #16
0
        public HttpResponseMessage AddPeerAssessment([FromBody] JObject peerAssessment)
        {
            try
            {
                string signature = HttpUtil.GetAuthorization(Request);
                if (signature == null || !redis.IsSet(signature))
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                var  jsonParams = HttpUtil.Deserialize(peerAssessment);
                bool isLogin    = redis.IsSet(signature);
                if (!isLogin)
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                string          id              = redis.Get <string>(signature);
                string          stuid           = jsonParams.student_id;
                int             expid           = jsonParams.experiment_id;
                Peer_assessment peerAssessment2 = new Peer_assessment();
                peerAssessment2.assessor_id = id;
                QuickCopy.Copy(peerAssessment, ref peerAssessment2);
                Peer_assessment OldPa = PeerAssessmentDao.getPeerAssessment(stuid, id, expid);
                if (OldPa != null)
                {
                    if (PeerAssessmentDao.ChangePeerAssessmentInfo(peerAssessment2) == 1)
                    {
                        return(new Response(1001, "Success").Convert());
                    }
                    else
                    {
                        return(new Response(1001, "数据未变").Convert());
                    }
                }

                Peer_assessment peer_Assessment = new Peer_assessment();
                peer_Assessment.assessor_id = id;
                QuickCopy.Copy(peerAssessment, ref peer_Assessment);
                Experiment exp = ExperimentDao.GetExperimentById(peer_Assessment.experiment_id);
                //if (!HttpUtil.IsTimeLater(exp.peer_assessment_deadline))
                //return new Response(2002, "互评已结束").Convert();
                PeerAssessmentDao.AddPeerAssessment(peer_Assessment);
                LogUtil.Log(Request, "作业评分", peer_Assessment.student_id, peer_Assessment.assessor_id, 1, "", "", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"));
                return(new Response(1001, "Success").Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
        public HttpResponseMessage DeleteUser([FromBody] JObject userAccount)
        {
            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);

                //string id = "16211084";
                User user = UserDao.GetUserById(id);
                if (user.role != 3 && user.role != 4)
                {
                    return(new Response(2002).Convert());
                }

                var           jsonParams = HttpUtil.Deserialize(userAccount);
                List <string> userIds    = jsonParams.userid.ToObject <List <string> >();

                List <User> users = UserDao.FindUserByIds(userIds);

                if (user.role == 3)//院系管理员不能删院系管理员,系外教师和学生
                {
                    if (users.Exists(u => u.role >= 3))
                    {
                        return(new Response(2002).Convert());
                    }
                    if (users.Exists(u => (u.role <= 2 && u.department_id != user.department_id)))
                    {
                        return(new Response(2002).Convert());
                    }
                }

                UserDao.DeleteUser(users);
                return(new Response(1001, "删除成功").Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
                //return new Response(4001, e.Message).Convert();
            }
        }
Example #18
0
        public HttpResponseMessage GetCourseListByStuIdAndTerm([FromBody] JObject stuIdAndTerm)
        {
            List <Dictionary <string, string> > retData = new List <Dictionary <string, string> >();
            Dictionary <string, string>         courseInfo;

            try
            {
                string signature = HttpUtil.GetAuthorization(Request);
                if (signature == null || !redis.IsSet(signature))
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                var    jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
                string term       = jsonParams["term"];
                bool   isLogin    = redis.IsSet(signature);
                if (!isLogin)
                {
                    return(new Response(2001, "未登录账户").Convert());
                }
                string        targetId   = redis.Get <string>(signature);
                int           termId     = CourseDao.GetTermByName(term).id;
                List <Course> courseList = CourseDao.GetCoursesByStuIdAndTermId(targetId, termId).ToList();
                foreach (Course c in courseList)
                {
                    courseInfo = new Dictionary <string, string>
                    {
                        { "id", c.id.ToString() },
                        { "name", c.name },
                    };
                    if (c.term_id == null)
                    {
                        courseInfo.Add("semester", "");
                    }
                    else
                    {
                        courseInfo.Add("semester", CourseDao.GetTermById((int)c.term_id).name);
                    }
                    courseInfo.Add("teacher", UserDao.GetUserById(c.teacher_id).name);
                    courseInfo.Add("department", CourseDao.GetDepartmentById(c.department_id).name);
                    retData.Add(courseInfo);
                }
                return(new Response(1001, "获取成功", retData).Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Example #19
0
 public HttpResponseMessage PeerAssessmentDetails([FromBody] JObject peerDetail)
 {
     try
     {
         string signature = HttpUtil.GetAuthorization(Request);
         if (signature == null || !redis.IsSet(signature))
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         //var jsonParams = HttpUtil.Deserialize(peerDetail);
         var jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
         List <Dictionary <string, string> > retData = new List <Dictionary <string, string> >();
         Dictionary <string, string>         PaInfo  = new Dictionary <string, string>();
         bool isLogin = redis.IsSet(signature);
         if (!isLogin)
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         string                 userid           = redis.Get <string>(signature);// jsonParams.stuid;//
         int                    expid            = Convert.ToInt32(jsonParams["expid"]);
         Assignment             assignment       = AssignmentDao.GetAssignmentsByStuIdAndExpId(userid, expid);
         int                    cnt              = 0;
         List <Peer_assessment> peer_Assessments = PeerAssessmentDao.getPeerAssessmentByExpId(userid, expid);
         foreach (Peer_assessment pa in peer_Assessments)
         {
             PaInfo = new Dictionary <string, string>
             {
                 { "assessorId", pa.assessor_id.ToString() },
                 { "score", pa.origin_score.ToString() },
                 { "reason", pa.appeal_reason },
                 { "appealStatus", pa.appeal_status.ToString() },
             };
             retData.Add(PaInfo);
             cnt++;
             if (cnt >= 3 && assignment.is_standard == 2)
             {
                 break;
             }
         }
         return(new Response(1001, "Success", retData).Convert());
         //todo:body.id
     }
     catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(Response.Error());
     }
 }
 public HttpResponseMessage GetLogs()
 {
     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);
         User   user = UserDao.GetUserById(id);
         if (user.role != 4)
         {
             return(new Response(2002).Convert());
         }
         List <System_log> logList;
         var jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
         using (var logs = new Logger())
         {
             if (jsonParams.Count > 0)
             {
                 int page = int.Parse(jsonParams["page"]);
                 int size = int.Parse(jsonParams["size"]);
                 int count;
                 logList = logs.Logs.Pagination(l => (-l.id), page, size, out count).ToList();
                 Dictionary <string, object> ret = new Dictionary <string, object>();
                 ret.Add("data", AddUserNameIntoLogList(logList));
                 ret.Add("count", count);
                 return(new Response(1001, "成功", ret).Convert());
             }
             else
             {
                 logList = logs.Logs.ToList();
                 return(new Response(1001, "成功", AddUserNameIntoLogList(logList)).Convert());
             }
         }
     }
     catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(Response.Error());
     }
 }
        public HttpResponseMessage Register([FromBody] JObject account)
        {
            try
            {
                var jsonParams = HttpUtil.Deserialize(account);

                string id    = jsonParams.id;
                string pwd   = ConfigurationManager.AppSettings["DefaultUserPasswd"];
                string name  = jsonParams.name;
                string email = jsonParams.email;

                pwd = HttpUtil.Encrypt(pwd, System.Text.Encoding.UTF8);

                User user = UserDao.GetUserById(id.ToLower());
                if (user == null)
                {
                    return(new Response(1001, "用户不存在").Convert());
                }
                if (user.is_accept != null)
                {
                    return(new Response(1001, "该用户已经激活").Convert());
                }
                user.passwd    = pwd;
                user.name      = name;
                user.email     = jsonParams.email;
                user.is_accept = false;
                UserDao.ChangeInfo(user);

                if (user.email != null)
                {
                    Dictionary <string, string> retData = new Dictionary <string, string>();
                    string uuid = System.Guid.NewGuid().ToString();
                    redis.Set(uuid, id, 60);
                    retData.Add("id", id);
                    retData.Add("token", uuid);
                    string href = ConfigurationManager.AppSettings["webBase"] + "/security/activateAccount" + "?id=" + user.id + "&token=" + uuid;
                    string res  = EmailUtil.SendEmail("账户激活", "请点击以下网址来激活用户", user.id, 1, href);
                    //todo: 发送激活邮件
                    return(new Response(1001, "发送激活邮件", retData).Convert());
                }
                return(new Response(1001, "成功激活").Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(new Response(4001).Convert());
            }
        }
Example #22
0
        public HttpResponseMessage StartPeerAssessment([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 (exp.peer_assessment_start == true)
                {
                    return(new Response(3001, "互评已开启,请勿重复操作").Convert());
                }
                ///权限控制,该课程助教与老师可以访问
                if (CourseDao.GetAssistantsByCourseId(course.id).Where(a => a.student_id == id).Count() == 1 || id == course.teacher_id)
                {
                    AssignmentDao.SetStandardAssignment(expid, 4);
                    AssignmentDao.AssignPeerAsssessment(expid);
                    exp.peer_assessment_start = true;
                    ExperimentDao.ChangeExperimentInfo(exp);
                    return(new Response(1001, "开启成功").Convert());
                }
                else
                {
                    return(new Response(2002, "无权开启互评").Convert());
                }
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Example #23
0
 public HttpResponseMessage DeleteTerm([FromBody] JObject terminfo)
 {
     try
     {
         string signature = HttpUtil.GetAuthorization(Request);
         if (signature == null || !redis.IsSet(signature))
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         var    jsonParams = HttpUtil.Deserialize(terminfo);
         string termname   = jsonParams.name;
         bool   login      = redis.IsSet(signature);
         if (!login)
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         string targetId = redis.Get <string>(signature);
         if (UserDao.GetUserById(targetId).role != 4)
         {
             return(new Response(2002, "无权限删除学期信息").Convert());
         }
         else
         {
             Term t = CourseDao.GetTermByName(termname);
             if (t != null)
             {
                 if (CourseDao.GetAllCourse().Where(c => c.term_id == t.id).Count() > 0)
                 {
                     return(new Response(1002, "该学期仍有课程,无法删除").Convert());
                 }
                 int res = UserDao.DeleteTerm(t);
                 if (res == 1)
                 {
                     LogUtil.Log(Request, "删除学期", t.id.ToString(), targetId, UserDao.GetUserById(targetId).role);
                     return(new Response(1002, "删除学期成功").Convert());
                 }
             }
             return(new Response(1002, "删除学期失败").Convert());
         }
     }
     catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(new Response(4001).Convert());;
     }
 }
        public HttpResponseMessage ActivateAccount()
        {
            Dictionary <string, string> retData = new Dictionary <string, string>();

            try
            {
                var    jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
                string email      = jsonParams["email"];

                var tmp = Request.Headers;

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

                User user = UserDao.GetUserById(targetId);
                if (user == null)
                {
                    return(new Response(1001, "用户不存在").Convert());
                }

                UserDao.ChangeInfo(user.id, user.name, email);
                string uuid = System.Guid.NewGuid().ToString();
                redis.Set(uuid, targetId, 60);
                retData.Add("id", targetId);
                retData.Add("token", uuid);
                string href = ConfigurationManager.AppSettings["webBase"] + "/security/activateAccount" + "?id=" + user.id + "&token=" + uuid;
                string res  = EmailUtil.SendEmail("账户激活", "请点击以下网址来激活用户", user.id, 1, href);
                //todo: 发送激活邮件
                return(new Response(1001, "发送激活邮件", retData).Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Example #25
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());
            }
        }
        public HttpResponseMessage ResetPasswordChange([FromBody] JObject account)
        {
            Dictionary <string, string> retData = new Dictionary <string, string>();

            try
            {
                var    jsonParams = HttpUtil.Deserialize(account);
                string id         = jsonParams.id;
                string auth       = jsonParams.token;
                string password   = jsonParams.password;

                if (!redis.IsSet(auth))
                {
                    return(new Response(3001, "请求不存在").Convert());
                }

                if (!(id == redis.Get <string>(auth)))
                {
                    return(new Response(2001, "无权修改此账户的密码").Convert());
                }

                User user = UserDao.GetUserById(id);
                if (user == null)
                {
                    return(new Response(1001, "用户不存在").Convert());
                }

                redis.Delete(auth);
                int res = UserDao.ChangePwd(id, password);
                if (res == 1)
                {
                    LogUtil.Log(Request, "修改密码", id, id, user.role);
                    return(new Response(1001, "成功修改密码").Convert());
                }
                else
                {
                    return(new Response(1001, "不能与原密码相同").Convert());
                }
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }
Example #27
0
 public HttpResponseMessage AddTerm([FromBody] JObject newTerm)
 {
     try
     {
         string signature = HttpUtil.GetAuthorization(Request);
         if (signature == null || !redis.IsSet(signature))
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         Term term = new Term();
         QuickCopy.Copy <Term>(newTerm, ref term);
         bool login = redis.IsSet(signature);
         if (!login)
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         string targetId = redis.Get <string>(signature);
         if (UserDao.GetUserById(targetId).role != 4)
         {
             return(new Response(2002, "无权限添加学期信息").Convert());
         }
         else
         {
             Term temp = CourseDao.GetTermByName(term.name);
             if (temp != null)
             {
                 return(new Response(1002, "添加学期失败").Convert());
             }
             int res = UserDao.AddTerm(term);
             if (res == 1)
             {
                 Term t = CourseDao.GetTermByName(term.name);
                 LogUtil.Log(Request, "添加学期", t.id.ToString(), targetId, UserDao.GetUserById(targetId).role);
                 return(new Response(1001, "添加学期成功").Convert());
             }
             return(new Response(1001, "添加学期失败").Convert());
         }
     }
     catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(new Response(4001).Convert());;
     }
 }
 public HttpResponseMessage Logout()
 {
     try
     {
         string signature = HttpUtil.GetAuthorization(Request);
         if (signature == null || !redis.IsSet(signature))
         {
             return(new Response(2001, "未登录账户").Convert());
         }
         string id = redis.Get <string>(signature);
         redis.Delete(id);
         redis.Delete(signature);
         return(new Response(1001, "注销成功").Convert());
     }catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(Response.Error());
     }
 }
Example #29
0
 public HttpResponseMessage PreviewFile()
 {
     try
     {
         var    jsonParams = Request.GetQueryNameValuePairs().ToDictionary(k => k.Key, v => v.Value);
         string id         = jsonParams["id"];
         File   file       = AssignmentDao.GetFileById(id);
         if (file.preview == null)
         {
             return(new Response(3001, "无法生成预览").Convert());
         }
         return(HttpUtil.DownloadFile(file.preview, "preview.pdf", false));
     }
     catch (Exception e)
     {
         ErrorLogUtil.WriteLogToFile(e, Request);
         return(Response.Error());
     }
 }
        public HttpResponseMessage AdminChangeUserPassword([FromBody] JObject account)
        {
            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);

                //string id = "16211084";
                User user = UserDao.GetUserById(id);
                if (user.role != 3 && user.role != 4)
                {
                    return(new Response(2002).Convert());
                }

                User toAdd = new User();
                QuickCopy.Copy(account, ref toAdd);

                User target = UserDao.GetUserById(toAdd.id);

                if (user.role == 3 && (target.role >= 3 || user.department_id != target.department_id))
                {
                    return(new Response(2002).Convert());
                }

                UserDao.ChangeInfo(toAdd);
                return(new Response(1001, "修改成功").Convert());
            }
            catch (Exception e)
            {
                ErrorLogUtil.WriteLogToFile(e, Request);
                return(Response.Error());
            }
        }