Example #1
0
        public static object getTwis(string token)
        {
            NBackendContext ctx     = new NBackendContext();
            int             user_id = JwtManager.DecodeToken(token);

            return(ListToObj(ctx, getAllTwis(ctx, user_id)));
        }
Example #2
0
        //获取班级的所有广播
        private static List <object> getBroadcastsOfClass(string token, object json)
        {
            try
            {
                int user_id = JwtManager.DecodeToken(token);
                //做验证

                var    body      = JsonConverter.Decode(json);
                int    sec_id    = int.Parse(body["sec_id"]);
                int    course_id = int.Parse(body["course_id"]);
                int    year      = int.Parse(body["year"]);
                string semester  = body["semester"];

                NBackendContext ctx = new NBackendContext();

                var class_bros = _getBroadcastsOfClass(ctx, sec_id, course_id, year, semester);

                if (class_bros == null)
                {
                    return(new List <object>());
                }
                return(ListToObj(class_bros));
            }
            catch (Exception e)
            {
                return(null);
            }
        }
Example #3
0
        //删除广播
        public static object deleteBroadcast(string token, object json)
        {
            try
            {
                var body         = JsonConverter.Decode(json);
                int broadcast_id = int.Parse(body["broadcast_id"]);
                int user_id      = JwtManager.DecodeToken(token);

                NBackendContext ctx = new NBackendContext();

                var q  = ctx.TeacherBroadcasts.Where(tb => tb.broadcastId == broadcast_id && tb.teacherId == user_id);
                var q1 = ctx.Broadcasts.Where(bro => bro.BroadcastId == broadcast_id);

                if (!q.Any())
                {
                    return(JsonConverter.Error(400, "该广播不存在或者你没有创建过该广播"));
                }
                var _tb       = q.Single();
                var broadcast = q1.Single();
                ctx.TeacherBroadcasts.Remove(_tb);
                ctx.Broadcasts.Remove(broadcast);

                ctx.SaveChanges();
                return(JsonConverter.BuildResult(null));
            }
            catch (Exception e)
            {
                return(JsonConverter.Error(400, e.Message));
            }
        }
Example #4
0
        //获取某个课程的所有题目
        public static object getQuestionsOfCourse(string token, object json)
        {
            try
            {
                int user_id   = JwtManager.DecodeToken(token);
                var body      = Helper.JsonConverter.Decode(json);
                int course_id = int.Parse(body["course_id"]);

                NBackendContext ctx       = new NBackendContext();
                var             q         = ctx.Questions.Where(qu => qu.courseId == course_id);
                List <Question> questions = q.ToList();

                List <object> data = new List <object>();

                foreach (Question qu in questions)
                {
                    data.Add(new
                    {
                        question_id = qu.QuestionId,
                        course_id   = qu.courseId,
                        chapter     = qu.chapter,
                        content     = qu.content,
                        answer      = qu.answer,
                        options     = qu.options,
                    });
                }

                return(Helper.JsonConverter.BuildResult(data));
            }
            catch (Exception e)
            {
                return(Helper.JsonConverter.Error(400, "信息填写有误?"));
            }
        }
Example #5
0
        public IHttpActionResult RandomQuestion()
        {
            HttpRequestMessage message  = this.Request;
            String             token    = message.Headers.Authorization.ToString().Substring(7);
            String             username = JwtManager.DecodeToken(token);
            User foundUser = db.User.Where(a => a.UserName.Equals(username)).FirstOrDefault();

            if (foundUser == null)
            {
                return(NotFound());
            }
            if (!(foundUser.UserType.Equals("admin") || foundUser.UserType.Equals("presenter")))
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Not Authorized")));
            }
            int total = db.Questions.Count();
            int rno   = rnd.Next(0, total);

            while (QuestionsController.ignoreRand.Contains(rno))
            {
                if (QuestionsController.counter < total)
                {
                    rno = rnd.Next(0, total);
                }
                else
                {
                    return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NoContent, "No Questions found")));
                }
            }
            Question question = db.Questions.OrderBy(x => x.QId).Skip(rno).FirstOrDefault();

            ignoreRand.Add(rno);
            counter++;
            return(Ok(question));
        }
        public IHttpActionResult PostUser(User user)
        {
            HttpRequestMessage message  = this.Request;
            String             token    = message.Headers.Authorization.ToString().Substring(7);
            String             username = JwtManager.DecodeToken(token);
            User foundUser = db.User.Where(a => a.UserName.Equals(username)).FirstOrDefault();

            if (foundUser == null)
            {
                return(NotFound());
            }
            if (!foundUser.UserType.Equals("admin"))
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Not Authorized")));;
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                db.User.Add(user);
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Name Already exists")));
            }
            catch (Exception)
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Cant Process your request")));
            }
            return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.OK, "New User Added")));
        }
Example #7
0
        //学生提交试卷
        public static object finishExam(string token, object json)
        {
            int user_id = JwtManager.DecodeToken(token);

            NBackendContext ctx  = new NBackendContext();
            User            user = UserBiz.getUserById(ctx, user_id);

            //var body = Helper.JsonConverter.Decode(json);


            try
            {
                var body      = JsonConvert.DeserializeObject <Dictionary <string, object> >(json.ToString());
                var exam_id   = (int)(long)body["exam_id"];
                var questions = (JArray)body["questions"];

                //var _body = JsonConvert.DeserializeObject<List<object>>(questions);

                List <object> ques_ans = new List <object>();

                int total_score = 0;
                foreach (var qu in questions)
                {
                    IDictionary <string, JToken> rates = (JObject)qu;
                    // Explicit typing just for "proof" here
                    Dictionary <string, object> __body =
                        rates.ToDictionary(pair => pair.Key,
                                           pair => (object)pair.Value);

                    int question_id = ((JValue)__body["question_id"]).Value <int>();

                    string answer = ((JValue)__body["answer"]).Value <string>();

                    Question question = getQuestionById(ctx, question_id);
                    if (question.answer.Equals(answer))
                    {
                        int single_score = getScoreById(ctx, question_id, exam_id);
                        total_score += single_score;
                    }
                }

                ctx.TakesExams.Add(new TakesExam
                {
                    StudentId = user_id,
                    ExamId    = (int)exam_id,
                    score     = total_score
                });
                ctx.SaveChanges();

                return(Helper.JsonConverter.BuildResult(null));
            }
            catch (Exception e)
            {
                //throw e;
                return(Helper.JsonConverter.Error(400, "提交失败"));
            }
        }
Example #8
0
        public static object postTwi(string token, object json)
        {
            Dictionary <string, string> body = JsonConverter.Decode(json);
            NBackendContext             ctx  = new NBackendContext();
            int user_id = JwtManager.DecodeToken(token);

            //var user_id = int.Parse(body["user_id"]);
            if (UserBiz.getUserById(ctx, user_id) == null)
            {
                return(Helper.JsonConverter.Error(400, "你这个人是谁哦"));
            }

            var content = body["content"];
            var time    = body["time"];
            var image   = body["image"];

            Twitter twi = new Twitter
            {
                //TwitterId = 1,
                userId  = user_id,
                content = content,
                time    = time,
                image   = image
            };


            ctx.Twitters.Add(twi);
            try
            {
                ctx.SaveChanges();
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (var ve in eve.ValidationErrors)
                    {
                        Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                          ve.PropertyName, ve.ErrorMessage);
                    }
                }
                throw;
            }

            var data = new
            {
                twitter_id = twi.TwitterId,
                user_id    = twi.userId,
                image      = twi.image,
                time       = twi.time,
                content    = twi.content,
            };

            return(JsonConverter.BuildResult(data));
        }
Example #9
0
        public IHttpActionResult PutQuestion(int id, Question question)
        {
            HttpRequestMessage message  = this.Request;
            String             token    = message.Headers.Authorization.ToString().Substring(7);
            String             username = JwtManager.DecodeToken(token);
            User foundUser = db.User.Where(a => a.UserName.Equals(username)).FirstOrDefault();

            if (foundUser == null)
            {
                return(NotFound());
            }
            if (!foundUser.UserType.Equals("admin"))
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Not Authorized")));
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != question.QId)
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Wrong Id")));
            }

            //db.Entry(question).State = EntityState.Modified;
            db.MarkAsModified(question);

            try
            {
                db.SaveChanges();
                return(Ok("product Added"));
            }
            catch (DbUpdateException)
            {
                if (!QuestionExists(id))
                {
                    return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Name already exists")));
                }
                else
                {
                    throw;
                }
            }
            catch (Exception)
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Cant Process your request")));
            }
        }
        public IHttpActionResult PutUser(int id, User user)
        {
            HttpRequestMessage message  = this.Request;
            String             token    = message.Headers.Authorization.ToString().Substring(7);
            String             username = JwtManager.DecodeToken(token);
            User foundUser = db.User.Where(a => a.UserName.Equals(username)).FirstOrDefault();

            if (foundUser == null)
            {
                return(NotFound());
            }
            if (!foundUser.UserType.Equals("admin"))
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Not authoriZed")));
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != user.UserId)
            {
                return(BadRequest());
            }

            db.Entry(user).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (!UserExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Name already exists")));
                }
            }
            catch (Exception)
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Cant Process your request")));
            }

            return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.OK, "User Updated")));
        }
        public IQueryable <Team> GetTeams()
        {
            HttpRequestMessage message  = this.Request;
            String             token    = message.Headers.Authorization.ToString().Substring(7);
            String             username = JwtManager.DecodeToken(token);
            User foundUser = db.User.Where(a => a.UserName.Equals(username)).FirstOrDefault();

            if (foundUser == null)
            {
                return(null);
            }
            if (!(foundUser.UserType.Equals("admin") || foundUser.UserType.Equals("presenter")))
            {
                return(null);
            }
            return(db.Teams);
        }
Example #12
0
        //获取班级的所有试卷基本信息
        public static object getExamsOfClass(string token, object json)
        {
            try
            {
                var body = Helper.JsonConverter.Decode(json);

                int    sec_id    = int.Parse(body["sec_id"]);
                int    course_id = int.Parse(body["course_id"]);
                string semester  = body["semester"];
                int    year      = int.Parse(body["year"]);

                NBackendContext ctx     = new NBackendContext();
                int             user_id = JwtManager.DecodeToken(token);

                User user = UserBiz.getUserById(ctx, user_id);
                if (user == null)
                {
                    return(Helper.JsonConverter.Error(400, "查无此人"));
                }

                //需要验证该学生、老师是否属于某个班级???不用,查出来的只有这个班级

                var q = ctx.Exams.Where(exam => exam.secId == sec_id &&
                                        exam.courseId == course_id && exam.semester == semester &&
                                        exam.year == year
                                        );

                var data = ListToObj(ctx, q.ToList(), user);

                if (data == null)
                {
                    return(Helper.JsonConverter.Error(400, "你好像没权限(^U^)ノ~YO"));
                }
                else
                {
                    return(Helper.JsonConverter.BuildResult(data));
                }
            }
            catch (Exception e)
            {
                return(Helper.JsonConverter.Error(400, "获取班级信息时出错"));
            }
        }
        public IHttpActionResult GetCurrentUser()
        {
            HttpRequestMessage message  = this.Request;
            String             token    = message.Headers.Authorization.ToString().Substring(7);
            String             username = JwtManager.DecodeToken(token);
            User foundUser = db.User.Where(a => a.UserName.Equals(username)).FirstOrDefault();

            if (foundUser == null)
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "No User Found")));;
            }
            if ((foundUser.UserType.Equals("admin") || foundUser.UserType.Equals("presenter")))
            {
                return(Ok(foundUser.UserName));
            }
            else
            {
                return(null);
            }
        }
Example #14
0
        public static object deleteTwi(string token, object json)
        {
            int user_id = JwtManager.DecodeToken(token);
            var body    = JsonConverter.Decode(json);
            int twi_id  = int.Parse(body["twitter_id"]);

            NBackendContext ctx = new NBackendContext();
            var             q   = ctx.Twitters.Where(twi => twi.TwitterId == twi_id && twi.userId == user_id);

            if (!q.Any())
            {
                return(Helper.JsonConverter.Error(400, "您没有发表改动态"));
            }

            Twitter _twi = q.Single();

            ctx.Twitters.Remove(_twi);
            ctx.SaveChanges();

            return(JsonConverter.BuildResult(null));
        }
Example #15
0
        //获取用户的关注列表,包括ers和ing
        public static object getFolowInfo(string token)
        {
            NBackendContext ctx = new NBackendContext();

            try
            {
                int  user_id = JwtManager.DecodeToken(token);
                User user    = getUserById(ctx, user_id);

                var data = new
                {
                    following = user.following.Count(),
                    follower  = user.followers.Count(),
                };

                return(JsonConverter.BuildResult(data));
            }
            catch (Exception e)
            {
                return(JsonConverter.Error(400, "获取关注信息出错"));
            }
        }
        public IHttpActionResult DeleteUser(int id)
        {
            HttpRequestMessage message  = this.Request;
            String             token    = message.Headers.Authorization.ToString().Substring(7);
            String             username = JwtManager.DecodeToken(token);
            User foundUser = db.User.Where(a => a.UserName.Equals(username)).FirstOrDefault();

            if (foundUser == null)
            {
                return(NotFound());
            }
            if (!foundUser.UserType.Equals("admin"))
            {
                return(null);;
            }
            User user = db.User.Find(id);

            if (user == null)
            {
                return(NotFound());
            }

            try
            {
                db.User.Remove(user);
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                throw;
            }
            catch (Exception)
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Cant Process your request")));
            }


            return(Ok(user));
        }
        public IHttpActionResult VerifyLogin()
        {
            HttpRequestMessage message  = this.Request;
            String             token    = message.Headers.Authorization.ToString().Substring(7);
            String             username = JwtManager.DecodeToken(token);
            User foundUser = db.User.Where(a => a.UserName.Equals(username)).FirstOrDefault();

            if (foundUser == null)
            {
                return(NotFound());
            }
            else if (foundUser != null && foundUser.UserType.Equals("admin"))
            {
                return(ResponseMessage(Request.CreateResponse(HttpStatusCode.Accepted, "admin")));
            }
            else if (foundUser != null && foundUser.UserType.Equals("presenter"))
            {
                return(ResponseMessage(Request.CreateResponse(HttpStatusCode.Accepted, "presenter")));
            }
            else // When user found but password incorrect
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Ambiguous, "Password Incorrect")));
            }
        }
        public IHttpActionResult GetUser(int id)
        {
            HttpRequestMessage message  = this.Request;
            String             token    = message.Headers.Authorization.ToString().Substring(7);
            String             username = JwtManager.DecodeToken(token);
            User foundUser = db.User.Where(a => a.UserName.Equals(username)).FirstOrDefault();

            if (foundUser == null)
            {
                return(NotFound());
            }
            if (!foundUser.UserType.Equals("admin"))
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Not authoriZed")));
            }
            User user = db.User.Find(id);

            if (user == null)
            {
                return(NotFound());
            }

            return(Ok(user));
        }
Example #19
0
        //创建考试
        public static object postExam(string token, object json)
        {
            try
            {
                int             user_id = JwtManager.DecodeToken(token);
                NBackendContext ctx     = new NBackendContext();
                //验证该用户是否是教学的老师
                User user = UserBiz.getUserById(ctx, user_id);
                if (user == null || user.role != "teacher_edu")
                {
                    return(Helper.JsonConverter.Error(400, "该用户没有权限创建试卷"));
                }

                //var body = Helper.JsonConverter.Decode(json);
                var body = JsonConvert.DeserializeObject <Dictionary <string, object> >(json.ToString());

                int    sec_id    = (int)(long)body["sec_id"];
                int    course_id = (int)(long)body["course_id"];
                string semester  = (string)body["semester"];
                int    year      = (int)(long)body["year"];

                string scope = (string)body["scope"];
                string type  = (string)body["type"];

                string start_time = (string)body["start_time"];
                string end_time   = (string)body["end_time"];
                string title      = (string)body["title"];

                //NBackendContext ctx = new NBackendContext();
                //创建考试第一步
                Exam exam = new Exam
                {
                    secId      = sec_id,
                    courseId   = course_id,
                    semester   = semester,
                    year       = year,
                    scope      = scope,
                    type       = type2Id(type),
                    start_time = start_time,
                    end_time   = end_time,
                    title      = title,
                };

                ctx.Exams.Add(exam);

                var questions = (JArray)body["questions"];


                foreach (var qu in questions)
                {
                    IDictionary <string, JToken> rates = (JObject)qu;
                    // Explicit typing just for "proof" here
                    Dictionary <string, object> __body =
                        rates.ToDictionary(pair => pair.Key,
                                           pair => (object)pair.Value);

                    int question_id = ((JValue)__body["question_id"]).Value <int>();


                    int single_score = ((JValue)__body["score"]).Value <int>();
                    int index        = ((JValue)__body["index"]).Value <int>();

                    //if (questions.Select(_qu=>_qu.).Contains(question_id))
                    //{
                    ctx.ExamQuestions.Add(new ExamQuestion
                    {
                        examId     = exam.ExamId,
                        questionId = question_id,
                        score      = single_score,
                        index      = index,
                    });
                    //}
                    //else
                    //{
                    //    //有一道题找不到?
                    //}
                }

                //创建考试第二步
                //int exam_id = exam.ExamId;
                //string _quess = body["questions"];

                //var quess = JsonConvert.DeserializeObject<List<object>>(_quess);

                //var questions = ctx.Questions.Select(qu => qu.QuestionId).ToList();
                //foreach (object obj in quess)
                //{
                //    var _body = Helper.JsonConverter.Decode(obj);
                //    int question_id = int.Parse(_body["question_id"]);
                //    int single_score = int.Parse(_body["score"]);
                //    int index = int.Parse(_body["index"]);

                //    if (questions.Contains(question_id))
                //    {
                //        ctx.ExamQuestions.Add(new ExamQuestion
                //        {
                //            examId = exam_id,
                //            questionId = question_id,
                //            score = single_score,
                //            index = index,
                //        });
                //    }
                //    else
                //    {
                //        //有一道题找不到?
                //    }
                //}


                ctx.SaveChanges();

                var data = new
                {
                    //exam_id
                };
                return(Helper.JsonConverter.BuildResult(data));
            }
            catch (Exception e)
            {
                return(Helper.JsonConverter.Error(400, "创建考试时出错"));
            }
        }
Example #20
0
 public static bool validateToken(int user_id, string token)
 {
     return(user_id == JwtManager.DecodeToken(token));
 }
Example #21
0
        public static object examSumup(string token)
        {
            try
            {
                int user_id = JwtManager.DecodeToken(token);

                NBackendContext ctx = new NBackendContext();

                User user = UserBiz.getUserById(ctx, user_id);

                //参加的考试
                var qexam_taken = ctx.TakesExams.Where(te => te.Student.StudentId == user_id).ToList();

                //参加的课程的所有考试
                var qexam_all = ctx.Takes.Where(take => take.StudentId == user_id).Join(ctx.Exams, take => new { take.Section.SecId, take.Section.courseId },
                                                                                        exam => new { exam.Section.SecId, exam.Section.courseId }
                                                                                        , (take, exam) => new { exam, take.Section }
                                                                                        ).Where(exam_sec => exam_sec.exam.Section.year == exam_sec.Section.year && exam_sec.exam.Section.semester == exam_sec.Section.semester).ToList()
                                .Select(te => te.exam).ToList();

                //没参加的考试成绩为0
                var qexam_not_taken = qexam_all.Except(qexam_taken.Select(qt => qt.Exam)).ToList();

                int           exam_num = qexam_all.Count();
                List <object> exams    = new List <object>();

                foreach (var et in qexam_taken)
                {
                    int    grade  = 1;//等级
                    Course course = et.Exam.Course;
                    int    score  = getTotalScore(ctx, et.ExamId);
                    if (score == 0)
                    {
                        return(Helper.JsonConverter.Error(404, "找不到这张试卷"));
                    }

                    grade = (int)((float)et.score * 5 / score);

                    exams.Add(new
                    {
                        exam_id = et.ExamId,
                        course.course_name,
                        et.Exam.title,
                        grade
                    });
                }

                foreach (var ent in qexam_not_taken)
                {
                    Course course = ent.Course;
                    exams.Add(new
                    {
                        exam_id = ent.ExamId,
                        course.course_name,
                        ent.title,
                        grade = 1
                    });
                }

                var data = new
                {
                    exam_num,
                    exams
                };

                return(Helper.JsonConverter.BuildResult(data));
            }
            catch (Exception e)
            {
                return(Helper.JsonConverter.Error(400, "查看总结出错,请检查请求字段"));
            }
        }
Example #22
0
        //获取某张试卷所有的题目,包括学生考试前后和老师查看
        public static object getQuestionsOfExam(string token, object json)
        {
            try
            {
                var body    = Helper.JsonConverter.Decode(json);
                int user_id = JwtManager.DecodeToken(token);

                int exam_id = int.Parse(body["exam_id"]);

                NBackendContext ctx = new NBackendContext();

                //连接考试表和试题表
                var q = ctx.Exams.Join(ctx.ExamQuestions,
                                       _exam => _exam.ExamId,
                                       eq => eq.examId,
                                       (_exam, eq) => eq
                                       ).Join(ctx.Questions,
                                              eq => eq.questionId,
                                              ques => ques.QuestionId,
                                              (eq, ques) => ques
                                              );

                //该试卷的所有题目
                var  quess = q.ToList();
                User user  = UserBiz.getUserById(ctx, user_id);

                if (!quess.Any())
                {
                    return(Helper.JsonConverter.Error(400, "不是考试没了就是题库崩了?"));
                }

                Exam exam = getExamById(ctx, exam_id);

                string title      = exam.title;
                string start_time = exam.start_time;
                string end_time   = exam.end_time;

                var q1 = ctx.ExamQuestions.Where(e => e.examId == exam.ExamId).Join(ctx.Questions,
                                                                                    ex => ex.questionId,
                                                                                    qu => qu.QuestionId,
                                                                                    (ex, qu) => qu
                                                                                    );
                var questions = q1.ToList();

                object        data  = null;
                List <object> qdata = new List <object>();

                if (user.role.Equals("teacher_edu"))
                {
                    foreach (var qu in questions)
                    {
                        int index = getQuestionIndex(ctx, exam_id, qu.QuestionId);
                        int score = getScoreById(ctx, qu.QuestionId, exam_id);
                        qdata.Add(new
                        {
                            question_id = qu.QuestionId,
                            course_id   = qu.courseId,
                            chapter     = qu.chapter,
                            content     = qu.content,
                            options     = qu.options,
                            answer      = qu.answer,
                            index,
                            score
                        });
                        data = new
                        {
                            questions = qdata,
                            title     = title,
                        };
                    }
                }
                else if (user.role.Equals("student"))
                {
                    var q2 = ctx.TakesExams.Where(te => te.StudentId == user_id &&
                                                  te.ExamId == exam_id
                                                  );
                    //if (!q2.Any())
                    //{
                    //    return Helper.JsonConverter.Error(400, "无效用户或考试");
                    //}

                    //var ex = q2.Single().Exam;
                    var ex = getExamById(ctx, exam_id);
                    if (ex == null)
                    {
                        return(Helper.JsonConverter.Error(400, "考试没了!"));
                    }

                    bool exam_ended = isExamFinished(ex);

                    //没参加过这场考试并且没超时
                    if (!q2.Any() && !exam_ended)
                    {
                        foreach (var qu in questions)
                        {
                            int index = getQuestionIndex(ctx, exam_id, qu.QuestionId);
                            int score = getScoreById(ctx, qu.QuestionId, exam_id);

                            qdata.Add(new
                            {
                                question_id = qu.QuestionId,
                                course_id   = qu.courseId,
                                chapter     = qu.chapter,
                                content     = qu.content,
                                options     = qu.options,
                                index,
                                score,
                            });
                        }
                        data = new
                        {
                            questions   = qdata,
                            title       = title,
                            start_time  = start_time,
                            end_time    = end_time,
                            exam_status = false,
                        };
                    }
                    else
                    {
                        foreach (var qu in questions)
                        {
                            int index = getQuestionIndex(ctx, exam_id, qu.QuestionId);
                            int score = getScoreById(ctx, qu.QuestionId, exam_id);

                            qdata.Add(new
                            {
                                question_id = qu.QuestionId,
                                course_id   = qu.courseId,
                                chapter     = qu.chapter,
                                content     = qu.content,
                                options     = qu.options,
                                answer      = qu.answer,
                                index,
                                score
                            });
                        }
                        data = new
                        {
                            questions   = qdata,
                            title       = title,
                            start_time  = start_time,
                            end_time    = end_time,
                            exam_status = true,
                            total_score = q2.Single().score
                        };
                    }
                }
                else
                {
                    return(Helper.JsonConverter.Error(400, "您没有权限(^U^)ノ~YO"));
                }

                return(Helper.JsonConverter.BuildResult(data));
            }
            catch (Exception e)
            {
                return(Helper.JsonConverter.Error(400, "题目信息获取出错,请检查对应字段"));
            }
        }
Example #23
0
        public IHttpActionResult CheckAnswer(JObject jdata)
        {
            dynamic            JsonData = jdata;
            HttpRequestMessage message  = this.Request;
            String             token    = message.Headers.Authorization.ToString().Substring(7);
            String             username = JwtManager.DecodeToken(token);
            User   foundUser            = db.User.Where(a => a.UserName.Equals(username)).FirstOrDefault();
            int    qId;
            int    tId;
            String answer;
            int    PassFLAG = 0;

            try
            {
                qId      = JsonData.qId.ToObject <int>();
                tId      = JsonData.tId.ToObject <int>();
                answer   = JsonData.answer.ToObject <String>();
                PassFLAG = JsonData.PassFlag.ToObject <int>();
            }
            catch (Exception)
            {
                return(BadRequest());
            }
            if (foundUser == null)
            {
                return(NotFound());
            }
            if (!foundUser.UserType.Equals("presenter"))
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Not Authorized")));
            }
            Question question = db.Questions.Find(qId);
            Team     team     = db.Teams.Find(tId);

            if (question == null || team == null)
            {
                return(BadRequest());
            }
            else if (question.Answer.Equals(answer))
            {
                team.QuestionsAttempted++;
                team.AnswersCorrect++;
                if (PassFLAG == 0)
                {
                    team.TeamScore += 10;
                    try
                    {
                        //db.Entry(team).State = EntityState.Modified;
                        db.MarkAsModified(team);
                        db.SaveChanges();
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Cant Process Your Request")));
                    }
                    return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.OK, "Correct Answer")));
                }
                else if (PassFLAG == 1)
                {
                    team.TeamScore += 5;
                    team.QuestionsPassed++;
                    try
                    {
                        //db.Entry(team).State = EntityState.Modified;
                        db.MarkAsModified(team);
                        db.SaveChanges();
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Cant Process Your Request")));
                    }
                    return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.OK, "Correct Answer")));
                }
            }
            else
            {
                team.QuestionsAttempted++;
                //db.Entry(team).State = EntityState.Modified;
                db.MarkAsModified(team);
                db.SaveChanges();
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.OK, "Wrong Answer")));
            }
            return(Ok());
        }
Example #24
0
        //删除、修改、提交题目全靠它
        private static object questionHelper(string token, object json, int option)
        {
            int user_id = JwtManager.DecodeToken(token);

            NBackendContext ctx  = new NBackendContext();
            User            user = UserBiz.getUserById(ctx, user_id);

            if (user == null || !user.role.Equals("teacher_edu"))
            {
                //可以再判断这个老师是不是教这个的
                return(Helper.JsonConverter.Error(400, "您未登录或者没有权限"));
            }

            var body = Helper.JsonConverter.Decode(json);

            try
            {
                //删除、修改、提交题目分发逻辑
                switch (option)
                {
                default:
                {
                    int    course_id = int.Parse(body["course_id"]);
                    string chapter   = body["chapter"];
                    string content   = body["content"];
                    string options   = body["options"];
                    string answer    = body["answer"];

                    if (option == POST)
                    {
                        var newq = new Question
                        {
                            courseId = course_id,
                            chapter  = chapter,
                            content  = content,
                            options  = options,
                            answer   = answer,
                        };
                        ctx.Questions.Add(newq);
                        ctx.SaveChanges();
                        object data = new
                        {
                            question_id = newq.QuestionId
                        };
                        return(Helper.JsonConverter.BuildResult(data));
                    }
                    else if (option == PUT)
                    {
                        int question_id = int.Parse(body["question_id"]);
                        var q           = ctx.Questions.Where(qu => qu.QuestionId == question_id);
                        if (!q.Any())
                        {
                            return(Helper.JsonConverter.Error(400, "没有这道题"));
                        }
                        else
                        {
                            Question question = q.Single();
                            question.answer  = answer;
                            question.chapter = chapter;
                            question.options = options;
                            question.content = content;
                            ctx.SaveChanges();
                        }
                    }
                    return(Helper.JsonConverter.BuildResult(null));
                }

                case DELETE:
                {
                    int question_id = int.Parse(body["question_id"]);
                    var q           = ctx.Questions.Where(qu => qu.QuestionId == question_id);
                    if (!q.Any())
                    {
                        return(Helper.JsonConverter.Error(400, "没有这道题"));
                    }
                    else
                    {
                        var qu = q.Single();
                        ctx.Questions.Remove(qu);
                        ctx.SaveChanges();
                    }

                    return(Helper.JsonConverter.BuildResult(null));
                    //break;
                }
                }
            }
            catch (Exception e)
            {
                return(Helper.JsonConverter.Error(400, "请检查您的提交信息"));
            }
        }
Example #25
0
        //创建广播
        public static object postBroadcast(string token, object json)
        {
            try
            {
                var             body = JsonConverter.Decode(json);
                NBackendContext ctx  = new NBackendContext();

                int  teacher_id = JwtManager.DecodeToken(token);
                User user       = UserBiz.getUserById(ctx, teacher_id);
                if (user == null)
                {
                    return(Helper.JsonConverter.Error(400, "你还没登录?"));
                }

                int type  = int.Parse(body["type"]);
                int scope = int.Parse(body["scope"]);

                string start_time     = body["start_time"];
                string end_time       = body["end_time"];
                string published_time = body["published_time"];
                string content        = body["content"];

                //k
                int    sec_id, course_id, year;
                string semester;

                if (scope == SCOPE_CLASS)
                {
                    if (!user.role.Equals("teacher_edu"))
                    {
                        return(Helper.JsonConverter.Error(400, "你没有权限呢"));
                    }
                    sec_id    = int.Parse(body["sec_id"]);
                    course_id = int.Parse(body["course_id"]);
                    year      = int.Parse(body["year"]);
                    semester  = body["semester"];
                }
                else
                {
                    if (!user.role.Equals("teacher_manage"))
                    {
                        return(Helper.JsonConverter.Error(400, "你没有权限呢"));
                    }
                    //默认班级
                    sec_id    = 100003;
                    course_id = 2;
                    year      = 0;
                    semester  = "Spring";
                }
                Broadcast broadcast = new Broadcast
                {
                    secId    = sec_id,
                    courseId = course_id,
                    year     = year,
                    semester = semester,

                    scope        = scope,
                    type         = type,
                    start_time   = start_time,
                    publish_time = published_time,
                    end_time     = end_time,
                    content      = content
                };

                ctx.TeacherBroadcasts.Add(new TeacherBroadcast
                {
                    teacherId   = teacher_id,
                    broadcastId = broadcast.BroadcastId
                });

                ctx.Broadcasts.Add(broadcast);
                ValidationHelper.safeSaveChanges(ctx);

                var data = new
                {
                    broadcast_id = broadcast.BroadcastId
                };
                return(JsonConverter.BuildResult(data));
            }
            catch (Exception e)
            {
                return(JsonConverter.Error(400, "创建广播失败"));
            }
        }