示例#1
0
        public async Task <IActionResult> Create(int?id)
        {
            if (id is null)
            {
                return(NotFound());
            }

            var testQuestion = await _testingPlatform.TestQuestionManager
                               .FindAsync(tq => tq.AppUserId == _userId && tq.Id == id);

            if (testQuestion is null)
            {
                return(NotFound());
            }

            if (!(testQuestion.Test.TestCode is null))
            {
                return(NotFound());
            }

            var testAnswer = new TestAnswer {
                TestQuestion = testQuestion, TestQuestionId = testQuestion.Id
            };

            return(View(testAnswer));
        }
示例#2
0
        public ActionResult Create(TestAnswer testAnswer)
        {
            if (ModelState.IsValid)
            {
                db.TestAnswers.Add(testAnswer);

                try
                {
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
                catch (Exception ex)
                {
                    if (ex.InnerException != null &&
                        ex.InnerException.InnerException != null &&
                        ex.InnerException.InnerException.Message.Contains("_Index"))
                    {
                        ModelState.AddModelError(string.Empty, "this record already exists");
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, ex.Message);
                    }
                }
            }

            return(View(testAnswer));
        }
        public void CreateAnswerForQuestion(string questionGuid, TestAnswer answer)
        {
            var question = _questionRepository.Get(q => q.Guid == questionGuid);

            question.TestAnswers.Add(answer);
            _questionRepository.Update(question);
        }
 public ActionResult AddQuestion(CreateQuestionViewModel model, FormCollection form)
 {
     //return Content(Convert.ToInt32(form["selectC"]).ToString());
     if (ModelState.IsValid)
     {
         try
         {
             TestQuestion q = new TestQuestion()
             {
                 QuestionContent = model.questionArea,
                 TestTypeID      = model.TestTypeID,
                 modifyUser      = User.Identity.Name,
                 modifyDateTime  = DateTime.Now
             };
             TestAnswer a1 = new TestAnswer()
             {
                 AnswerContent  = model.answerA,
                 TestQuestion   = q,
                 AnswerProperty = (model.answerRight == 1)? true :false
             };
             TestAnswer a2 = new TestAnswer()
             {
                 AnswerContent  = model.answerB,
                 TestQuestion   = q,
                 AnswerProperty = (model.answerRight == 2) ? true : false
             };
             TestAnswer a3 = new TestAnswer()
             {
                 AnswerContent  = model.answerC,
                 TestQuestion   = q,
                 AnswerProperty = (model.answerRight == 3) ? true : false
             };
             TestAnswer a4 = new TestAnswer()
             {
                 AnswerContent  = model.answerD,
                 TestQuestion   = q,
                 AnswerProperty = (model.answerRight == 4) ? true : false
             };
             offlineDB.TestQuestion.Add(q);
             offlineDB.TestAnswer.Add(a1);
             offlineDB.TestAnswer.Add(a2);
             offlineDB.TestAnswer.Add(a3);
             offlineDB.TestAnswer.Add(a4);
             offlineDB.SaveChanges();
             return(RedirectToAction("Index"));
         }
         catch
         {
             ModelState.AddModelError("", "出现错误");
             ViewBag.Store_System = new SelectList(offlineDB.TestType, "Id", "CustomName");
             return(View(model));
         }
     }
     else
     {
         ModelState.AddModelError("", "出现错误");
         ViewBag.Store_System = new SelectList(offlineDB.TestType, "Id", "CustomName");
         return(View(model));
     }
 }
        public JsonResult SubmitAndNext(int examId, int answerId)
        {
            var exam = offlineDB.Examination.SingleOrDefault(m => m.ID == examId);

            if (exam != null)
            {
                int currentSequence = exam.CurrentSequence ?? 0;
                if (currentSequence < exam.MaxSequence)
                {
                    ExaminationDetails details = (from m in offlineDB.ExaminationDetails
                                                  where m.ExaminationID == exam.ID && m.Sequence == currentSequence
                                                  select m).FirstOrDefault();
                    TestAnswer answer = offlineDB.TestAnswer.SingleOrDefault(m => m.ID == answerId);
                    if (answer.AnswerProperty)
                    {
                        details.Result = true;
                    }
                    else
                    {
                        details.Result = false;
                    }
                    exam.CurrentSequence = currentSequence + 1;
                    offlineDB.SaveChanges();
                    return(Json(new { result = "SUCCESS", questionresult = details.Result }, JsonRequestBehavior.AllowGet));
                }
            }
            return(Json(new { result = "FAIL" }, JsonRequestBehavior.AllowGet));
        }
示例#6
0
        public ActionResult DeleteConfirmed(int id)
        {
            TestAnswer testAnswer = db.TestAnswers.Find(id);

            db.TestAnswers.Remove(testAnswer);
            try
            {
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null &&
                    ex.InnerException.InnerException != null &&
                    ex.InnerException.InnerException.Message.Contains("REFERENCE"))
                {
                    ModelState.AddModelError(string.Empty, "Not allowed, there are records in the temporary tables of users with this value, please wait until there are no records there using this value and try again or contact the administrator");
                }
                else
                {
                    ModelState.AddModelError(string.Empty, ex.Message);
                }
            }

            return(View(testAnswer));
        }
示例#7
0
        public async Task <TestAnswerDetailsResponse> Handle(TestAnswerCreateCommand request, CancellationToken cancellationToken)
        {
            var currentUserId = identityService.GetCurrentUserId();
            var test          = await context.Tests.Include(x => x.Tasks)
                                .Include(x => x.StudentTests)
                                .ThenInclude(x => x.TestAnswer)
                                .Include(x => x.StudentTests)
                                .ThenInclude(x => x.Student)
                                .SingleAsync(x => x.Id == request.TestId, cancellationToken);

            var studentTest = test.StudentTests.Single(x => x.Student.UserId == currentUserId);

            if (studentTest.TestAnswer != null)
            {
                throw new InvalidOperationException("Ehhez a tanulóhoz már létezik dolgozat megoldás.");
            }

            var testAnswer = new TestAnswer
            {
                Id          = Guid.NewGuid(),
                Started     = DateTime.Now,
                StudentTest = studentTest,
                TaskAnswers = new List <TaskAnswer>()
            };

            context.TestAnswers.Add(testAnswer);
            studentTest.TestAnswer = testAnswer;
            await context.SaveChangesAsync(cancellationToken);

            return(mapper.Map <TestAnswerDetailsResponse>(testAnswer));
        }
        // POST api/<controller>
        public TestAnswer Post(TestAnswer value)
        {
            testRep.TestAnswer.Attach(value);
            testRep.TestAnswer.Add(value);

            testRep.SaveChanges();
            return(value);
        }
示例#9
0
        object GetAnswerText(TestAnswer answer)
        {
            var file = TestControls.AnswerFileView(answer.Id, false);
            var desc = TestReadOnlyView.TestText(answer.Description);

            if (file == null)
            {
                return(desc);
            }
            return(H.l(desc, br, TestControls.AnswerFileView(answer.Id, false)));
        }
示例#10
0
        // DELETE api/<controller>/5
        public void Delete(int id)
        {
            TestAnswer ans = testRep.TestAnswer.Find(id);

            if (ans == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            testRep.TestAnswer.Remove(ans);
            testRep.SaveChanges();
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            TestAnswer testAnswer = await db.TestAnswers.FindAsync(id);

            db.TestAnswers.Remove(testAnswer);
            await db.SaveChangesAsync();

            var ques = db.TestQuestions.Find(testAnswer.TestQuestionId);

            return(RedirectToAction("Update", routeValues: new { controller = "TestThemas", id = ques.TestThemaId }));
        }
示例#12
0
        public void Entry(int num, InputType type)
        {
            CanInput      = false;
            IsResultTaken = true;
            var answer = TestAnswer.Answer(ActiveFragment, InctiveFragment, num, Now(), type);

            ActiveIdentifier.Answers.Add(answer);
            if (ActiveIdentifier.Correction)
            {
                LastAnswerStatus = answer.Status;
            }
        }
示例#13
0
        // GET: TestAnswers/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            TestAnswer testAnswer = db.TestAnswers.Find(id);

            if (testAnswer == null)
            {
                return(HttpNotFound());
            }
            return(View(testAnswer));
        }
示例#14
0
        public static int GetValue(string value, AtestContext db)
        {
            var testAnswer = db.TestAnswers.Where(s => s.Value == value).FirstOrDefault();

            if (testAnswer == null)
            {
                testAnswer = new TestAnswer {
                    Value = value,
                };
                db.TestAnswers.Add(testAnswer);
                db.SaveChanges();
            }
            return(testAnswer.TestAnswerID);
        }
        public async Task <ActionResult> Edit([Bind(Include = "Id,Answer,Description,ShareWeight,IsCurrect,TestQuestionId")] TestAnswer testAnswer)
        {
            if (ModelState.IsValid)
            {
                db.Entry(testAnswer).State = EntityState.Modified;
                await db.SaveChangesAsync();

                var ques = db.TestQuestions.Find(testAnswer.TestQuestionId);
                return(RedirectToAction("Update", routeValues: new { controller = "TestThemas", id = ques.TestThemaId }));
            }
            var ques1 = db.TestQuestions.Find(testAnswer.TestQuestionId);

            ViewBag.TestThemaId = ques1.TestThemaId;
            return(View(testAnswer));
        }
        public void AddTestAnswer(int testId, string userId, DateTime testStartDate)
        {
            var currentTime      = DateTime.Now;
            var answerTimeOffset = currentTime.Subtract(testStartDate);
            var maxAnswerTime    = new TimeSpan(0, 23, 59, 59, 999);

            var testAnswer = new TestAnswer()
            {
                TestId              = testId,
                UserId              = userId,
                AnsweringTime       = currentTime,
                AnsweringTimeOffset = answerTimeOffset > maxAnswerTime ? maxAnswerTime : answerTimeOffset
            };

            _baseTestRepository.AddAnswer(testAnswer);
        }
示例#17
0
        public void ShouldSaveTestAnswer()
        {
            IConnectedRepository repo = new ConnectedRepository();
            var testAnswer            = new TestAnswer()
            {
                AnswerStatus    = "SUCCESS",
                FinalAnswer     = "spelling",
                NumberOfTries   = 1,
                SpellTestId     = 1,
                TestOccuranceId = 5
            };
            var testAnswers = new List <TestAnswer> {
                testAnswer
            };

            repo.SaveTestAnswers(testAnswers);
        }
        // GET: TestAnswers/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            TestAnswer testAnswer = await db.TestAnswers.FindAsync(id);

            if (testAnswer == null)
            {
                return(HttpNotFound());
            }
            var ques = db.TestQuestions.Find(testAnswer.TestQuestionId);

            ViewBag.TestThemaId = ques.TestThemaId;
            return(View(testAnswer));
        }
示例#19
0
        // PUT api/<controller>/5
        public void Put(int id, TestAnswer value)
        {
            var answer = testRep
                         .TestAnswer
                         .Where(x =>
                                x.Id == id)

                         .FirstOrDefault();

            if (answer == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            answer.IsHide  = value.IsHide;
            answer.IsRight = value.IsRight;
            answer.Text    = answer.Text;
            testRep.SaveChanges();
        }
示例#20
0
        public async Task <OperationDetails> CheckAnswer(Guid testResultId, Guid questionId, IEnumerable <Guid> answerIds)
        {
            try
            {
                TestAnswer testAnswer = new TestAnswer
                {
                    TestResultId = testResultId,
                    QuestionId   = questionId,
                };

                bool isAllCorrect = true;
                int  correct      = 0;
                foreach (var id in answerIds)
                {
                    Answer answer = await _uow.AnswerRepository.GetById(id);

                    testAnswer.Answers.Add(answer);
                    if (!answer.IsCorrect)
                    {
                        isAllCorrect = false;
                    }
                    else
                    {
                        correct++;
                    }
                }

                int correctSupposedCount = await _uow.AnswerRepository.CorrectAnswersForQuestionCount(questionId);

                if (isAllCorrect && correct == correctSupposedCount)
                {
                    testAnswer.IsCorrect = true;
                }

                _uow.TestAnswerRepository.Create(testAnswer);
                await _uow.SaveAsync();
            }
            catch (Exception ex)
            {
                return(new OperationDetails(false, ex.Message));
            }

            return(new OperationDetails(true, "Answer checked"));
        }
示例#21
0
        public async Task <IActionResult> Edit(int id, [Bind("Id, AnswerText,IsCorrect,TestQuestionId, ImageName, IsCode")] TestAnswer testAnswer)
        {
            if (id != testAnswer.Id)
            {
                return(NotFound());
            }
            var files = HttpContext.Request.Form.Files;

            if (files.Count != 0)
            {
                files.First().IsImage(_photoConfig, ModelState);
            }
            if (ModelState.IsValid)
            {
                if (files.Count != 0)
                {
                    if (testAnswer.ImageName is null || _testingPlatform.AnswerImageManager.DeleteAnswerImage(testAnswer.ImageName))
                    {
                        var imageName = $"{Guid.NewGuid().ToString().Replace("-", "")}{Path.GetExtension(files.First().FileName)}";
                        if (await _testingPlatform.AnswerImageManager.SaveAnswerImageAsync(files.First(), imageName))
                        {
                            testAnswer.ImageName = imageName;
                        }
                    }
                }
                else
                {
                    testAnswer.ImageName = (await _testingPlatform.TestAnswerManager
                                            .GetAll()
                                            .AsNoTracking()
                                            .FirstOrDefaultAsync(ta => ta.Id == id))
                                           .ImageName;
                }
                testAnswer.AppUserId = _userId;
                await _testingPlatform.TestAnswerManager.UpdateAsync(testAnswer);

                return(RedirectToAction(nameof(Index), new { id = testAnswer.TestQuestionId }));
            }

            testAnswer = await _testingPlatform.TestAnswerManager.FindAsync(ta => ta.AppUserId == _userId && ta.Id == id);

            return(View(testAnswer));
        }
示例#22
0
        public ActionResult EditAnswer(TestAnswer model)
        {
            EditQuestionPermission(model.QuestionId);
            if (!LinqToSqlValidator.Validate(ModelState, model))
            {
                return(ErrorJson());
            }
            TestAnswerService.EnableTracking();
            if (model.Id == 0)
            {
                TestAnswerService.InsertAndSubmit(model);
                return(UrlJson(Url.TestEdit().Urls.EditAnswer(model.QuestionId, model.Id)));
            }
            var oldModel = TestAnswerService.GetByPK(model.Id);

            oldModel.Update(model, x => x.Description, x => x.IsRight, x => x.ComparableId, x => x.Sort);
            TestAnswerService.SubmitChanges();
            return(OkJson());
        }
示例#23
0
        public ActionResult TakeTest(List <double> Answers)
        {
            var userId      = User.FindFirstValue(ClaimTypes.NameIdentifier);
            var testAnswers = new List <TestAnswer>();
            var Questions   = _context.RoadieTestQuestions.Where(x => true).ToList();
            int i           = 0;

            foreach (var answer in Answers)
            {
                var ans = new TestAnswer();
                ans.Answer     = answer;
                ans.UserId     = userId;
                ans.QuestionId = Questions[i++].QuestionId;
                _context.TestAnswers.Add(ans);
            }

            _context.SaveChanges();
            //return View();
            return(RedirectToAction("SimilarUsers", "UserAccount"));
        }
        public JsonResult SubmitCheckout(int detailsId, int answerId)
        {
            var details = offlineDB.ExaminationDetails.SingleOrDefault(m => m.ID == detailsId);

            if (details != null)
            {
                TestAnswer answer = offlineDB.TestAnswer.SingleOrDefault(m => m.ID == answerId);
                if (answer.AnswerProperty)
                {
                    details.Result = true;
                }
                else
                {
                    details.Result = false;
                }
                offlineDB.SaveChanges();
                return(Json(new { result = "SUCCESS", questionresult = details.Result }, JsonRequestBehavior.AllowGet));
            }
            return(Json(new { result = "FAIL" }));
        }
示例#25
0
        public ActionResult SaveAnswerAndRedirect(int testNumber)
        {
            var test       = _context.Set <Test>().First(el => el.Number == testNumber);
            var testAnswer = new TestAnswer()
            {
                TestId              = test.Id,
                UserId              = User.Identity.GetUserId(),
                AnsweringTime       = DateTime.Now,
                AnsweringTimeOffset = DateTime.Now.Subtract(test.StartDate.Value)
            };

            _context.Set <TestAnswer>().Add(testAnswer);
            _context.SaveChanges();

            var vm = new AnswerVm()
            {
                TestAnswer = testAnswer, TestNumber = testNumber
            };

            return(View("Answered", vm));
        }
        public async Task <ActionResult> CreateFinish(int clientTestHistoryId, string comment)
        {
            ClientTestHistory clientTestHistory = db.ClientTestHistories.Find(clientTestHistoryId);

            clientTestHistory.Comment         = comment;
            db.Entry(clientTestHistory).State = EntityState.Modified;
            await db.SaveChangesAsync();

            // Баллын есептеу

            double totalPoint = clientTestHistory.TotalPoint;
            double point      = 0;
            List <TestQuestion> testQuestions = await db.TestQuestions.Include(u => u.TestAnswers).Where(u => u.TestThemaId == clientTestHistory.TestThemaId).ToListAsync();

            double totalWeight = testQuestions.Select(u => u.ShareWeight).Sum();
            List <ClientTestQuestion> clientTestQuestions = await db.ClientTestQuestions.Include(u => u.ClientSelectedAnswers).Where(u => u.ClientTestHistoryId == clientTestHistoryId).ToListAsync();

            foreach (var clQues in clientTestQuestions)
            {
                TestQuestion testQuestion         = testQuestions.Where(u => u.Id == clQues.TestQuestionId).First();
                double       quesTotalPoint       = testQuestion.ShareWeight / totalWeight * totalPoint;
                double       curAnsTotalWeight    = testQuestion.TestAnswers.Where(u => u.IsCurrect).Select(u => u.ShareWeight).Sum();
                double       curSelectTotalWeight = 0;
                foreach (var selectAns in clQues.ClientSelectedAnswers)
                {
                    TestAnswer testAnswer = testQuestion.TestAnswers.Where(u => u.Id == selectAns.TestAnswerId).First();
                    if (testAnswer.IsCurrect)
                    {
                        curSelectTotalWeight += testAnswer.ShareWeight;
                    }
                }

                point += curSelectTotalWeight / curAnsTotalWeight * quesTotalPoint;
            }
            clientTestHistory.Point           = point;
            db.Entry(clientTestHistory).State = EntityState.Modified;
            await db.SaveChangesAsync();

            return(RedirectToAction("Details", routeValues: new { id = clientTestHistoryId }));
        }
示例#27
0
        public ActionResult EditAnswer(int questionId, int?id)
        {
            var model = new TestAnswer();

            EditQuestionPermission(questionId);
            if (id.HasValue)
            {
                TestAnswerService.LoadWith(x => x.TestQuestion);
                model = TestAnswerService.GetByPK(id.Value);
                if (model.ComparableId.HasValue)
                {
                    model.ComparableAnswer = TestAnswerService.GetByPK(model.ComparableId.Value);
                }
            }
            else
            {
                model.QuestionId   = questionId;
                model.TestQuestion = TestQuestionService.GetByPK(questionId);
            }
            return(BaseView(
                       new PagePart(new AnswerEditView().Init(model, Url))));
        }
示例#28
0
    protected void AddAnswerClick(object sender, EventArgs e)
    {
        TreeIter iter;

        QuestionEditArea.Selection.GetSelected(out iter);
        var question = testQuestions.GetValue(iter, 0) as TestQuestion;

        if (question == null)
        {
            return;
        }
        var dlgAddAnswer = new OneStringAskDlg("Новый ответ", true, "Верный ответ");

        dlgAddAnswer.Modal = true;
        if (dlgAddAnswer.Run() == (int)ResponseType.Ok)
        {
            var newAnswer = new TestAnswer(dlgAddAnswer.Value, dlgAddAnswer.IsChecked);
            question.Answers.Add(newAnswer);
            testAnswers.AppendValues(newAnswer);
        }
        dlgAddAnswer.Destroy();
    }
示例#29
0
        public async Task <IActionResult> Create([Bind("AnswerText,IsCorrect,TestQuestionId, IsCode")] TestAnswer testAnswer)
        {
            var files = HttpContext.Request.Form.Files;

            if (files.Count != 0)
            {
                files.First().IsImage(_photoConfig, ModelState);
            }
            if (ModelState.IsValid)
            {
                if (files.Count != 0)
                {
                    var imageName = $"{Guid.NewGuid().ToString().Replace("-", "")}{Path.GetExtension(files.First().FileName)}";
                    if (await _testingPlatform.AnswerImageManager.SaveAnswerImageAsync(files.First(), imageName))
                    {
                        testAnswer.ImageName = imageName;
                    }
                }


                testAnswer.AppUserId = _userId;
                await _testingPlatform.TestAnswerManager.AddAsync(testAnswer);

                return(RedirectToAction(nameof(Index), new { id = testAnswer.TestQuestionId }));
            }
            else
            {
                var testQuestion = await _testingPlatform.TestQuestionManager
                                   .FindAsync(tq => tq.AppUserId == _userId && tq.Id == testAnswer.TestQuestionId);

                if (testQuestion is null)
                {
                    return(NotFound());
                }
                testAnswer.TestQuestion = testQuestion;
            }
            return(View(testAnswer));
        }
        public ActionResult Create(Test input)
        {
            int timeSpent = int.Parse(HttpContext.Request.Form["timeSpent"]);


            var test = new Test {
                Email = HttpContext.Request.Form["email"].ToString(), TimeinSeconds = timeSpent
            };
            var totalQuestions = int.Parse(HttpContext.Request.Form["totalQuestions"]);

            _context.Test.Add(test);
            _context.SaveChanges();



            /*
             * on the form itself I created a hidden field where I can see the total questions
             * I'm looping through each one and get the original question from it as well
             * I chose not to link the tests with questions or with the question options, otherwise it might make issues when deleting questions with options.
             */

            for (int i = 1; i <= totalQuestions; i++)
            {
                int questionId = int.Parse(HttpContext.Request.Form["questionId" + i]);

                var question = _context.Question.SingleOrDefault(q => q.Id == questionId);

                var answer = new TestAnswer {
                    QuestionText = question.QuestionString, AnswerText = HttpContext.Request.Form["questionInput" + i].ToString(), Test = test
                };

                _context.TestAnswer.Add(answer);
                _context.SaveChanges();
            }

            // Redirecting away from the route, otherwise it will continue submitting info when refreshing the page
            return(RedirectToAction("Done"));
        }
示例#31
0
 public void AddToTestAnswers(TestAnswer testAnswer)
 {
     base.AddObject("TestAnswers", testAnswer);
 }
示例#32
0
 public static TestAnswer CreateTestAnswer(int id)
 {
     TestAnswer testAnswer = new TestAnswer();
     testAnswer.ID = id;
     return testAnswer;
 }
        public void Update_WhenMatchingAnswerIsFound_UpdatesAnswer()
        {
            var request = new TestRequest { RootText = "ABC", RootNumber = 222 };
            var dataContext = new SourceData(request);

            var childMapping1 = new SimpleFieldMapping(
                ReflectionHelper.GetProperty<TestAnswer>(x => x.Text),
                dc => dc.GetPropertyValue("RootText"),
                true,
                new SafeTypeConverter());
            var childMapping2 = new SimpleFieldMapping(
                ReflectionHelper.GetProperty<TestAnswer>(x => x.Number),
                dc => dc.GetPropertyValue("RootNumber"),
                false,
                new SafeTypeConverter());

            var dtm = Mock.Create<IDynamicTypeManager>(Behavior.Loose);
            Mock.Arrange(() => dtm.NewEditableChild<IEditableRoot>(AnswerProcessName)).Returns(() => new TestAnswer());

            var mapping = new ChecklistFieldMapping(ReflectionHelper.GetProperty<TestEdit>(x => x.Checklist), null, new[] { childMapping1, childMapping2 }, dtm);

            var editItem = new TestEdit();
            var answer = new TestAnswer { Text = "abc", Number = 111 };
            editItem.Checklist.AnswerProcessList.Add(answer);

            // Act.
            mapping.Update(dataContext, editItem);

            // Assert.
            Assert.AreEqual(1, editItem.Checklist.AnswerProcessList.Count);
            Assert.IsTrue(editItem.Checklist.AnswerProcessList.Contains(answer));
            Assert.AreEqual("ABC", answer.Text);
            Assert.AreEqual(222, answer.Number);
        }
示例#34
0
        public async Task<RedirectToRouteResult> LoadFromFile(HttpPostedFileBase file)
        {
            var test = new SiteTestModel();
            var questions = new List<string>();
            var subjects = new List<string>();

            using (var excel = new ExcelPackage(file.InputStream))
            {
                var ws = excel.Workbook.Worksheets.First();

                var range = ws.Cells["A1"];
                test.Title = range.Value.ToString().Trim();

                range = ws.Cells["B1"];
                test.Desc = range.Value?.ToString().Trim();

                //questions
                range = ws.Cells["C1"];
                var startRow = range.Start.Row;
                var startColumn = range.Start.Column;
                var count = 0;
                while (range.Value != null)
                {
                    count++;
                    questions.Add(range.Value.ToString().Trim());
                    range = ws.Cells[startRow, startColumn + count];
                }
                test.Questions = questions.ToArray();
                count = 0;

                range = ws.Cells["A2"];
                startRow = range.Start.Row;
                startColumn = range.Start.Column;
                while (range.Value != null)
                {
                    count++;
                    subjects.Add(range.Value.ToString().Trim());
                    range = ws.Cells[startRow + count, startColumn];
                }
                test.Subjects = subjects.ToArray();

                range = ws.Cells["A2"];
                TestAnswer answer;
                string subjectTitle;
                string subjectDesc;
                for (int i = 0; i < test.Subjects.Length; i++)
                {
                    subjectTitle = range.Value.ToString().Trim();

                    startColumn++;
                    range = ws.Cells[startRow, startColumn];
                    subjectDesc = range.Value?.ToString().Trim();

                    for (int y = 0; y < test.Questions.Length; y++)
                    {
                        startColumn++;
                        range = ws.Cells[startRow, startColumn];
                        answer = new TestAnswer
                        {
                            SubjectTitle = subjectTitle,
                            SubjectDesc = subjectDesc,
                            Question = test.Questions[y],
                            IsCorrect = range.Value != null && range.Value.ToString() == "1" ? true : false
                        };
                        test.Answers.Add(answer);
                    }
                    startRow++;
                    startColumn = 1;
                    range = ws.Cells[startRow, startColumn];
                }

                var id = await writeSiteTestToDb(test);
                return RedirectToAction("edit", new { id = id });
            }
        }