Пример #1
0
        /// <summary>
        /// 处理接收到的数据
        /// </summary>
        /// <param name="data"></param>
        /// <returns>是否成功</returns>
        private bool ProcessByte(ReciveData data)
        {
            try
            {
                //将收到的数据存在缓冲区
                byte[] temp = new byte[data.Actual];
                Array.Copy(data.Buffer, 0, temp, 0, temp.Length);
                data.UserToken.DataList.AddRange(temp);

                //数据超过Tcp自定义头部长度
                if (data.UserToken.DataList.Count > NetWorkBase.TcpHeadLength && data.UserToken.DataList.Count >= data.UserToken.CurrentPackageLength)
                {
                    //创建信息容器
                    List <ReciveData> list = new List <ReciveData>();
                    //处理完成后 不管连接是否失效 那信息都是有效的
                    DecodeData(list, data.UserToken);
                    if (list.Count > 0)
                    {
                        foreach (var item in list)
                        {
                            //加入队列
                            MCQ.Enqueue(item);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                data.UserToken.Reset("处理接收到的数据:" + e.Message);
                return(false);
            }
            return(true);
        }
Пример #2
0
        public MCQ LoadItem(string Id)
        {
            var obj = new MCQ();

            #region Item

            string itemQuery = $"EXECUTE SP_DisplayQuestionMWQ '{Id}'";
            obj.Item = _db.Database.SqlQuery <Item>(itemQuery).FirstOrDefault();

            #endregion

            #region Answers

            string ansQuery = $"EXECUTE SP_DisplayAnswersMWQ '{Id}'";
            obj.Answers = _db.Database.SqlQuery <Answer>(ansQuery).ToList();


            #endregion

            #region Planner

            string plnQuery = $"EXECUTE SP_DisplayPlannerMWQ '{obj.Item.ILoId}'";
            obj.Planner = _db.Database.SqlQuery <Planner>(plnQuery).FirstOrDefault();


            #endregion



            return(obj);
        }
Пример #3
0
        public ActionResult addQuestionsMCQ(MCQ mCQ)
        {
            var mcq = db.MCQs.Add(mCQ);

            mcq.Cource_Code = Session["c_id"].ToString();
            mcq.Title_Id    = Session["title"].ToString();
            db.SaveChanges();
            ModelState.Clear();
            return(View());
        }
Пример #4
0
        public async Task <IActionResult> PutQuestion([FromRoute] string id, [FromBody] dynamic question)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var    questionAsJsonString = JsonConvert.SerializeObject(question);
            string type = question.QuestionType;

            switch (type)
            {
            case "MCQ":
                MCQ mcqType = JsonConvert.DeserializeObject <MCQ>(questionAsJsonString);
                mcqType.QuestionId = id;
                await _questionService.EditQuestion(id, mcqType);

                break;

            case "MMCQ":

                MMCQ mmcqType = JsonConvert.DeserializeObject <MMCQ>(questionAsJsonString);
                mmcqType.QuestionId = id;
                await _questionService.EditQuestion(id, mmcqType);

                break;

            //case "FillBlanks":

            //    FillBlanks fillBlanks = JsonConvert.DeserializeObject<FillBlanks>(questionAsJsonString);
            //    fillBlanks.QuestionId = id;
            //    await _questionService.EditQuestion(id, fillBlanks);
            //    break;

            default:
                //TrueFalse trueFalse = JsonConvert.DeserializeObject<TrueFalse>(questionAsJsonString);
                //trueFalse.QuestionId = id;
                //await _questionService.EditQuestion(id, trueFalse);
                break;
            }



            return(Ok(question));
        }
Пример #5
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!Page.IsPostBack)
     {
         BLL       objquestionlist = new BLL();
         DataTable dtquestion      = objquestionlist.GetQuizQuestionList(Convert.ToInt32(Request.QueryString["QuizID"].ToString()));
         Session["QuizQuestionList"]     = dtquestion;
         Session["CurrentQuestionIndex"] = "0";
         if (dtquestion != null && dtquestion.Rows.Count > 0)
         {
             DataTable dtQuestionDetails = objquestionlist.GetQuestionDetails(Convert.ToInt32(dtquestion.Rows[0][0].ToString()));
             if (dtQuestionDetails != null && dtQuestionDetails.Rows.Count > 0)
             {
                 qNo.InnerText    = "1";
                 qtitle.InnerText = dtQuestionDetails.Rows[0]["Question_Title"].ToString();
                 QDesc.InnerText  = dtQuestionDetails.Rows[0]["Question_Desc"].ToString();
                 DataTable dtoption = objquestionlist.GetOptionDetails(Convert.ToInt32(dtQuestionDetails.Rows[0]["Question_Id"].ToString()));
                 if (dtQuestionDetails.Rows[0]["Question_Type"].ToString() == "MCQ")
                 {
                     MCQ.DataSource     = dtoption;
                     MCQ.DataTextField  = "Question_Option";
                     MCQ.DataValueField = "Question_Option";
                     MCQ.DataBind();
                 }
                 else if (dtQuestionDetails.Rows[0]["Question_Type"].ToString() == "TF")
                 {
                     TF.DataSource     = dtoption;
                     TF.DataTextField  = "Question_Option";
                     TF.DataValueField = "Question_Option";
                     TF.DataBind();
                 }
                 else
                 {
                     SCQ.DataSource     = dtoption;
                     SCQ.DataTextField  = "Question_Option";
                     SCQ.DataValueField = "Question_Option";
                     SCQ.DataBind();
                 }
             }
         }
     }
 }
Пример #6
0
        public IHttpActionResult UpdateMWQ([FromBody] MCQ model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid Model"));
            }

            if (model.Answers.Count != 0)
            {
                var correct = model.Answers.Where(a => a.Status == true).ToList();
                if (!correct.Any())
                {
                    return(BadRequest("Please check at leastes on correct answer"));
                }
            }

            var result = new ItemService().EditMWQ(model);

            return(Ok(result));
        }
Пример #7
0
        public async Task <IActionResult> PostQuestion([FromBody] dynamic question)
        {
            Console.WriteLine(question);
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }


            var    questionAsJsonString = JsonConvert.SerializeObject(question);
            string type = question.QuestionType;

            Console.WriteLine("questiontype " + type);
            switch (type)
            {
            case "MCQ":
                MCQ mcqType = JsonConvert.DeserializeObject <MCQ>(questionAsJsonString);
                await _questionService.AddQuestion(mcqType);

                break;

            case "MMCQ":

                MMCQ mmcqType = JsonConvert.DeserializeObject <MMCQ>(questionAsJsonString);
                await _questionService.AddQuestion(mmcqType);

                break;

            //case "FillBlanks":

            //    FillBlanks fillBlanks = JsonConvert.DeserializeObject<FillBlanks>(questionAsJsonString);
            //    await _questionService.AddQuestion(fillBlanks);
            //    break;

            default:
                //    TrueFalse trueFalse = JsonConvert.DeserializeObject<TrueFalse>(questionAsJsonString);
                //    await _questionService.AddQuestion(trueFalse);
                break;
            }
            return(Ok(question));
        }
Пример #8
0
 /// <summary>
 /// 信息处理
 /// </summary>
 /// <param name="server"></param>
 public void InvokeMessage()
 {
     while (true)
     {
         ReciveData data = null;
         try
         {
             if (MCQ.TryDequeue(out data))
             {
                 //登陆保存会话 此处已经分配了SESSIONID
                 if (data.Command == Command.Login && ISessionAdd != null)
                 {
                     ISessionAdd.AddSession(data.UserToken);
                     data.UserToken.LoginFinish();
                     ISessionAdd.OnConnected(data.UserToken);
                 }
                 else if (data.Command == Command.Token)
                 {
                     data.UserToken.LastTokenDateTime = DateTime.Now;
                 }
                 else
                 {
                     //客户端定时发送心跳
                     data.UserToken.Token(data);
                     Process.Invoke(data);
                 }
             }
             else
             {
                 Thread.Sleep(1);
             }
         }
         catch (Exception e)
         {
             if (data != null)
             {
                 data.UserToken.Reset("InvokeMessage:" + e.Message + e.StackTrace);
             }
         }
     }
 }
Пример #9
0
        public ActionResult questsMCQ()
        {
            MCQ q = null;

            if (TempData["questions"] != null)
            {
                Queue <MCQ> qlist = (Queue <MCQ>)TempData["questions"];
                if (qlist.Count > 0)
                {
                    q = qlist.Peek();
                    qlist.Dequeue();
                    TempData["questions"] = qlist;
                    TempData.Keep();
                }
                else
                {
                    return(RedirectToAction("Score"));
                }
            }

            return(PartialView(q));
        }
Пример #10
0
        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            MCQ mCQ = new MCQ();

            mCQ.ShowDialog();
        }
Пример #11
0
        protected void PopulateQuestionDetails(int CurrentQuestionIndex)
        {
            BLL       objquestionlist = new BLL();
            DataTable dtquestion      = (DataTable)Session["QuizQuestionList"];
            DataTable dtAnswer;

            Session["CurrentQuestionIndex"] = CurrentQuestionIndex;
            if (dtquestion != null && dtquestion.Rows.Count > 0)
            {
                DataTable dtQuestionDetails = objquestionlist.GetQuestionDetails(Convert.ToInt32(dtquestion.Rows[CurrentQuestionIndex][0].ToString()));
                if (dtQuestionDetails != null && dtQuestionDetails.Rows.Count > 0)
                {
                    qNo.InnerText    = Convert.ToString(CurrentQuestionIndex + 1);
                    qtitle.InnerText = dtQuestionDetails.Rows[0]["Question_Title"].ToString();
                    QDesc.InnerText  = dtQuestionDetails.Rows[0]["Question_Desc"].ToString();
                    DataTable dtoption = objquestionlist.GetOptionDetails(Convert.ToInt32(dtQuestionDetails.Rows[0]["Question_Id"].ToString()));
                    if (Session["dtAnswer"] != null)
                    {
                        dtAnswer = (DataTable)Session["dtAnswer"];
                        DataTable AnsExsit = dtAnswer.AsEnumerable().Where(o => o.Field <string>("QID") == dtQuestionDetails.Rows[0]["Question_Id"].ToString()).AsDataView().ToTable();
                        if (AnsExsit != null && AnsExsit.Rows.Count > 0)
                        {
                            if (dtQuestionDetails.Rows[0]["Question_Type"].ToString() == "MCQ")
                            {
                                string[] MCQAns = AnsExsit.Rows[0]["AnsOption"].ToString().Split(',');
                                MCQ.Visible        = true;
                                MCQ.DataSource     = dtoption;
                                MCQ.DataTextField  = "Question_Option";
                                MCQ.DataValueField = "Question_Option";
                                MCQ.DataBind();
                                for (int i = 0; i < MCQ.Items.Count; i++)
                                {
                                    foreach (string ans in MCQAns)
                                    {
                                        if (ans != "")
                                        {
                                            if (i == Convert.ToInt32(ans) - 1)
                                            {
                                                MCQ.Items[i].Selected = true;
                                                // MCQAns = MCQAns + "," + Convert.ToString(i + 1);
                                            }
                                        }
                                    }
                                }
                                TF.Visible  = false;
                                SCQ.Visible = false;
                            }
                            else if (dtQuestionDetails.Rows[0]["Question_Type"].ToString() == "TF")
                            {
                                TF.Visible        = true;
                                TF.DataSource     = dtoption;
                                TF.DataTextField  = "Question_Option";
                                TF.DataValueField = "Question_Option";
                                TF.DataBind();
                                //  TF.SelectedItem.Text = AnsExsit.Rows[0]["AnsOption"].ToString();
                                TF.Items.FindByText(AnsExsit.Rows[0]["AnsOption"].ToString().Trim()).Selected = true;
                                MCQ.Visible = false;
                                SCQ.Visible = false;
                            }
                            else
                            {
                                SCQ.Visible        = true;
                                SCQ.DataSource     = dtoption;
                                SCQ.DataTextField  = "Question_Option";
                                SCQ.DataValueField = "Question_Option";
                                SCQ.DataBind();
                                SCQ.SelectedIndex = Convert.ToInt32(AnsExsit.Rows[0]["AnsOption"].ToString()) - 1;
                                MCQ.Visible       = false;
                                TF.Visible        = false;
                            }
                        }
                        else
                        {
                            if (dtQuestionDetails.Rows[0]["Question_Type"].ToString() == "MCQ")
                            {
                                MCQ.Visible        = true;
                                MCQ.DataSource     = dtoption;
                                MCQ.DataTextField  = "Question_Option";
                                MCQ.DataValueField = "Question_Option";
                                MCQ.DataBind();
                                TF.Visible  = false;
                                SCQ.Visible = false;
                            }
                            else if (dtQuestionDetails.Rows[0]["Question_Type"].ToString() == "TF")
                            {
                                TF.Visible        = true;
                                TF.DataSource     = dtoption;
                                TF.DataTextField  = "Question_Option";
                                TF.DataValueField = "Question_Option";
                                TF.DataBind();
                                MCQ.Visible = false;
                                SCQ.Visible = false;
                            }
                            else
                            {
                                SCQ.Visible        = true;
                                SCQ.DataSource     = dtoption;
                                SCQ.DataTextField  = "Question_Option";
                                SCQ.DataValueField = "Question_Option";
                                SCQ.DataBind();
                                MCQ.Visible = false;
                                TF.Visible  = false;
                            }
                        }
                    }
                    else
                    {
                        if (dtQuestionDetails.Rows[0]["Question_Type"].ToString() == "MCQ")
                        {
                            MCQ.Visible        = true;
                            MCQ.DataSource     = dtoption;
                            MCQ.DataTextField  = "Question_Option";
                            MCQ.DataValueField = "Question_Option";
                            MCQ.DataBind();
                            TF.Visible  = false;
                            SCQ.Visible = false;
                        }
                        else if (dtQuestionDetails.Rows[0]["Question_Type"].ToString() == "TF")
                        {
                            TF.Visible        = true;
                            TF.DataSource     = dtoption;
                            TF.DataTextField  = "Question_Option";
                            TF.DataValueField = "Question_Option";
                            TF.DataBind();
                            MCQ.Visible = false;
                            SCQ.Visible = false;
                        }
                        else
                        {
                            SCQ.Visible        = true;
                            SCQ.DataSource     = dtoption;
                            SCQ.DataTextField  = "Question_Option";
                            SCQ.DataValueField = "Question_Option";
                            SCQ.DataBind();
                            MCQ.Visible = false;
                            TF.Visible  = false;
                        }
                    }
                }
            }
        }
Пример #12
0
        public ReturnMessage EditMWQ(MCQ model)
        {
            bool       flag = IsPublishedExam(model.Item.Id);
            List <Ids> Ids  = new List <Ids>();


            #region Item

            string itemQuery = "";

            if (model.Item.ILoId == null)
            {
                itemQuery = $"EXECUTE SP_EditMWQUnAssociate '{model.Item.Id}', N'{model.Item.Stem}', {model.Item.Duration}, '{model.Item.Level}'";
                _db.Database.SqlQuery <string>(itemQuery).FirstOrDefault();
            }
            else
            {
                itemQuery = $"EXECUTE SP_EditMWQAssociate '{model.Item.Id}', N'{model.Item.Stem}', {model.Item.Duration}, '{model.Item.ILoId}', '{model.Item.Level}'";
                _db.Database.SqlQuery <string>(itemQuery).FirstOrDefault();
            }

            if (!flag)
            {
                // Update ItemArchieve

                string query = $"EXECUTE SP_UndateItemArchieve '{model.Item.Id}', '{model.Item.Stem}', {model.Item.Duration}, '{model.Item.Level}'";
                Ids = _db.Database.SqlQuery <Ids>(query).ToList();
            }

            #endregion

            #region Answers

            string deleteansQuery = $"EXECUTE SP_DeleteAnssersBasedOnQuestion '{model.Item.Id}'";
            _db.Database.SqlQuery <string>(deleteansQuery).FirstOrDefault();


            ReturnMessage ans = new ReturnMessage();

            foreach (var val in model.Answers)
            {
                string aquery = $"EXECUTE SP_CreateAnswerAlternative '{model.Item.Id}','{val.Text}','{val.Status}'";
                ans = _db.Database.SqlQuery <ReturnMessage>(aquery).FirstOrDefault();
            }



            if (!flag)
            {
                foreach (var Id in Ids)
                {
                    string deleteansArchQuery = $"EXECUTE SP_DeleteAnswersArchBasedOnQuestion '{Id.QId}'";
                    _db.Database.SqlQuery <string>(deleteansArchQuery).FirstOrDefault();

                    foreach (var answer in model.Answers)
                    {
                        string archquery = $"EXECUTE SP_CreateArchieveAlternatives '{Id.QId}','{answer.Text}','{answer.Status}','{Id.ExamId}'";
                        _db.Database.SqlQuery <string>(archquery).FirstOrDefault();
                    }
                }
            }

            #endregion

            return(ans);
        }
Пример #13
0
 public void AddMCQ(MultipleChoice mcq)
 {
     MCQ.Add(mcq);
     TotalQuestions++;
 }