Пример #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);
        }
Пример #4
0
 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));
     }
 }
Пример #5
0
        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));
        }
Пример #8
0
        // 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"));
        }
Пример #24
0
        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;
 }
Пример #33
0
        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 });
            }
        }